Python简单循环无法按预期工作



我只是不明白为什么它不起作用,以及我需要做些什么来修复它。目标是制作一个计数游戏,所以我有任何提示,一个重启按钮也会很棒。没有错误,我只是没有退出第一个循环。

import random
secrectnumber = random.randint(1,100)
nummberguess = 5 
print("guess a Number between 1 and 100")
number = False     
wrongguess = True

while wrongguess and nummberguess>0:
guess=input()
print( "writte a number")
if guess.isdigit():
guess=int(guess)
number = True
wrongguess = False
else:
print("invalid input")

while number:  
nummberguess=nummberguess-1
if guess== secrectnumber:
print("you did it") 
break
elif secrectnumber>guess:
print("the number is higeher")
wrongguess = True
elif secrectnumber<guess:
print("the number is lower")
wrongguess = True

根据您所写的内容,您的代码有两个错误:

  1. 如果输入不是数字,循环将永远运行。这是因为条件的第一部分,while wrongguess总是truenummberguess>0也总是真的,因为你没有递减/递增它。这应该怎么做?如果number_of_guess≥5,则终止?您需要添加一个计数器,以便在达到最大猜测次数或所需输出后实际终止第一个循环。
  2. 第二个while循环是多余的。如果号码不是预期的秘密号码,它将在guess中打印相同的号码

若要更正代码,代码的第二块应该在第一块中,而不是while循环。类似于以下内容:


import random
secrectnumber = random.randint(1,100)
nummberguess = 5 
print("guess a Number between 1 and 100")
number = False     
wrongguess = True

while wrongguess and nummberguess>0:
guess=input()
print( "writte a number")
if guess.isdigit(): 
# this won't work for input = 31, you need to iterate the string instead and check if all characters are digits, something like this:
# sum([x.isdigit() for x in str(guess)]) == len(guess) <-- Number, this won't work for floating point numbers because '3', '.', '1', '4' (3, 1, 4 is digit, but '.' isn't). Just something to think about
guess=int(guess)
number = True
wrongguess = False
else:
print("invalid input")

nummberguess -= 1
if guess== secrectnumber:
print("you did it") 
break
elif secrectnumber>guess:
print("the number is higeher")
wrongguess = True
elif secrectnumber<guess:
print("the number is lower")
wrongguess = True

它可以非常简单地完成:

import random
secrectnumber = random.randint(1, 100)
nummberguess = 5
print("guess a Number between 1 and 100")
for i in range(nummberguess):
guess = input()
if guess.isdigit():
guess = int(guess)
if guess == secrectnumber:
print("you did it")
break
elif secrectnumber > guess:
print("the number is higeher.", end="")
if i == nummberguess -1:
print(" Exhausted !!!")
else:
print(" Try again !!!")
elif secrectnumber < guess:
print("the number is lower.", end="")
if i == nummberguess -1:
print("Exhausted !!!")
else:
print("Try again !!!")

最新更新