关于#python#的问题:要求用户输入一个(1-365)之间的整数,当用户输入错误时要求用户重新输入

关于#python#的问题:要求用户输入一个(1-365)之间的整数,当用户输入错误时要求用户重新输入

问题描述:

编写一个程序,要求用户输入一个(1-365)之间的整数,当用户输入错误时要求用户重新输入。然后以输入值作为一年中的第几天,以此计算这一天是几月几日,并分别考虑闰年和非闰年的情况

这样?

img

import datetime
y=datetime.datetime.now().year
isRN= (y % 400 == 0) or (y % 4 == 0 and y % 100 != 1)
feb=28
if isRN:
    feb=29
day=0
while True:
    s=input("请输入一个1-365之间的整数")
    if s.isdigit():
        day=int(s)
        if 0<day<366:
            break;
    else:
        print("请输入数字")

m=1
date=1
for i in range(1,day):
    date+=1
    if m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m == 10 or m == 12:
        if date>31:
            m+=1
            date=1
    elif m == 4 or m == 6 or m == 9 or m == 11:
        if date>30:
            m+=1
            date=1
    else:
        if date>feb:
            m+=1
            date=1

print(str(m)+'月'+str(date)+'日')

有帮助麻烦点下【采纳该答案】

也没有输入年份啊,怎么知道是不是闰年呢?


year = int(input(‘year:’))
month = int(input(‘month:’))
day = int(input(‘day:’))

day_list = [0,31,59,90,120,151,182,213,243,273,304,334]

num_day = 0

if 0<month<12:
num_day = day_list[month-1]
else:
print(“error”)

num_day += day

if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
if month > 2 :
num_day += 1

print(num_day)