1.有五个学⽣坐在⼀起,问第五个⼈多少岁?答⽐第四个⼤2岁,第四个⼈说它⽐
第三个⼈⼤2岁,,…第⼀个⼈说他10岁。请写⼀个递归函数计算第5个学⽣多少岁
(递归实现)
def calculate_age(n):
if n == 1:
return 10
return calculate_age(n - 1) + 2
if __name__ == '__main__':
print(calculate_age(5))
2.某班期末考试科⽬为数学和计算机,有最多不超过30⼈参加考试。学⽣的信息包
括学号、姓名。考试后要求: (1)计算每个学⽣的总分和平均分; (2)按总分
成绩由⾼到低排出成绩的名次; (3)打印出名次表,表格内包括学⽣姓名、学
号、各科分数、总分和平均分; (4)任意输⼊⼀个学号,能够查找出该学⽣在班
级中的排名及其考试分数
编写要求: (1) 要对⽤户输⼊进⾏验证,如果输⼊的不是0-4显示错误,然后继续输
⼊ (2) 要能够连续不断的进⾏选择 (3) 每⼀项功能都要封装函数完成,函数单独放
到⼀个模块中
(4) 菜单及其⽤户选择的处理放到主模块中。
(5) 学⽣数据保存到⽂件
欢迎使⽤成绩管理系统**
[1] 学⽣信息输⼊
[2] 学⽣信息输出
[3] 查找学⽣信息
[4] 成绩排序
[0] 退出
请输⼊你的选择:1
请输⼊第1个学⽣的信息(按姓名、学号、数学成绩、计算机成绩输⼊):
张三 2009001 85 89
请输⼊第2个学⽣的信息(按姓名、学号、数学成绩、计算机成绩输⼊):
李四 2009002 86 78
…
请重新输⼊您的选择(0~4):2
姓名 学号 数学成绩 计算机成绩 总成绩 平均成绩
张三 2009001 85 89 174 87
李四 2009002 86 78 164 82
…
请重新输⼊您的选择(0~4):3
请输⼊要查找的学⽣学号: 2009001
查找成功!该学⽣信息如下:
1 张三 2009001 85 89 174 87
‘’’
import os
# 菜单及其用户选择
def manu():
print('''******欢迎使用成绩管理系统********
[1] 学生信息输入
[2] 学生信息输出
[3] 查找学生信息
[4] 成绩排序
[0] 退出
**********************************''')
# 用户选择选项
while True:
choice = int(input('请输入你的选择:'))
if choice not in range(5):
choice = int(input('请重新输入你的选择(0-4):'))
if choice == 0:
break
elif choice == 1:
info_input()
elif choice == 2:
info_output()
elif choice == 3:
info_find()
else:
grade_sort()
students_infomation = [] # 保存学生信息
# 学生信息输入
def info_input():
def student(name=None, number=None, math_grade=None, com_grade=None):
stu_info = {}
stu_info['姓名'] = name
stu_info['学号'] = number
stu_info['数学成绩'] = math_grade
stu_info['计算机成绩'] = com_grade
stu_info['平均成绩'] = com_grade + math_grade
stu_info['总成绩'] = (com_grade + math_grade)
students_infomation.append(stu_info) # 以字典形式保存学生信息并放在列表里
n = 1
while n<=2:
try:
name, number, math_grade, com_grade = (input(f'请输入第{n}个学生的信息(按姓名、学号、数学成绩、计算机成绩输入(以空格作为间隔):')).split(' ')
student(name=name, number=number, math_grade=int(math_grade), com_grade=int(com_grade))
n += 1
except:
print('信息输入格式错误')
print('.' * 20)
# 学生信息输出
def info_output():
if len(students_infomation) != 0:
print('{:^4}{:^10}{:^8}{:^8}{:^8}{:^8}'.format('姓名', '学号', '数学成绩', '计算机成绩', '总成绩', '平均成绩'))
for info in students_infomation:
print('{:^6}{:^12}{:^10}{:^14}{:^14}{:^8}'.format(info['姓名'], info['学号'], info['数学成绩'], info['计算机成绩'],
info['总成绩'], info['平均成绩']))
else:
print('还未录入信息,请重新选择!')
print('.' * 20)
# 查找学生信息
def info_find():
if len(students_infomation)!=0:
no = input('请输入要查找的学生学号:')
for info in students_infomation:
print('{:^4}{:^10}{:^8}{:^8}{:^8}{:^8}'.format('姓名', '学号', '数学成绩', '计算机成绩', '总成绩', '平均成绩'))
if no == info['学号']:
print('{:^6}{:^12}{:^10}{:^14}{:^14}{:^8}'.format(info['姓名'], info['学号'], info['数学成绩'], info['计算机成绩'],
info['总成绩'], info['平均成绩']))
break
else:
print('还未录入信息,请重新选择!')
print('.' * 20)
# 成绩排序
def grade_sort():
if len(students_infomation) != 0:
students_infomation.sort(key=lambda x: x['总成绩'], reverse=True)
info_output()
else:
print('还未录入信息,请重新选择!')
print('.' * 20)
# 保存文件
def save_file():
for i in students_infomation:
with open('学生信息.txt', 'a') as wstream:
wstream.write(str(i)+'\n')
# with open('学生信息.txt', 'w') as wstream:
# wstream.write(str(students_infomation))
exit()
if __name__ == '__main__':
manu()
save_file()