题目
从标准输入读入年份和月份(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