即使变量匹配,while循环也不会停止

时间:2020-09-20 07:33:18

标签: python

问题在于,即使输入与整数secret_word相同,并且我尝试将其转换为整数,循环也不会停止。

import random

a = [*range(0, 21)]
secret_word = random.choice(a)
print(secret_word)
guess_count = 0
guess_limit = 5
out_of_guesses = False
guess = ""

while guess != secret_word and not out_of_guesses:
    if guess_count < guess_limit:
        guess = input("Vilket nummer väljer du 0 - 20 ")
        guess_count += 1
        try:
            int(guess)
        except ValueError:
            print("Ett fucing number dumbass")
    else:
        out_of_guesses = True

if out_of_guesses:
    print("Inga fler gissningar")
else:
    print("DAMN DU VANN")

4 个答案:

答案 0 :(得分:3)

您正确地确定循环不会停止,因为guess是一个字符串,而secret_word是一个整数,因此guess != secret_word始终为true,并尝试转换{{1} }转换为整数。

但是guess不会更改int(guess)的值,它会创建一个新值。

如果要将guess更改为具有此新值,则需要重新分配它:

guess

答案 1 :(得分:1)

简短答案:

int(guess)更改为guess = int(guess)

详细答案:

似乎在您使用int(guess)的行中,您假定它将guess的值更改为已解析的int。事实是int()是一个返回已解析值的函数,它不会更改存储在guess中的值。因此,如果您需要在调用guess之后将返回的int值重新设置为int()

答案 2 :(得分:0)

输入被视为字符串,而不是整数。只要做:

guess = int(input("Vilket nummer väljer du 0 - 20 "))

编辑:也将其移入try循环。

try:
  guess = int(input("Vilket nummer väljer du 0 - 20 "))
  guess_count += 1
except ValueError:
  print("Ett fucing number dumbass")

答案 3 :(得分:0)

您可以稍微重构程序。变量越少,出错的可能性就越小。

import random

secret_word = random.choice(range(21))
print(secret_word)
guess_count = 5

while guess_count > 0:
    try:
        guess = int(input("Vilket nummer väljer du 0 - 20 "))
        if guess == secret_word:
            break
    except ValueError:
        print("Ett fucing number dumbass")
    guess_count -= 1

if guess_count == 0:
    print("Inga fler gissningar")
else:
    print("DAMN DU VANN")