鱼C论坛

 找回密码
 立即注册
查看: 2489|回复: 5

[已解决]Python问题,,,,详情请大佬往下看

[复制链接]
发表于 2019-10-2 12:14:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
学校社团要我们写一个生日倒计时的代码,也就是输入你的生日,然后会打印出还有多少天是你的生日
但是输入日期的时候要求加上一个检查日期合法性的东西,然后要告诉输入者错误的地方并要求重新输入
大部分东西都完成了,就差这么一点点,实在想不到什么简单的方法,如果一个月一个月去编写代码来检查,那实在是太繁琐了。。
# 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
       while  Y%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 14:50:05
2444340649 发表于 2019-10-2 14:10
那报错之后要如何返回到输入,让对方重新输入呢?

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

  3. while True:
  4.     try:
  5.         year = input("输入你的出生年:")
  6.         month = input("输入你的出生月:")
  7.         day = input("输入你的出生日:")

  8.         y = int (year)
  9.         m = int (month)
  10.         d = int (day)

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

  15. def my_function():
  16.     a = datetime.date.today()
  17.     b = datetime.date(y, m, d)
  18.     print ("你的生日是:",b)
  19.     Y = a.year
  20.     if m ==2 and d == 29:
  21.        Y = a.year
  22.        while  Y%4 != 0:
  23.           Y = Y + 1
  24.     b = datetime.date( Y, m, d)
  25.     delta = b - a
  26.     if b > a:
  27.         print("那么还有",delta,"就是你的生日了")
  28.     elif b < a:
  29.         print("你的生日过去了啊、、、")
  30.         print(-delta,"前是你的生日啊")
  31.     elif b == a:
  32.         print("今天就是你的生日哦!!!")
  33.     return a,b


  34. my_function()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-2 12:32:43 | 显示全部楼层
用datetime.date检查
  1. >>> datetime.date(1992,15,2)
  2. Traceback (most recent call last):
  3.   File "<pyshell#14>", line 1, in <module>
  4.     datetime.date(1992,15,2)
  5. ValueError: month must be in 1..12
  6. >>> datetime.date(1992,2,29)
  7. datetime.date(1992, 2, 29)
  8. >>> datetime.date(1993,2,29)
  9. Traceback (most recent call last):
  10.   File "<pyshell#16>", line 1, in <module>
  11.     datetime.date(1993,2,29)
  12. ValueError: day is out of range for month
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-2 13:46:46 | 显示全部楼层

oh,学到了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-2 14:10:35 From FishC Mobile | 显示全部楼层
冬雪雪冬 发表于 2019-10-2 12:32
用datetime.date检查

那报错之后要如何返回到输入,让对方重新输入呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-2 14:50:05 | 显示全部楼层    本楼为最佳答案   
2444340649 发表于 2019-10-2 14:10
那报错之后要如何返回到输入,让对方重新输入呢?

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

  3. while True:
  4.     try:
  5.         year = input("输入你的出生年:")
  6.         month = input("输入你的出生月:")
  7.         day = input("输入你的出生日:")

  8.         y = int (year)
  9.         m = int (month)
  10.         d = int (day)

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

  15. def my_function():
  16.     a = datetime.date.today()
  17.     b = datetime.date(y, m, d)
  18.     print ("你的生日是:",b)
  19.     Y = a.year
  20.     if m ==2 and d == 29:
  21.        Y = a.year
  22.        while  Y%4 != 0:
  23.           Y = Y + 1
  24.     b = datetime.date( Y, m, d)
  25.     delta = b - a
  26.     if b > a:
  27.         print("那么还有",delta,"就是你的生日了")
  28.     elif b < a:
  29.         print("你的生日过去了啊、、、")
  30.         print(-delta,"前是你的生日啊")
  31.     elif b == a:
  32.         print("今天就是你的生日哦!!!")
  33.     return a,b


  34. my_function()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-2 18:46:59 From FishC Mobile | 显示全部楼层
zltzlt 发表于 2019-10-2 14:50
这样做:

这样挺好了,那如果要知道哪里错了,有可能实现嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-14 20:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表