为什么我的内循环永远不会在我的猜数游戏中完成?

时间:2018-03-30 18:15:01

标签: python

当我尝试猜测随机生成的数字时,正确的猜测永远不会正确,因此内部循环永远不会完成。我已尝试使用print语句进行调试。

from random import randint

print('Welcome to the Number Guessing Game (Numbers 1 - 1000).')

while True:
    tries = 0
    random_num = randint(1, 10)
    print(random_num)
    guess = input('guess my number, human: ')

    while random_num is not guess:
        guess = input('Try again: ')
        print(guess)
        tries += 1

    print('Correct!' + ' It took you' + str(tries) + ' tries.')

2 个答案:

答案 0 :(得分:1)

首先,您必须将guess变量转换为整数。输入只返回字符串,字符串不能等于整数。

你的程序的第二个问题是isis not关键字检查,两个“变量”(在Python中,变量只是对象的引用)是否指向相同的对象。

即使您的猜测是正确的,也可能不是这种情况(即使它们具有相同的值,它们也是不同的对象)。有时这不是问题,因为Python会将“变量”指向同一个对象以提高效率。但你不能确定,可以吗!

请检查:Why does comparing strings in Python using either '==' or 'is' sometimes produce a different result?

无论如何,在类似情况下最好使用==!=运算符,第二个问题将会消失。

答案 1 :(得分:1)

输入错误...

为答案添加更多调试代码

print('random_num',random_num, type(random_num))
print('guess', guess, type(guess))

输出

Welcome to the Number Guessing Game (Numbers 1 - 1000).
random_num 2 <class 'int'>
guess my number, human: 2
guess 2 <class 'str'>

修正:

while random_num is not int(guess):