在 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