三天打鱼两天晒网

本文介绍了一个基于Python的简易计算器,用于判断从2010年起任意给定日期是‘打鱼’还是‘晒网’的日子,通过计算平闰年和累计天数,最后根据五天周期确定活动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

"""
@文件:三天打鱼,两天晒网
@说明:某人自2010年1月1日起开始“三天打鱼两天晒网”,判断这个人在以后的某一天中是打鱼还是晒网
@作者:秘密
@时间:2019.3.1
"""
#年份输入
def Year_():
    year = int(input("请输入年份:"))
    return year

#平闰年判断
def judge_year(year):
    a = year % 4
    b = year % 100
    c = year % 400
    if c == 0:
        i = 1
    elif a == 0 and b != 0:
        i = 1
    else:    #年份为平年
        i = 0
    return i

#月份输入
def Month_():
    month = int(input("请输入月份:"))
    return month

#日期输入及判断
def Day_(month,i):
    day = int(input("请输入日期:"))
    if month == 1:
        if day > 31:
            print("输入错误")
            Day_(month, i)
    if month == 2 and i == 1:
        if day > 29:
            print("输入错误")
            Day_(month, i)
    if month == 2 and i == 0:
        if day > 28:
            print("输入错误")
            Day_(month, i)
    if month == 3:
        if day > 31:
            print("输入错误")
            Day_(month, i)
    if month == 4:
        if day > 30:
            print("输入错误")
            Day_(month, i)
    if month == 5:
        if day > 31:
            print("输入错误")
            Day_(month, i)
    if month == 6:
        if day > 30:
            print("输入错误")
            Day_(month, i)
    if month == 7:
        if day > 31:
            print("输入错误")
            Day_(month, i)
    if month == 8:
        if day > 31:
            print("输入错误")
            Day_(month, i)
    if month == 9:
        if day > 30:
            print("输入错误")
            Day_(month, i)
    if month == 10:
        if day > 31:
            print("输入错误")
            Day_(month, i)
    if month == 11:
        if day > 30:
            print("输入错误")
            Day_(month, i)
    if month == 12:
        if day > 31:
            print("输入错误")
            Day_(month, i)
    return day

#计算总天数
def Cacular_(year,month,day):
    year_bag = []
    yearsum = 0     #设置变量的初始值:自2010年至指定年份year,year-2010年的总天数
    monthsum = 0    #设置变量的初始值:指定月份month,month-1个月的总天数
    cacularyear = year-2010
    cacularmonth = month-1
    for j in range(0, cacularyear+1):   #将自2010年至指定年的前一年的年份归入year_bag中
        year_bag.append(2010+j)
    for x in year_bag:                  #遍历判断平闰年
        y = judge_year(x)
        if y == 1:  #366天
            yearsum = yearsum+366
        if y == 0:  #365天
            yearsum = yearsum+365
    if cacularmonth == 1:
        monthsum = 31       #1月总天数
    if cacularmonth == 2:
        monthsum = 59       #1月+2月(28天)总天数
    if cacularmonth == 3:
        monthsum = 90       #1月+2月(28天)+3月总天数
    if cacularmonth == 4:
        monthsum = 120      #1月+……+4月总天数
    if cacularmonth == 5:
        monthsum = 151      #……
    if cacularmonth == 6:
        monthsum = 181      #……
    if cacularmonth == 7:
        monthsum = 212      #……
    if cacularmonth == 8:
        monthsum = 243      #……
    if cacularmonth == 9:
        monthsum = 273      #……
    if cacularmonth == 10:
        monthsum = 304      #……
    if cacularmonth == 11:
        monthsum = 334      #1月+……+12月总天数
    daysum = yearsum+monthsum+day
    return daysum

#判断打鱼或晒网
def Judge_(daysum):
    fish = daysum % 5     #求余数
    if fish == 1 or fish == 2 or fish == 3:
        print("打鱼")
    if fish == 4 or fish == 0:
        print("晒网")

if __name__ == "__main__":
    syear = Year_()
    while syear < 2010:
        print("输入错误")
        syear = Year_()
    si = judge_year(syear)
    smonth = Month_()
    while smonth > 12:
        print("输入错误")
        smonth = Month_()
    sday = Day_(smonth, si)
    sdaysum = Cacular_(syear, smonth, sday)
    scacularyear = syear-2010
    if si == 1 and scacularyear > 1:     #是否存在2月29日
        sdaysum = sdaysum+1
    Judge_(sdaysum)

 

流程图

调试结果

测试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值