题目

从标准输入读入年份和月份(1~12),计算并输出该月份在当年的实际天数。

输入格式:一行输入两个正整数,分别表示年份和月份(1~12),以空格分隔。

输出格式:输出一个整数表示该月天数;若月份不合法输出 无效月份。

数据范围与约定:1 ≤ 年份 ≤ 9999。

思路与算法

1. 大小月份与二月规则
1、3、5、7、8、10、12 月为 31 天;4、6、9、11 月为 30 天;2 月在闰年为 29 天,平年为 28 天。

2. 查表法简化分支
使用字典 days = {1: 31, ...} 存储各月天数,比长串的条件语句更加清晰易读。

完整程序

import math

a, b, c = map(float, input().split())

# 计算一元二次方程判别式 Δ = b² - 4ac
delta = b * b - 4 * a * c

if delta > 0:
    # 两个不相等的实数根
    r1 = (-b + math.sqrt(delta)) / (2 * a)
    r2 = (-b - math.sqrt(delta)) / (2 * a)
    print(f'x1={r1:.2f} x2={r2:.2f}')
elif delta == 0:
    # 两个相等的实数根(重根)
    r = -b / (2 * a)
    print(f'x={r:.2f}')
else:
    # 无实数根
    print('no real root')

运行示例

输入:

2024 2

输出:

29

其它写法

下面每种写法都是完整程序,输入输出格式与正文一致,便于对照。

calendar.monthrange

程序:

#!/usr/bin/python3
# coding=utf-8

import calendar
year, month = map(int, input().split())
if month < 1 or month > 12:
    print("无效月份")
else:
    print(calendar.monthrange(year, month)[1])

输入:

2024 2

输出:

29