- 帖子
- 2
- 精华
- 0
- 积分
- 6
- 阅读权限
- 10
- 注册时间
- 2018-3-27
- 最后登录
- 2018-3-27
|
本帖最后由 Hey_Python 于 2018-3-27 14:40 编辑
crossin老师,你好。我是萌新一个。按照老师说的去打41课的。用的是python3,但是每次我用同一个名字去玩,都没有之前记录,在文档里面又新开了一个相同的名字了。求解~~
from random import randint
name = input('请输入你的名字:') #输入玩家名字
f = open('game.txt')
lines = f.readlines()
f.close()
scores = {} #初始化一个空字典
for l in lines:
s = l.split() #把每一行的数据拆分成list
scores[s[0]] = s[1:] #第一项作为key,剩下的作为value
score = scores.get('name') #查找当前玩家的数据
if score is None: #如果没有找到,
score = [0,0,0] #初始化数据
game_times=int(score[0])
min_times = int(score[1])
total_times = int(score[2])
if game_times > 0:
avg_times = float(total_times) / game_times
else:
avg_times = 0
print(('你已经玩了%d次,最少%d轮猜出答案,平均%.2f轮猜出答案') % (game_times, min_times, avg_times))
num = randint(1,100)
times = 0 #记录本次游戏轮数
print('Guess what I think?')
bingo = False
while bingo == False:
times += 1 #轮数+1
answer = int(input())
if answer < num:
print('too small!')
if answer > num:
print('too big!')
if answer == num:
print('BINGO')
bingo = True
#如果是第一次玩,或者轮数比最小轮数少,则更新最小轮数
if game_times == 0 or times < min_times:
min_times = times
total_times += times #总游戏轮数增加
game_times += 1 #游戏次数增加
#把成绩更新到对应的玩家数据中
#加str转成字符串,为后面的格式化作准备
scores[name] = [str(game_times), str(min_times), str(total_times)]
result = ' ' #格式化一个空字符串,用来存储数据
for n in scores:
#把成绩按照"name game_times min_times total_times"格式化
#结尾要加上/n换行
line = n + ' ' + ' '.join(scores[n]) + '/n'
result += line #添加到result中
f = open('game.txt', 'w')
f.write(result)
f.close()
==============================================
0 0 0/nhey 1 7 7/n/nhey 1 8 8/n/nhey 1 6 6/n
文档里面的数据 |
|