cc9542 2022-04-13 08:59 采纳率: 96.7%
浏览 163
已结题

python 如何重复判断输入的日期是否符合条件

怎么连续判断日期输入是否正确?
是否是有效日期
输入的是字符串
正确格式是
日/月/年

输入 2021/02/12
结果 输入不正确(请按 日/月/年 输入)

输入 35/13/2021
结果 35/13/2021 不是有效的日期

输入 28/02/2022
结果 输入正确!

  • 写回答

3条回答 默认 最新

  • 溪风沐雪 2022-04-13 09:36
    关注

    while循环,内部大型if...else判断,简单的办法是用正则匹配,然后对个例进行分析,我这里给个逻辑比较易懂的例子,你看看:

    while True:
        date = input("请输入一个日期,格式 月/日/年:")
        if len(date)==10: #标准格式长度为10
            date_arr = date.split("/") #用/分割字符串
            if len(date_arr)==3 and len(date_arr[0])==2 and len(date_arr[1])==2 and len(date_arr[2])==4: #分割为3段,每段的长度分别是2、2、4
                if date_arr[0].isdigit() and date_arr[1].isdigit() and date_arr[2].isdigit(): #年月日都需要是数字类型字符串
                    m = int(date_arr[0]) #月转为数字
                    d = int(date_arr[1]) #日转为数字
                    y = int(date_arr[2]) #年转为数字
                    if m>0 and m<13: #判断月份区间
                        if (m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12) and (d>0 and d<32): #31天的月
                            print("格式正确")
                            continue
                        elif (m==4 or m==6 or m==9 or m==11) and (d>0 and d<31): #30天的月
                            print("格式正确")
                            continue
                        elif m==2:
                            if (y%4==0 and y%100!=0) or y%400==0 and (d>0 and d<30): #闰年2月
                                print("格式正确")
                                continue
                            elif (y%4!=0 or (y%4==0 and y%100==0)) and (d>0 and d<29): #非闰年二月
                                print("格式正确")
                                continue
                            else:
                                print("输入内容有误,日数不对")
                        else:
                            print("输入内容有误,日数不对")
                    else:
                        print("输入内容有误,月份不对")
                else:
                    print("输入内容有误,非数字")
            else:
                print("输入内容有误,格式不匹配")
        else:
            print("输入内容有误,长度不符合")
    
    

    img


    如有帮助,请采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月14日
  • 已采纳回答 4月13日
  • 修改了问题 4月13日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染