目录
一、实验目的
二、操作环境
三、实验内容和过程
1.实验内容
2.代码
# _*_ coding:utf-8 _*
#作者:码银
# 用户验证功能
def login():
print("欢迎来到简易的评分·系统,请先登录呦~")
username = input("请输入用户名:")
password = input("请输入口令:")
if username == "admin" and password == "123456":
print("登录成功!")
return True
else:
print("您还有三次机会呦~")
for i in range(3):
username = input("请重新输入用户名:")
password = input("请重新输入口令:")
if username == "admin" and password == "123456":
print("登录成功!")
return True
print("登录失败,请重新启动程序!")
exit()
def menu():
while True:
print("~~~~~~~~~~~~~~~~")
print("| 1.进入评分系统 ")
print("| 2.退出 ")
print("~~~~~~~~~~~~~~~~")
choice = input("\n请输入操作编号:")
if choice == "1":
pingfen()
elif choice == "2":
break
else:
print("登出,下次使用请重新运行本程序")
def pingfen():
# 评分功能
num_judges = int(input("请输入评委人数:"))
judge_names = []
for i in range(num_judges):
judge_names.append(input("请输入评委姓名:"))
num_contestants = int(input("请输入选手人数:"))
contestant_names = []
for i in range(num_contestants):
contestant_names.append(input("请输入选手姓名:"))
scores = []
for judge in judge_names:
score = []
for contestant in contestant_names:
s = float(input(f"请输入{contestant}的{judge}得分:"))
score.append(s)
scores.append(score)
# 计算每个选手的最终得分和名次
final_scores = []
for i in range(num_contestants):
total_score = sum(scores[j][i] for j in range(num_judges))
max_score = max(scores[j][i] for j in range(num_judges))
min_score = min(scores[j][i] for j in range(num_judges))
total_score -= max_score + min_score
final_scores.append(total_score / (num_judges - 2))
# 按平均分排序并输出名次
contestant_final_scores = sorted(final_scores, reverse=True)
print("各选手的最终得分及名次如下(已经自动保存到文件中):")
for i in range(num_contestants):
print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}")
with open("scores.txt", "w") as f:
for i in range(num_contestants):
print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}", file=f)
login()
menu()
结束了,下面不用看了。
2.1 用户验证功能
# 用户验证功能
def login():
print("欢迎来到简易的评分·系统,请先登录呦~")
username = input("请输入用户名:")
password = input("请输入口令:")
if username == "admin" and password == "123456":
print("登录成功!")
return True
else:
print("您还有三次机会呦~")
for i in range(3):
username = input("请重新输入用户名:")
password = input("请重新输入口令:")
if username == "admin" and password == "123456":
print("登录成功!")
return True
print("登录失败,请重新启动程序!")
exit()
在Python中,exit()
函数用于退出程序,它接受一个可选的退出状态代码作为参数。默认情况下,如果不传递参数,状态代码将被设置为0。调用这个函数将终止程序的执行并返回到操作系统。
2.2 菜单函数
def menu():
while True:
print("~~~~~~~~~~~~~~~~")
print("| 1.进入评分系统 ")
print("| 2.退出 ")
print("~~~~~~~~~~~~~~~~")
choice = input("\n请输入操作编号:")
if choice == "1":
pingfen()
elif choice == "2":
break
else:
print("登出,下次使用请重新运行本程序")
使用while True:
通过这个语句可以达到:除非选择“2.退出”break掉,其他选项都能在执行完程序后,再次跳出菜单。
2.3 评分功能
def pingfen():
# 评分功能
num_judges = int(input("请输入评委人数:"))
judge_names = []
for i in range(num_judges):
judge_names.append(input("请输入评委姓名:"))
num_contestants = int(input("请输入选手人数:"))
contestant_names = []
for i in range(num_contestants):
contestant_names.append(input("请输入选手姓名:"))
scores = []
for judge in judge_names:
score = []
for contestant in contestant_names:
s = float(input(f"请输入{contestant}的{judge}得分:"))
score.append(s)
scores.append(score)
# 计算每个选手的最终得分和名次
final_scores = []
for i in range(num_contestants):
total_score = sum(scores[j][i] for j in range(num_judges))
max_score = max(scores[j][i] for j in range(num_judges))
min_score = min(scores[j][i] for j in range(num_judges))
total_score -= max_score + min_score
final_scores.append(total_score / (num_judges - 2))
# 按平均分排序并输出名次
contestant_final_scores = sorted(final_scores, reverse=True)
print("各选手的最终得分及名次如下(已经自动保存到文件中):")
for i in range(num_contestants):
print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}")
with open("scores.txt", "w") as f:
for i in range(num_contestants):
print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}", file=f)
四、结果分析
总体的输出结果:
保存文件成功截图:
五、小结
这是一个简单的评分系统,包括用户登录、菜单选择和评分功能。用户在登录时需要输入用户名和口令,如果输入正确,则可以进入评分系统。在评分系统中,用户可以选择进入评分功能,然后输入评委人数和选手人数,分别输入评委姓名和选手姓名,以及他们的得分。系统会自动计算每个选手的最终得分和名次,并按平均分从高到低排序输出。最后,用户的评分结果会被保存到一个文件中。