Python:卡在while循环中

时间:2020-04-08 03:28:56

标签: python while-loop

我正在尝试创建一个猜谜游戏,在该游戏中,我有一个获取随机值的变量,然后是需要输入数字的while循环。这应该一直进行到我得到与随机生成的值相同的值,然后打印出包含我键入的所有数字的列表。由于某种原因,即使我得到相同的数字,循环也会不断进行。

到目前为止,这是我的代码:

import random

x = random.randint(1,10)
y = []
lst = []

while y != x:
    y = input('Your number:')
    lst.append(y)
    pass
print(lst)

谢谢!

4 个答案:

答案 0 :(得分:2)

问题是:input()返回一个字符串,因此您必须将其结果转换为整数。函数random.randint(1,10)返回一个整数,因此如果不将input()函数结果转换为整数,条件y != x始终为True。

import random

x = random.randint(1,10)
y = None
lst = []

while y != x:
    y = int(input('Your number:'))
    lst.append(y)        
print(lst)

答案 1 :(得分:1)

您需要先将x变量转换为字符串,然后再将其与While循环中的y变量进行比较。 这有效:(仅将str()转换添加到x变量中。)

import random

x = str(random.randint(1,10))
y = []
lst = []

while y != x:
    y = input('Your number:')
    lst.append(y)
    pass
print(lst)

答案 2 :(得分:0)

在您的代码中,x是整数,而y是字符串。您需要将用户的输入(是y)转换为int。只需对代码执行以下操作即可:

import random

x = random.randint(1,10)
y = []
lst = []

while y != x:
    y = int(input('Your number:'))
    lst.append(y)
    pass
print(lst)

答案 3 :(得分:0)

首先,您正在比较type:int和type:str。 “ ==”将始终为假。这是我如何执行您的程序

import random

x = random.randint(1,10)
y = []
lst = []

while True:
  y = int(input('Your number:'))
  print(x)
  print(y)

 if(x==y):
   break
 else :
  lst.append(y) 
print(lst)