题目4:输入某年某月某日,判断这一天是这一年的第几天?

 分析:

(1)分别输入年、月、日,且规定输入的数字为整型

(2)判断年份,是平年还是闰年,如果是平年,2月就有28天;如果是闰年,2月就有29天

(3)闰年:分为普通闰年和世纪闰年

  • 普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
  • 世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。

(4)一次求和:计算出从1月1日到所输入月份的上一个月的天数之和

(5)二次求和:把一次求和所得的数字加上所输入的日期的数字,把二次求和的值打印出来

# 输入年月份
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))

# 对于输入的月份,只允许输入1-12,对于输入的日期,只允许输入1-31
if (month >= 1) and (month <= 12) and (day >= 1) and (day <= 31):
    # 判断年份是闰年还是平年
    if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
        leap = 1
    else:
        leap = 0

    # 第一次求和:计算出从1月1日开始到所输入月份的上一个月的天数之和
    days_in_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    before_month = month - 1
    effective_days_in_month = days_in_month[0:before_month]
    sum_before_month = 0
    for days in effective_days_in_month:
        sum_before_month += days

    # 第二次求和并打印:
    if month > 2:
        print(f"这是{year}年的第{sum_before_month + day + leap}天")
    else:
        print(f"这是{year}年的第{sum_before_month + day}天")
else:
    print("date error")

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以通过计算这一天与这一年1月1之间的天数差来确定这一天是这一年的第几天。具体步骤如下: 1. 计算这一年1月1到这一月的天数总和,记为days。 2. 如果这一年是闰年且输入的月份大于2月,则需要加上1天。 3. 将输入的月份之前的所有月份的天数加上,记为monthDays。 4. 将输入数加上monthDays和days,即为这一天是这一年的第几天。 例如,输入2021年3月15,则: 1. 1月1到3月1的天数为31+28=59天。 2. 2021年不是闰年,因此不需要加1天。 3. 3月15之前的所有月份的天数为31天,因此monthDays=31。 4. 这一天是第15天,因此这一天是这一年的第59+31+15=105天。 ### 回答2: 输入某年某月某,需要先判断这一年是否为闰年。闰年是指能够被4整除但不能被100整除的年份,或者是能够被400整除的年份,例如2000年。判断完年份是否为闰年后,再统计这一天是这一年的第几天。 具体的方法是,先算出这个月之前所有月份的天数之和,再加上这个月的天数,如果是闰年且这个月在2月份之后,还需要再加一天。 举个例子,假设输入期是2021年10月21,首先需要判断这一年是不是闰年。2021年不是闰年,因为不能被4整除。然后将十月之前所有月份的天数加起来,1月31天+2月28天(因为不是闰年)+3月31天+4月30天+5月31天+6月30天+7月31天+8月31天+9月30天,总共是273天。再加上这个月的21天,总共是294天。 因此,2021年10月21是这一年的第294天。 这个方法在程序中可以用不同的编程语言实现,例如C++、Python等。实现时需要注意输入期格式和闰年判断的条件。 ### 回答3: 首先需要了解一年中各月份的天数。一年共有365或366天,一般情况下,我们把一年按照365天计算。其中1、3、5、7、8、10、12月为31天,4、6、9、11月为30天,2月不同年份天数不同,闰年为29天,平年为28天。 现在输入的年月,我们需要判断该年是否为闰年(被4整除但不被100整除或被400整除的年份为闰年),如果是闰年,2月就有29天,否则为28天。接着,利用输入的年月,计算出当年的前几个月份所包含的天数和当月的天数,即可得到该天是该年的第几天。 以2022年3月5为例,该年为平年,前两个月份共有31+28=59天,3月5是第5天,因此3月5是2022年的第64天。 计算公式: 1、判断是否为闰年: (1)能被4整除但不能被100整除的年份为闰年,如2004年就是闰年,1900年不是闰年。 (2)能被400整除的年份也是闰年,如2000年是闰年。 2、计算天数: 以3月5为例,2022年前两个月份天数之和为31+28=59,3月份天数为5,则总天数为59+5=64。数学表达式为: 前两个月份天数之和+当月天数=总天数 如果12月19是2000年第几天,计算方法如下: 第一步:判断是否为闰年。2000年能被400整除,是闰年。 第二步:根据每个月份的天数计算前11个月份的天数总和,即1-11月的天数之和为:31+29+31+30+31+30+31+31+30+31+30=351。 第三步:加上当月天数,即:351+19=370。 第四步:得出答案:12月19是2000年的第370天。 综上所述,计算某年某月某是该年的第几天,需要了解一年中各月份的天数,再判断该年是否为闰年,最后计算前几个月份的天数总和和当月天数即可得出答案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值