我有一个名册xls文件包含着学生的姓名学号和序号写出py代码完成:1输入学号或者姓名输出学号和姓名并接收成绩输入根据序号存放位置并保存为xls文件 2输入姓名或学号不完整时输出补全提示输入数字可选择
以下是实现上述功能的代码:
import pandas as pd
# 读取名册文件
df = pd.read_excel('名册.xls')
# 定义函数,根据学号或姓名查找学生信息
def search_student():
while True:
keyword = input("请输入学号或姓名(输入'q'退出):")
if keyword == 'q':
break
# 判断输入的是学号还是姓名
if keyword.isdigit():
result = df.loc[df['学号'] == int(keyword)]
else:
result = df.loc[df['姓名'].str.contains(keyword)]
# 如果找到了匹配的学生信息
if not result.empty:
print(result[['学号', '姓名']])
# 接收成绩输入
score = input("请输入成绩:")
# 根据序号存放位置
index = result.iloc[0]['序号']
df.loc[df['序号'] == index, '成绩'] = score
# 保存文件
df.to_excel('名册.xls', index=False)
print('成绩已保存!')
break
else:
print('未找到匹配的学生信息,请重新输入。')
# 定义函数,根据学号或姓名补全信息
def complete_info(keyword):
# 判断输入的是学号还是姓名
if keyword.isdigit():
result = df.loc[df['学号'] == int(keyword)]
else:
result = df.loc[df['姓名'].str.contains(keyword)]
# 如果找到了匹配的学生信息
if not result.empty:
print(result[['学号', '姓名']])
# 选择学生
index = input('请输入序号选择学生:')
# 如果输入的是数字
if index.isdigit():
index = int(index) - 1
if index >= 0 and index < len(result):
# 返回选择的学生信息
return result.iloc[index]
# 如果未找到匹配的学生信息,或者选择的序号不合法
print('未找到匹配的学生信息,请重新输入。')
return None
# 主程序
while True:
choice = input('请选择功能:1.输入学号或姓名查询学生信息并录入成绩;2.输入学号或姓名补全信息\n')
if choice == '1':
search_student()
elif choice == '2':
keyword = input('请输入不完整的学号或姓名:')
complete_info(keyword)
else:
break
运行程序后,会提示选择功能。如果选择第一项,则输入学号或姓名进行查询,如果找到匹配的学生信息,则接收成绩输入,并保存到名册文件中。如果选择第二项,则输入不完整的学号或姓名进行补全,程序会输出匹配的学生信息,并提示输入序号选择学生。如果输入的序号不合法,则重新输入。如果找到选择的学生信息,则返回该学生的完整信息,否则重新输入不完整的学号或姓名。如果选择了其他项,则退出程序。
原文地址: https://www.cveoy.top/t/topic/bPMq 著作权归作者所有。请勿转载和采集!