Crossin的编程教室

标题: 这是什么错误,怎么改!!! [打印本页]

作者: 落梦    时间: 2019-12-18 22:27
标题: 这是什么错误,怎么改!!!
python基础41课!!

用文件保存游戏3.png (216.28 KB, 下载次数: 435)

用文件保存游戏3.png


作者: crossin先生    时间: 2019-12-19 15:23
12行
score = [0,0,0]

这里是需要一个列表,所以是中括号
大括号就变成集合了,是没法索引取值的
作者: 落梦    时间: 2019-12-19 22:32
from random import randint
name = input('请输入你的名字:')#输入玩家名字
f =open('D:\py\游戏.txt')
lines = f.readlines()
f.close()
scores = {}
for l in lines:
    s = l.split()
    scores[s[0]]= s[1:]
    score = scores.get(name)
    if score is None:
        score =[0,0,0]
game_times =int(score[0])
min_times =int(score[1])
tatal_times =int(score[2])
if game_times > 0:
    avg_times = float(tatal_times)/game_times
else:
    avg_times =0
print(' %s  你已经玩了%d次,最少%d轮猜出答案,平均%.2f轮猜出答案' % (name,game_times, min_times, avg_times))
num=randint(0,100)
times = 0     #记录本次游戏轮数
print ('guess what i think?')
bingo=False
while bingo==False:
    times +=1   #记录游戏轮数
    answer=eval(input())
    if answer>num:
        print ('too big.')
    if answer<num:
        print ('too small')
    if answer==num:
        print ('bingo.')
        bingo=True
f.close()
if game_times ==0 or times < min_times:
    min_times = times
tatal_times +=times
game_times +=1
scores[name] = [str(game_times),str(min_times),str(tatal_times)]
result = ''
for n in scores:
    line = n + ''+  ''.join(scores[n]) + '\n'
    result +=line
f = open('D:\py\游戏.txt','w')
f.write(result)
f.close()


老师,能解释下为什么跑成这样么? 练习1.png 练习2.png
作者: 落梦    时间: 2019-12-19 22:35
六次猜对结果
作者: crossin先生    时间: 2019-12-20 16:12
落梦 发表于 2019-12-19 22:35
六次猜对结果

line = n + ' '+  ' '.join(scores[n]) + '\n'
这句里是空格,不是空字符。所以你的结果都连到一起了,没有空格了
作者: 落梦    时间: 2019-12-20 21:59
嗯嗯,谢谢




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5