用文件保存游戏
from random import randint
name = input('请输入你的名字:') #输入玩家名字
f = open('011.txt') #打开文件011.txt,读取文件中的成绩数据
lines = f.readlines() #把内容按行读取,存入lines的列表中
f.close()
scores = {} #初始化一个叫scores的字典
for i in lines: #将多行列表lines中的数据赋值给i
s = i.split() #把每一行的数据切割,得到新的列表s
scores[s[0]] = s[1:] #将第一项作为key,第二项开始作为value
score = scores.get(name) #查找当前玩家(name)的数据
if score is None: #如果没有找到(返回值是None)
score = [0, 0, 0] #新建一个数据score
game_times = int(score[0]) #score中的第一个元素定义为game_times(游戏次数)
min_times = int(score[1]) #score中的第二个元素定义为min_times(最少次数)
total_times = int(score[2]) #score中的第三个元素定义为total_times(总次数)
if game_times > 0:
avg_times = float(total_times) / game_times #平均次数
else:
avg_times = 0
print ('%s, 你已经玩了%d次,最少%d次猜出答案,平均%.2f轮猜出答案。' %(name, game_times,min_times,avg_times))
num = randint(1,100)
times = 0
print ('Guess what I think?')
bingo = False
while bingo == False:
times += 1
answer = int(input())
if answer > num:
print ('Too Big!')
if answer < num:
print ('Too small!')
if answer == num:
print ('Bingo!!!')
bingo = True
if game_times == 0 or times <min_times:
min_times = times
total_times += times
game_times += 1
scores[name] = [str(game_times), str(min_times), str(total_times)] #把成绩更新到对应玩家的数据中。。加str转换成字符串,为后面格式化做准备
result = '' #初始化一个空字符串,用来存储数据
for n in scores:
line = n + ' ' + ' '.join(scores[n]) + '\n' #把成绩按照“name game_times min_times total_times”格式化。。。结尾加上\n换行
result += line #添加到result中
f = open('011.txt', 'w')
f.write(result)
f.close()