Python学习笔记(2018。01.24)

用文件保存游戏

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值