设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 13806|回复: 2
打印 上一主题 下一主题

新人求助!!关于第40课 用文件保存游戏我卡死在一个地方

[复制链接]

2

主题

0

好友

30

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2019-3-7 21:19:43 |只看该作者 |倒序浏览
程序如下所示
from random import randint

f=file('game.txt')
lines=f.readlines()
f.close()
scores={}
who=['']
i=0
for line in lines:
    data=line.split()
    scores[data[0]]=data[1:]
    who[i]=data[0]#记录已参加游戏的玩家的姓名
    i+=1
name=raw_input('请输入您的名字:')
for j in range(i):
    if name==who[j]:
        print '欢迎%s回到游戏'%name
        score=scores.get(name)#查找当前玩家数据
        break
    else:
        if j==i-1:
            print'欢迎新玩家%s来到游戏'%name
            score=[0,0,0]
        else:
            continue

game_times=int(score[0])
min_times=int(score[1])
total_times=int(score[2])
if game_times==0:
    avg_times=0
else:
    avg_times=float(total_times/game_times)
print'%s,你已经玩了%d次,最少%d轮猜出答案,平均%2.f轮猜出答案'%(name,game_times,min_times,avg_times)

def equal(num1,num2):
    if num1<num2:
        print'It is to small!'
        bingo=False
    elif num1>num2:
        print'It is to big!'
        bingo=False
    elif num1==num2:
        print'BINGO!'
        bingo=True

s=1
while s==1:
    num=randint(1,100)
    print'Guess what I think?'
    bingo=False
    t=0
    g=0
    m=0
    while bingo==False:
        answer=input()
        equal(answer,num)
        t+=1
        m+=1
    print'是否想退出游戏,yes输入0,no输入1'
    s=input()
    g+=1
    game_times+=g
    total_times+=t
    avg_times=float(total_times/game_times)
    if m<min_times:
        min_times=m

scores[name]=[str(game_times),str(min_times),str(total_times)]
result=''
for n in scores:
    line=n+''+''.join(scores[n])+'\n'
    result+=line
output=file('game.txt','w')
f.write(game)
f.close()

我一直卡死的地方在while s==1那个循环里面 部分结果截图如下:

请输入您的名字:zhaoxu
欢迎新玩家zhaoxu来到游戏
zhaoxu,你已经玩了0次,最少0轮猜出答案,平均 0轮猜出答案
Guess what I think?
50
It is to big!
40
It is to big!
30
It is to big!
20
BINGO!
20
BINGO!
20
BINGO!
20
BINGO!

为什么我猜对了不能跳到 print'是否想退出游戏,yes输入0,no输入1' 这里,而且电脑的随机num也没发生变化 求助
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2019-3-8 11:24:33 |只看该作者
变量的作用域了解一下,课程里有的
你这里函数中的bingo并不是外面的bingo,它们是两个变量
你得把函数里的bingo改成return
并在外面用 bingo = equal(answer,num)

不然你外面的bingo值始终没有变过
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

30

积分

新手上路

Rank: 1

板凳
发表于 2019-3-9 16:30:50 |只看该作者
crossin先生 发表于 2019-3-8 11:24
变量的作用域了解一下,课程里有的
你这里函数中的bingo并不是外面的bingo,它们是两个变量
你得把函数里的 ...

太感谢了 问题解决了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 12:55 , Processed in 0.022516 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部