Python教程

Python函数 循环-判断一年中的哪一天

本文主要是介绍Python函数 循环-判断一年中的哪一天,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.编程:日期计算:输入某年某月某日,判断这一天是这一年的第几天?
1).程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第 几
天, 特殊情况,闰年且输入月份大于3时需考虑多加一天。
2).如果输入的月份大于12时提示错误,重新输入
3).如果月份为小月,天数大于30时提示错误,重新输入
4).如果月份为大月,天数大于31时提示错误,重新输入
5).如果年份为平年,2月天数大于28时提示错误,重新输入
6).如果年份为闰年,2月天数大于29时提示错误,重新输入
方法一:

y=int(input('year'))
m=int(input('month'))
d=int(input('day'))
while True:#判断月份大于12或者小于1,共分两种情况:异常月份 正常月份
    if m>12 or m<1:
        print('输错了月份')
        m=int(input('请重新输入月份'))
    if 1<=m<=12:
        break
while True:#判断a:当月在大月时(2种情况) b:不在大月(异常日期 正常日期)
    if m in(1,3,5,7,8,10,12):
        if d>31 or d<1:
            print('输错了日期')
            d=int(input('请重新输入日期'))
        if 1<=d<=31:
            break
    else:
        if d > 30 or d < 1:
            print('输错了日期')
            d = int(input('请重新输入日期'))
        if 1 <= d <= 30:
            break
while True:#判断a:闰年(2月两种情况:29天和异常日期)b平年(2月28天和异常日期)
    if y%4==0 and y%100!=0 or y%100==0 and y%400==0:
        if m==2:
            if d > 29 or d < 1:
                print('输错了日期')
                d = int(input('请重新输入日期'))
            if 1 <= d <= 29:
                break
        else:
            break
    else:
        if m==2:
            if d>28 or d<1:
                print('输错了日期')
                d = int(input('请重新输入日期'))
            if 1 <= d <= 28:
                break
        else:
            break
#以上仅仅时判断输入条件,下面开始计算
if 1<=m<=12:
    for i in range(1,m):#循环累加前几个月的值

        if i in(1,3,5,7,8,10,12):#分3种情况:大月,二月(平年28天,闰年29),其他月
            d+=31
        elif i==2:
            if  y%100!=0 and y%4==0 or y%100==0 and y%400==0:
                d+=29
            else:
                d+=28
        else:
            d+=30
print(d)


方法二:
def getdays():
    y=int(input('请输入年:'))
    runnian=False#闰年默认为假
    if y%4==0 and y%100!=0 or y%400==0:
        runnian=True#闰年经过判断之后值可能会发生改变。
    while True:
        m=int(input('请输入月:'))
        if m>12 or m<1:
            print('月输入的不合法,请重新输入')
            continue
        else:
            break
    while True:
        d=int(input('请输入日:'))
        if m in(1,3,5,7,8,10,12):
            if d>31 or d<1:
                print('日期输入的不合法,请重新输入!')
                continue
            else:
                break
        elif m==2:
            if runnian==True:
                if d>29 or d<1:
                    print('日期输入的不正确,请检查!')
                    continue
                else:
                    break
            else:
                if d>28 or d<1:
                    print('日期输入的不正确,请检查!')
                    continue
                else:
                    break
        else:
            if d>30 or d<1:
                print('输入的日期不合法,请重新输入!')
                continue
            else:
                break
    days=0
    for i in range(1,m):
        if i in(1,3,5,7,8,10,12):
            days+=31
        elif i==2:
            if runnian==True:
                days+=29
            else:
                days+=28
        else:
            days+=30
    days+=d
    print('%d年%d月%d日是%d年的第%d天'%(y,m,d,y,days))
# getdays()

这篇关于Python函数 循环-判断一年中的哪一天的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!