头歌题目:计算指定的年月日,是这一年中的哪一天,Python实现

话不多说,直接上代码。

先判断是否为闰年

def is_leap_year(year):
    """
    判断指定的年份是不是闰年

    :param year: 年份
    :return: 闰年返回True平年返回False
    """
    #        请在此处添加代码       #
    # *************begin************#
   
    if year % 400 == 0:
        return(True)
    elif year % 4 == 0 and year % 100 != 0:
        return (True)
    else:
        return(False)
    # **************end*************#

再判断是一年中的哪一天

def which_day(year, month, date):
    """
    计算传入的日期是这一年的第几天

    :param year: 年
    :param month:月
    :param date: 日
    :return: 第几天
    """
 #        请在此处添加代码       #
    # *************begin************#
    sum = 0
    num = 0
    months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
    if 0 <= month <= 12:
        sum = months[month - 1]
    else:
        print('Error Of The Month')
    sum += date
    if is_leap_year(year) == True:
        num = 1
    if month > 2 and num == 1:
        sum += 1
    return sum

完整代码如下

def is_leap_year(year):
    """
    判断指定的年份是不是闰年

    :param year: 年份
    :return: 闰年返回True平年返回False
    """
    #        请在此处添加代码       #
    # *************begin************#
   
    if year % 400 == 0:
        return(True)
    elif year % 4 == 0 and year % 100 != 0:
        return (True)
    else:
        return(False)
    # **************end*************#


def which_day(year, month, date):
    """
    计算传入的日期是这一年的第几天

    :param year: 年
    :param month:月
    :param date: 日
    :return: 第几天
    """
 #        请在此处添加代码       #
    # *************begin************#
    sum = 0
    num = 0
    months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
    if 0 <= month <= 12:
        sum = months[month - 1]
    else:
        print('Error Of The Month')
    sum += date
    if is_leap_year(year) == True:
        num = 1
    if month > 2 and num == 1:
        sum += 1
    return sum

if __name__ == '__main__':
    
    year,month,date = map(int,input().split(","))

    is_leap_year(year)
    suc = which_day(year, month,date)
    print(suc)
    


    # **************end*************#

运行结果

Ps:本人也是初学小白,后续会不断更新自己的头歌Python作业。大神勿喷!

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Python 的 `datetime` 库来解决这个问题。代码示例如下: ``` import datetime def year_day(year, month, day): date = datetime.datetime(year, month, day) return date.strftime("%j") ``` 调用时可以这样: ``` year_day(2022, 3, 3) # 输出 "062" ``` 其,`%j` 表示一年的第几天。 ### 回答2: 题目分析: 这道题需要我们考虑几个问题,首先是如何输入某年某月某,这需要用到python的input函数;其次需要判断输入的年份是否是闰年,因为闰年与非闰年每个月的天数是不同的;最后需要计算出输入的期是这一年的第几天,所以要进行天数的累加。 解题思路: 首先,通过input函数输入年月,分别保存到年、月、三个变量,由于input函数输入的是字符串类型,需要用int()函数将其转换为整数类型。 然后,需要判断输入的年份是否是闰年,通过判断年份是否能够被4整除并且不能被100整除,或者能够被400整除,如果是,则当前年份是闰年,否则不是。 接下来,需要判断输入的月份有多少天。根据闰年与非闰年每个月的天数不同,我们可以先将每个月的天数保存在一个列表,然后通过判断输入的年份是否是闰年来选择从哪个列表获取每个月的天数。最后,对输入的月份之前的所有天数求和,再加上输入的期,就是这一年的第几天。 具体实现: 以下是具体的代码实现Python3): ```Python year = int(input("请输入年份:")) month = int(input("请输入月份:")) day = int(input("请输入期:")) # 判断是否是闰年 if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: is_leap = True else: is_leap = False # 每个月的天数 month_days = [31, 28 + is_leap, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 计算当天是这一年的第几天 day_count = sum(month_days[:month-1]) + day print(f"{year}年{month}月{day}是这一年的第{day_count}天。") ``` 总结: 通过以上的代码实现,我们可以判断任意一个期是这一年的第几天。对于python初学者来说,实现题目是一次较好的练习机会,可以对输入输出、条件判断、列表等python内容进行进一步的巩固和学习。 ### 回答3: 首先,我们需要知道一年每个月的天数。通常一年有12个月,分别为1月到12月。其1月、3月、5月、7月、8月、10月、12月共有31天,4月、6月、9月、11月共有30天,2月则分为闰年和平年。闰年2月有29天,平年2月有28天。判断某一年是否是闰年,我们需要用到以下规则: 1.普通闰年:公历年份是4的倍数的,一般是闰年。 2.世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年。 因此,我们可以先写出判断闰年的函数,代码如下: def is_leap_year(year): return (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 接着我们可以编写计算天数的函数,流程如下: 1.判断是否是闰年,确定2月的天数; 2.根据月份计算出前面几个月的总天数; 3.加上当前月份的天数,得到结果。 代码如下: def get_day_of_year(year, month, day): # 判断月份是否合法 if month not in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]: raise ValueError('Invalid month') # 判断天数是否合法 if day < 1 or day > 31: raise ValueError('Invalid day') # 判断是否是闰年,确定2月的天数 if is_leap_year(year): days_of_month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] else: days_of_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 计算前面几个月的总天数 days = sum(days_of_month[:month - 1]) # 加上当前月份的天数 days += day return days 最后,我们可以调用这个函数来计算某一天是在这一年的第几天。例如,输入2022年5月1,运行代码如下: get_day_of_year(2022, 5, 1) 结果为121,即5月1是2022年的第121天。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值