问题在于,即使输入与整数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")
答案 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")