タイトル:日付を入力して、その日がその年の何日目かを印刷します
例:
- 日付を入力してください
日付はYYYY MM DD:2020 04 17の形式で入力してください
- 結果を印刷する
2020 04 17は2020年の108日目です
アイデア:
- まず、この質問の「核心」はうるう年の判定にあります(うるう年の判定方法:4年と1つの跳躍、100年は跳躍なし、400年は跳躍)
- 次に、その年がうるう年かどうかに応じて、通常年とうるう年に該当する月の日数の2つのリストを作成します
- 最後に、「特定の日がその年の日であると判断する」ために、月の前の日数を月の日数に追加します。
実装コード:
# 模块一:接受输入的日期,切片存储
date = input('请输入日期,格式YYYY MM DD:')
year = int(date[0:4]) # 切片后存储
month = int(date[5:7])
day = int(date[8:])
# 模块二:判断闰年
def is_leap_year(year):
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
return True # 四百年再闰
return False # 百年不闰
return True # 四年一闰
return False
# 模块三:闰年/平年每月天数列表
if is_leap_year(year) is True:
month_list = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
else:
month_list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 模块四:判断输入的月份,加上之前的天数
days = 0 # 某月之前月份包含的天数
for i in range(month - 1):
days += month_list[i]
total = days + day # 总天数
# 模块五:格式化输出
print('{}是{}年的第{}天'.format(date, year, total))
# >>> 理解切片 <<<
# 将索引视作指向字符之间 ,第一个字符的左侧标为0,最后一个字符的右侧标为n,其中n是字符串长度。
# +---+---+---+---+---+---+
# | P | y | t | h | o | n |
# +---+---+---+---+---+---+
# 0 1 2 3 4 5 6
# 注意:切片的开始总是被包括在结果中,而结束不被包括 <range()与之相同>。这使得s[:i] + s[i:]总是等于s
# word = 'Python'
# print(word[:2] + word[2:])
関連コンテンツ