我正在研究一个数字猜谜游戏,并且在使用函数时似乎无法让我的循环工作。我在块中的每个if / elif下手动输入转换,但这很乏味,只检查整数 - 字符串输入无法读取和破坏系统。
我尝试创建转换函数来检查值并确定它是整数还是字符串并相应地更改变量类型。然而,这导致第18行的无限循环。
有人能指出我在这里做错了吗?
抬头,我确实有来自Python.org的random.py脚本,并且正在导入它,所以游戏每次都会有不同的表现。
from random import randint
print 'Hello, my name is Skynet. What\'s yours?'
myName = raw_input()
print 'Good to meet you, ' + myName + '! Let\'s play a game.'
print 'I\'m thinking of a number between between 1 and 20, can you guess it?'
pcNum = randint(1,20)
myNum = raw_input()
def checkNum(myNum):
try:
int(myNum)
except ValueError:
returnVAL = 'That\'s not a number I know, try again.'
else:
returnVAL = int(myNum)
return returnVAL
while myNum != pcNum:
if myNum > pcNum:
print 'That\'s too high! Try again.'
myNum = raw_input()
checkNum(myNum)
else:
print 'That\'s too low! Try again.'
myNum = raw_input()
checkNum(myNum)
if myNum == pcNum:
print 'Good job, my number was ' + str(pcNum) + ' too! Good job, ' + myName
任何输入都表示赞赏。我在这里做了一些浏览并且更好地了解了如何解决这个问题,或者我认为,现在我在这里问。第一篇文章!
答案 0 :(得分:0)
print "I'm thinking of a number between between 1 and 20, can you guess it?"
while True:
guess = raw_input("What's your guess? ")
try:
guess = int(guess, 10)
except ValueError:
print "That's not a number I know, try again."
continue
if guess == pcNum:
...
break
elif guess > pcNum:
...
else:
...
答案 1 :(得分:0)
不要混淆责任。 <{1}}既是数字也是错误信息是错误的。
另外,想一想当用户输入非数字时你想做什么。在您的情况下,用户的猜测是myNum
,并将其与"That's not a number I know, try again."
进行比较;这毫无意义。如果是我,我希望用户再次输入该号码。因此,而不是pcNum
,我想要checkNum
:
input_valid_integer