Pythonは特定の日がその年の日であると判断します

タイトル:日付を入力して、その日がその年の何日目かを印刷します

例:

  1. 日付を入力してください

日付はYYYY MM DD:2020 04 17の形式で入力してください

  1. 結果を印刷する

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:])

関連コンテンツ

元の17件の記事を公開 賞賛9 890回

おすすめ

転載: blog.csdn.net/Sherlooock/article/details/105572038