设计Python程序,首先在D盘根目录下创建一个以自己学号姓名命名的文件夹,然后完成教材第8章“体育竞技分析”实例,在教材实现功能的基础上,再定义一个函数SaveSummary(),功能是把每次程序运行结果追加写入自己文件夹中的文件summary.txt中,每次写入的内容包括各选手的能力值,模拟比赛的总场次及各选手赢得的场次数和占比。(要求程序交互友好、足够强壮)
时间: 2024-02-10 19:10:32 浏览: 64
好的,这个需求可以用Python的os和shutil模块来完成文件夹的创建和重命名,以及实现第8章的体育竞技分析功能,最后用文件操作函数实现SaveSummary()的功能。
下面是实现过程:
```python
import os
import shutil
import random
def create_folder():
# 获取学号和姓名,用来命名文件夹
student_id = input("请输入你的学号:")
student_name = input("请输入你的姓名:")
# 创建文件夹并重命名
folder_name = student_id + "_" + student_name
folder_path = os.path.join("D:\\", folder_name)
os.mkdir(folder_path)
print("文件夹创建成功!")
return folder_path
def sports_analysis():
# 定义选手的能力值
player_ability = {"player1": 9, "player2": 8, "player3": 7, "player4": 6, "player5": 5}
# 体育竞技分析
total_game_count = 0
win_count = {"player1": 0, "player2": 0, "player3": 0, "player4": 0, "player5": 0}
for i in range(1, 11):
# 模拟比赛
player_list = list(player_ability.keys())
random.shuffle(player_list)
winner = player_list[0]
# 统计结果
total_game_count += 1
win_count[winner] += 1
# 输出结果
print("模拟比赛总场次为:", total_game_count)
for player, count in win_count.items():
win_rate = count / total_game_count
print(player, "获胜场次为:", count, "胜率为:", win_rate)
return player_ability, total_game_count, win_count
def save_summary(folder_path, player_ability, total_game_count, win_count):
# 打开或创建summary.txt文件
summary_path = os.path.join(folder_path, "summary.txt")
file = open(summary_path, "a+", encoding="utf-8")
# 写入内容
file.write("选手能力值:\n")
for player, ability in player_ability.items():
file.write(player + ": " + str(ability) + "\n")
file.write("模拟比赛总场次为:" + str(total_game_count) + "\n")
file.write("各选手获胜场次和胜率:\n")
for player, count in win_count.items():
win_rate = count / total_game_count
file.write(player + ": 获胜场次为" + str(count) + ",胜率为" + str(win_rate) + "\n")
# 关闭文件
file.close()
print("结果已保存到文件中!")
if __name__ == "__main__":
# 创建文件夹
folder_path = create_folder()
# 进行体育竞技分析
player_ability, total_game_count, win_count = sports_analysis()
# 保存分析结果到文件中
save_summary(folder_path, player_ability, total_game_count, win_count)
```
在运行程序时,会先要求输入学号和姓名,然后自动在D盘根目录下创建以学号和姓名命名的文件夹。然后进行体育竞技分析,并将结果保存到文件夹中的summary.txt文件中。
注意,这里的文件操作函数save_summary()使用了文件追加模式("a+"),可以在每次运行程序时把结果追加写入文件中,而不是覆盖原来的内容。
希望这个程序能够满足你的需求,有任何问题欢迎随时询问!
阅读全文