案例:準備10我的姓名,而後爲這10我的隨機生成生日【都是90後】python
一、統計出那些人是夏季【6月-8月】出生的。app
二、最大的比最小的大多少天dom
三、誰的生日最先,誰的生日最晚ui
備註:春季【3-5】夏季【6-8】秋季【9-11】冬季【12-2】spa
演示:code
from datetime import date, timedeltaget
from random import randintit
def build_birthday(list_person_name:list):import
# 初始化存儲「姓名:生日」字典date
name_birthday ={}.fromkeys(list_person_name)
# 生成生日
for key in name_birthday:
temp_year = randint(1990, 1999)
temp_month = randint(1, 12)
temp_day = randint(1, 30)
name_birthday[key] = date(temp_year, temp_month, temp_day)
# 返回
return name_birthday
def person_birthday_summer(name_birthday:dict):
# 用於存儲夏天出生的key
list_person = []
for key in name_birthday:
if name_birthday[key].month >= 6 and name_birthday[key].month <= 8:
list_person.append(key)
# 返回
return list_person
def get_person_year_max(name_birthday:dict):
# 在字典中提取出生日
person_birth = list(name_birthday.values())
# 獲取最大的生日
max_birthday = sorted(person_birth)[len(person_birth)-1]
# 遍歷
for key in name_birthday:
if name_birthday[key] == max_birthday:
return key
def get_person_year_min(name_birthday:dict):
# 在字典中提取出生日
person_birth = list(name_birthday.values())
# 獲取最小的生日
min_birthday = sorted(person_birth)[0]
# 遍歷
for key in name_birthday:
if name_birthday[key] == min_birthday:
return key
def get_person_days(name_birthday:dict):
# 在字典中提取出生日
person_birth = list(name_birthday.values())
# 獲取最大的生日
min_birthday = sorted(person_birth)[0]
max_birthday = sorted(person_birth)[len(person_birth)- 1]
# 返回天數
return (max_birthday-min_birthday).days
def get_person_early_birthday(name_birthday:dict):
for key in name_birthday:
name_birthday[key] = name_birthday[key].replace(year=1990)
person_birth = list(name_birthday.values())
return(sorted(person_birth)[0])
def get_person_later_birthday(name_birthday:dict):
for key in name_birthday:
name_birthday[key] = name_birthday[key].replace(year=1990)
person_birth = list(name_birthday.values())
return(sorted(person_birth)[len(person_birth)-1])
if __name__ == "__main__":
list_name = ["趙一", "楊二", "張三", "李四", "王五", "趙六", "馬七", "鄭八", "劉九","胡十"]
# 爲list_name中全部的學員生成生日
name_birthday = build_birthday(list_name)
print(name_birthday)
# 調用功能模塊
birthday_summer_list =person_birthday_summer(name_birthday)
if len(birthday_summer_list) == 0:
print("沒有人的生日是在夏天: ")
else:
print("生日爲夏天的有:", birthday_summer_list) # 需求一
# 需求二
print("生日最大的:", get_person_year_max(name_birthday))
print("生日最小的:", get_person_year_min(name_birthday))
print("最大比最小的天數:", get_person_days(name_birthday))
# 需求三
date_early =get_person_early_birthday(name_birthday)
print("生日最大的是:%d月%d日"%(date_early.month,date_early.day))
date_later = get_person_later_birthday(name_birthday)
print("生日最小的是:%d月%d日" % (date_later.month, date_early.day))
執行結果:
C:\python\python.exeC:/python/demo/file3.py
{'趙一':datetime.date(1992, 12, 30), '楊二': datetime.date(1995,6, 23), '張三': datetime.date(1990, 6, 21), '李四':datetime.date(1991, 9, 29), '王五':datetime.date(1996, 2, 26), '趙六':datetime.date(1995, 9, 18), '馬七':datetime.date(1996, 7, 4), '鄭八':datetime.date(1990, 3, 5), '劉九':datetime.date(1992, 3, 3), '胡十':datetime.date(1992, 11, 6)}
生日爲夏天的有: ['楊二','張三','馬七']
生日最大的: 馬七
生日最小的: 鄭八
最大比最小的天數: 2313
生日最大的是:2月26日
生日最小的是:12月26日
Process finished with exit code 0