2444340649 发表于 2019-10-2 12:14:55

Python问题,,,,详情请大佬往下看

学校社团要我们写一个生日倒计时的代码,也就是输入你的生日,然后会打印出还有多少天是你的生日
但是输入日期的时候要求加上一个检查日期合法性的东西,然后要告诉输入者错误的地方并要求重新输入
大部分东西都完成了,就差这么一点点,实在想不到什么简单的方法,如果一个月一个月去编写代码来检查,那实在是太繁琐了。。
# coding=<encoding name> : # coding=utf-8
import datetime
import time

year = input("输入你的出生年:")
month = input("输入你的出生月:")
day = input("输入你的出生日:")

y = int (year)
m = int (month)
d = int (day)

def my_function():
    a = datetime.date.today()
    b = datetime.date(y, m, d,)
    print ("你的生日是:",b)
    Y = a.year
    if m ==2 and d == 29:
       Y = a.year
       whileY%4 != 0:
          Y = Y + 1   
    b = datetime.date( Y, m, d)
    delta = b - a
    if b > a:
      print("那么还有",delta,"就是你的生日了")
    elif b < a:
      print("你的生日过去了啊、、、")
      print(-delta,"前是你的生日啊")
    elif b == a:
      print("今天就是你的生日哦!!!")
    return a,b


my_function()
自己做的就这么一点点

冬雪雪冬 发表于 2019-10-2 12:32:43

用datetime.date检查
>>> datetime.date(1992,15,2)
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
    datetime.date(1992,15,2)
ValueError: month must be in 1..12
>>> datetime.date(1992,2,29)
datetime.date(1992, 2, 29)
>>> datetime.date(1993,2,29)
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
    datetime.date(1993,2,29)
ValueError: day is out of range for month

_2_ 发表于 2019-10-2 13:46:46

冬雪雪冬 发表于 2019-10-2 12:32
用datetime.date检查

oh,学到了

2444340649 发表于 2019-10-2 14:10:35

冬雪雪冬 发表于 2019-10-2 12:32
用datetime.date检查

那报错之后要如何返回到输入,让对方重新输入呢?

zltzlt 发表于 2019-10-2 14:50:05

2444340649 发表于 2019-10-2 14:10
那报错之后要如何返回到输入,让对方重新输入呢?

这样做:
# coding=utf-8
import datetime

while True:
    try:
      year = input("输入你的出生年:")
      month = input("输入你的出生月:")
      day = input("输入你的出生日:")

      y = int (year)
      m = int (month)
      d = int (day)

      datetime.date(y, m, d)
      break
    except Exception:
      print("输入有误,请重新输入!")

def my_function():
    a = datetime.date.today()
    b = datetime.date(y, m, d)
    print ("你的生日是:",b)
    Y = a.year
    if m ==2 and d == 29:
       Y = a.year
       whileY%4 != 0:
          Y = Y + 1
    b = datetime.date( Y, m, d)
    delta = b - a
    if b > a:
      print("那么还有",delta,"就是你的生日了")
    elif b < a:
      print("你的生日过去了啊、、、")
      print(-delta,"前是你的生日啊")
    elif b == a:
      print("今天就是你的生日哦!!!")
    return a,b


my_function()

2444340649 发表于 2019-10-2 18:46:59

zltzlt 发表于 2019-10-2 14:50
这样做:

这样挺好了,那如果要知道哪里错了,有可能实现嘛
页: [1]
查看完整版本: Python问题,,,,详情请大佬往下看