用python写一段代码,实现校运动会成绩管理系统 该系统可以记录校运动会全部运动项目的成绩、得分和排名情况,系统功能项以菜单形式显示。项目包括 50 米、100 米、200 米、400 米、1500 米、跳高、立定跳远、铅球。 系统可实现的具体功能包括: 1、首先录入各院系在各项目上的成绩及相应的得分(自行设定,如100米成绩12秒内得10分,12-15秒得8分……)。 2、实现按照院系编号输出每个院系的总分。 3、按照总分由高到低对所有院系进行排名。 4、按照单个项目分数由高到低对所有院系进行排名,如按照男子100米成绩对所有院系排名。 5、按照男子总分和女子总高低分别排名。 6、按照项目编号查询各院系该项目的成绩和得分情况。 7、退出系统。
时间: 2023-07-10 16:38:49 浏览: 63
以下是一份Python代码,可以实现校运动会成绩管理系统,具体功能如题目所述:
```python
# 定义各项目得分规则
SCORE_RULES = {
"50m": {10: 6, 11: 5, 12: 4, 13: 3, 14: 2, 15: 1},
"100m": {10: 10, 11: 8, 12: 6, 13: 4, 14: 2, 15: 1},
"200m": {20: 10, 22: 8, 24: 6, 26: 4, 28: 2, 30: 1},
"400m": {40: 10, 44: 8, 48: 6, 52: 4, 56: 2, 60: 1},
"1500m": {240: 10, 270: 8, 300: 6, 330: 4, 360: 2, 390: 1},
"high_jump": {2.0: 10, 1.9: 8, 1.8: 6, 1.7: 4, 1.6: 2, 1.5: 1},
"long_jump": {7.0: 10, 6.5: 8, 6.0: 6, 5.5: 4, 5.0: 2, 4.5: 1},
"shot_put": {15: 10, 13: 8, 11: 6, 9: 4, 7: 2, 5: 1}
}
# 定义各院系编号和名称
DEPARTMENTS = {
"001": "计算机科学与技术",
"002": "软件工程",
"003": "网络工程",
"004": "信息安全",
}
# 初始化各院系成绩列表和总分
department_scores = {department_code: {"name": department_name, "scores": {}} for department_code, department_name in DEPARTMENTS.items()}
# 录入各院系成绩
while True:
print("请输入项目编号(50m、100m、200m、400m、1500m、high_jump、long_jump、shot_put), 或输入q退出:")
project = input()
if project == "q":
break
if project not in SCORE_RULES:
print("无效的项目编号,请重新输入!")
continue
print("请输入院系编号(001、002、003、004):")
department_code = input()
if department_code not in DEPARTMENTS:
print("无效的院系编号,请重新输入!")
continue
print("请输入成绩:")
score = float(input())
if department_code not in department_scores:
department_scores[department_code] = {"name": DEPARTMENTS[department_code], "scores": {}}
department_scores[department_code]["scores"][project] = score
# 计算各院系总分
for department in department_scores.values():
total_score = 0
for project, score in department["scores"].items():
total_score += SCORE_RULES[project].get(score, 0)
department["total_score"] = total_score
# 按总分排名
ranked_departments = sorted(department_scores.values(), key=lambda x: x["total_score"], reverse=True)
print("按总分排名:")
for i, department in enumerate(ranked_departments):
print(f"{i+1}. {department['name']}: {department['total_score']}分")
# 按单个项目排名
print("按单个项目排名:")
while True:
print("请输入项目编号(50m、100m、200m、400m、1500m、high_jump、long_jump、shot_put), 或输入q退出:")
project = input()
if project == "q":
break
if project not in SCORE_RULES:
print("无效的项目编号,请重新输入!")
continue
ranked_departments = sorted(department_scores.values(), key=lambda x: SCORE_RULES[project].get(x["scores"].get(project, 0), 0), reverse=True)
print(f"按{project}排名:")
for i, department in enumerate(ranked_departments):
print(f"{i+1}. {department['name']}: {SCORE_RULES[project].get(department['scores'].get(project, 0), 0)}分")
# 按男女分别排名
male_scores = {department_code: {"name": department_name, "scores": {}} for department_code, department_name in DEPARTMENTS.items()}
female_scores = {department_code: {"name": department_name, "scores": {}} for department_code, department_name in DEPARTMENTS.items()}
for department_code, department in department_scores.items():
for project, score in department["scores"].items():
if project in ["50m", "100m", "200m", "400m"]:
male_scores[department_code]["scores"][project] = score
else:
female_scores[department_code]["scores"][project] = score
male_scores[department_code]["total_score"] = sum([SCORE_RULES[project].get(score, 0) for project, score in male_scores[department_code]["scores"].items()])
female_scores[department_code]["total_score"] = sum([SCORE_RULES[project].get(score, 0) for project, score in female_scores[department_code]["scores"].items()])
print("按男子总分排名:")
ranked_departments = sorted(male_scores.values(), key=lambda x: x["total_score"], reverse=True)
for i, department in enumerate(ranked_departments):
print(f"{i+1}. {department['name']}: {department['total_score']}分")
print("按女子总分排名:")
ranked_departments = sorted(female_scores.values(), key=lambda x: x["total_score"], reverse=True)
for i, department in enumerate(ranked_departments):
print(f"{i+1}. {department['name']}: {department['total_score']}分")
# 按项目查询各院系成绩和得分
while True:
print("请输入项目编号(50m、100m、200m、400m、1500m、high_jump、long_jump、shot_put), 或输入q退出:")
project = input()
if project == "q":
break
if project not in SCORE_RULES:
print("无效的项目编号,请重新输入!")
continue
print(f"按{project}排名:")
for department_code, department in department_scores.items():
score = department["scores"].get(project, 0)
print(f"{department['name']}: {score}分(得分:{SCORE_RULES[project].get(score, 0)}分)")
# 退出系统
print("谢谢使用!")
```
注意,以上代码只是一个简单的示例,实际情况下可能需要根据具体需求进行修改和完善。