python语言format蔬菜姓名、年龄_PYTHON:根据出生年月日计算年龄并且分段(datatime空间里的datatime模块)...

本文展示了如何使用Python的datetime模块来计算学生的年龄,并根据出生年月日将他们分到不同的年龄段。程序创建了一个字典存储学生信息,通过姓名查找学生,并统计每个年龄段的人数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验内容​

从网站下载python语言的开发环境,并安装。

设计一个数据结构存储全校学生的基本情况。

基本情况应该包括:学号,姓名(可能存在同名),性别,年龄

设计程序实现通过姓名查找学生。

可以统计每个年龄段的人数。

思路

创建一个字典作为数据库, 一个键值对多个键值储存多个学生的信息。通过for循环匹配要查找的姓名与学生的姓名是否相同,是的话就输出用户指定的信息。判断学生的年龄是否处于指定的年龄段,是的话就使数组对应元素计数加一。

程序源代码

import datetime

people = {

'1235':{

'name':'Alice',

'sex':'girl',

'age':'2012-09-15'

},

'1234':{

'name':'Alice',

'sex':'girl',

'age':'1997-11-08'

},

'5628':{

'name':'Beth',

'sex':'boy',

'age':'1882-03-03'

},

'5728':{

'name':'Beth',

'sex':'boy',

'age':'1990-01-05'

},

'4785':{

'name':'Cecil',

'sex':'girl',

'age':'2015-03-10'

}

}

labels = {

'num':'student number',

'name':'student name',

'sex':'student sex',

'age':'student age'#出生年月日,当前系统系统时间计算年龄

}

def find():

student_name=input('Name:')

for key in people:

if people[key]['name']==student_name:

request = input('find :num(n) or sex (s) or age (a)?')#重名会查找多次

if request == 'n':

choose_key = 'num'

print("{}'s {} is {}.".format(student_name,labels[choose_key],key))

if request == 's':

choose_key = 'sex'

print("{}'s {} is {}.".format(student_name,labels[choose_key],people[key][choose_key]))

if request == 'a':

choose_key = 'age'

birth_str=people[key][choose_key] #计算年龄

birth = datetime.datetime.strptime(birth_str, '%Y-%m-%d')

now = datetime.datetime.now().strftime('%Y-%m-%d')

now = datetime.datetime.strptime(now,'%Y-%m-%d')

if now.month < birth.month:

age = now.year-birth.year-1

if now.month > birth.month:

age = now.year-birth.year

if now.month == birth.month and now.day < birth.day:

age = now.year-birth.year-1

if now.month == birth.month and now.day > birth.day:

age = now.year-birth.year

print("{}'s {} is {}.".format(student_name,labels[choose_key],age))

def count():

age_matrix=[0]*6 #1-5,6-10,11-15,16-20,21-25,other

for key in people:

birth_str=people[key]['age']

birth = datetime.datetime.strptime(birth_str, '%Y-%m-%d')

now = datetime.datetime.now().strftime('%Y-%m-%d')

now = datetime.datetime.strptime(now,'%Y-%m-%d')

if now.month < birth.month:

age = now.year-birth.year-1

if now.month > birth.month:

age = now.year-birth.year

if now.month == birth.month and now.day < birth.day:

age = now.year-birth.year-1

if now.month == birth.month and now.day > birth.day:

age = now.year-birth.year

if age>=1 and age<=5:

age_matrix[0]=age_matrix[0]+1

if age>=6 and age<=10:

age_matrix[1]=age_matrix[1]+1

if age>=11 and age<=15:

age_matrix[2]=age_matrix[2]+1

if age>=16 and age<=20:

age_matrix[3]=age_matrix[3]+1

if age>=21 and age<=25:

age_matrix[4]=age_matrix[4]+1

if age>=26:

age_matrix[5]=age_matrix[5]+1

print(("{}年龄段:{}人,{}年龄段:{}人,{}年龄段:{}人,{}年龄段:{}人,{}年龄段:{}人,{}年龄段:{}人.".

format('1-5',age_matrix[0],'6-10',age_matrix[1],'11-15',age_matrix[2],'16-20',age_matrix[3],'21-25',age_matrix[4],'other',age_matrix[5])))

def main():

flag = 'c'

print(people)

while flag == 'c':

find()

count()

flag = input('continue (c) or stop (s)')

main()

上面源程序里的时间模块

birth_str=people[key][choose_key] #获取字典里学生的出生日期

birth = datetime.datetime.strptime(birth_str, '%Y-%m-%d') #用-分割学生的出生日期,获取年月日

now = datetime.datetime.now().strftime('%Y-%m-%d') #获取今天的日期

now = datetime.datetime.strptime(now,'%Y-%m-%d') #分割今天的日期获取年月日

if now.month < birth.month: #如果学生月份比今天大,他肯定没过生日,则年份相减再减一

age = now.year-birth.year-1

if now.month > birth.month: #如果学生月份比今天小,他过生日了,则年份相减

age = now.year-birth.year

if now.month == birth.month and now.day < birth.day: #如果月份相等,学生日比今天大,他没过生日

age = now.year-birth.year-1

if now.month == birth.month and now.day > birth.day: #如果月份相等,学生日比今天小,他过生日了

age = now.year-birth.year

运行截图

e058b7573b79ad683a12fed6bd83ad2e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值