新人每日一问,求某个日期是该年的第几天
本帖最后由 fengjianyx 于 2022-3-20 19:23 编辑新人初学,尝试练习基础代码:
for语句理解不透彻,导致方案一的错误,
求各位大佬讲解一下,具体应该怎么去考虑for循环后的输出值对齐?
代码如下:方案一结果错的,方案二调整print缩进就好了
【题目】计算某个日期是这一年的第几天,
【方案一】运行到最后结果是多行的
#判断日期是第几天
str1 = str(input("请输入一个日期,格式为2020/12/22\n"))
year =int(str1)
month = int(str1)
day = int(str1)
#定义月份的天数
list=
#先判断是否平年闰年,用于判断2月份天数
if (year % 4) == 0 and (year % 100) != 0 or (year % 400) == 0:
list = 29
else:
list = 28
#for语句控制月份的循环
for i in range(1,month):
if month == 1:
print(day)
break
day+=list #
print(day)
结果为:
请输入一个日期,格式为2020/12/22
2022.12.31
59
90
120
151
181
212
243
273
304
334
365
【方案二】经过调整print对齐至for后又正常如下:
#判断日期是第几天
str1 = str(input("请输入一个日期,格式为2020/12/22\n"))
year =int(str1)
month = int(str1)
day = int(str1)
#定义月份的天数
list=
#先判断是否平年闰年,用于判断2月份天数
if (year % 4) == 0 and (year % 100) != 0 or (year % 400) == 0:
list = 29
else:
list = 28
#for语句控制月份的循环
for i in range(1,month):
if month == 1:
print(day)
break
day+=list #
print (str1,"是{}年的第{}天".format(year,day))
结果准确了:
请输入一个日期,格式为2020/12/22
2022.12.31 是2022年的第365天 1、列表的下标从0开始,你range(1,month)就直接把一月给跳了
2、range应该是 month-1, 如果month = 2 时,按照你原来的那就是 0 1 =》 1月和二月,多了一个月
输出来的结果就不对了
2022/12/31
2022/12/31 是2022年的第365天
2022/02/01
2022/02/01 是2022年的第32天
# 判断日期是第几天
str1 = str(input("请输入一个日期,格式为2020/12/22\n"))
year = int(str1)
month = int(str1)
day = int(str1)
# 定义月份的天数
list =
# 先判断是否平年闰年,用于判断2月份天数
if (year % 4) == 0 and (year % 100) != 0 or (year % 400) == 0:
list = 29
else:
list = 28
# for语句控制月份的循环
for i in range(0, month-1):#
if month == 1:
print(day)
break
day += list
print(str1, "是{}年的第{}天".format(year, day)) 后面for循环的range的mouth应该是mouth-1 你把输出放入循环内 当然就会输出很多结果 你只需要最后的结果 输出放到循环外就可以了 #判断日期是第几天
str1 = str(input("请输入一个日期,格式为xxxx/xx/xx\n"))
year =int(str1)
month = int(str1)
day = int(str1)
while True:
if (month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12) and day > 31:
str1 = str(input("请输入一个正确的日期,格式为xxxx/xx/xx\n"))
year =int(str1)
month = int(str1)
day = int(str1)
elif (month == 4 or month == 6 or month == 9 or month == 11) and day > 30:
str1 = str(input("请输入一个正确的日期,格式为xxxx/xx/xx\n"))
year =int(str1)
month = int(str1)
day = int(str1)
elif month == 2:
if ((year % 4 == 0 and year % 100 != 0) or year % 400 == 0) and day > 29:
str1 = str(input("请输入一个正确的日期,格式为xxxx/xx/xx\n"))
year =int(str1)
month = int(str1)
day = int(str1)
elif year % 4 != 0 and day > 28:
str1 = str(input("请输入一个正确的日期,格式为xxxx/xx/xx\n"))
year =int(str1)
month = int(str1)
day = int(str1)
else:
break
else:
break
#定义月份的天数
list1=
#先判断是否平年闰年,用于判断2月份天数
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
list1 = 29
#for语句控制月份的循环
for i in range(0, month-1):
day+=list1
print (str1,"是{}年的第{}天".format(year,day))
页:
[1]