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 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)