在 Python 中为循环转换整数 - 循环忽略函数值?
Converting integers for loop in Python - Loop ignores function value?
我正在玩猜数字游戏,但在使用函数时似乎无法让我的循环工作。我在块中的每个 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
欢迎任何意见。我在这里浏览了一下,对如何实现这一点有了更好的了解,或者我是这么想的,现在我要问了。第一次发帖!
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:
...
不要混淆职责。 myNum
既是数字又是错误信息是错误的。
另外,想一想当用户输入非数字时您想做什么。在您的情况下,用户的猜测是 "That's not a number I know, try again."
,并且正在与 pcNum
进行比较;这是没有意义的。如果是我,我会希望用户再次输入号码。所以我想要 input_valid_integer
:
而不是 checkNum
def input_valid_integer():
result = None
while result is None:
text = raw_input()
try:
result = int(text)
except ValueError:
print 'That\'s not a number I know, try again.'
return result
我正在玩猜数字游戏,但在使用函数时似乎无法让我的循环工作。我在块中的每个 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
欢迎任何意见。我在这里浏览了一下,对如何实现这一点有了更好的了解,或者我是这么想的,现在我要问了。第一次发帖!
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:
...
不要混淆职责。 myNum
既是数字又是错误信息是错误的。
另外,想一想当用户输入非数字时您想做什么。在您的情况下,用户的猜测是 "That's not a number I know, try again."
,并且正在与 pcNum
进行比较;这是没有意义的。如果是我,我会希望用户再次输入号码。所以我想要 input_valid_integer
:
checkNum
def input_valid_integer():
result = None
while result is None:
text = raw_input()
try:
result = int(text)
except ValueError:
print 'That\'s not a number I know, try again.'
return result