在这个特定的代码中中断(或停止)一个循环-Python

在这个特定的代码中中断(或停止)一个循环-Python,python,while-loop,break,Python,While Loop,Break,我试图创建一个“end”变量,该变量应该会中断(或停止),但它显然不起作用 我作业中的问题是: 修改上面的程序,只给用户5次猜测。如果猜测超过5次,用户应该得到以下消息:(在代码中) 第一个代码工作得很好,但在这个代码中,while循环只是重复 # Welcome message print("Welcome to the Magic Ball!") # The magic number answer = 7 # Prepares "end" variable end = False #

我试图创建一个“end”变量,该变量应该会中断(或停止),但它显然不起作用

我作业中的问题是:

修改上面的程序,只给用户5次猜测。如果猜测超过5次,用户应该得到以下消息:(在代码中)

第一个代码工作得很好,但在这个代码中,
while
循环只是重复

# Welcome message
print("Welcome to the Magic Ball!")

# The magic number
answer = 7

# Prepares "end" variable
end = False

# Take guess
guess = int(input("\nYour guess: "))

# While loop

# While guess NOT EQUAL to ANSWER, re-ask
# And add whever too high or too low
# Used a boolean to tell the program when to stop the loop
while guess != answer or end == True:
    for guess in range(1, 5, +1): # For loops limits ammount of guesses
        guess = int(input("\nYour guess: "))
    if guess > answer:
        print("\nToo high")
    elif guess < answer:
        print("\nToo low")
    # If still not completed, print "max chances"
    print("You have gotten to your maximum answers")
    # This ends the loop so it stops going around
    end = True

# If loop passed, tell the user it's correct
# After printing "max chances", the Python will print this out,
# So make sure the answers match
if guess == answer:
    print("\nWell done")
欢迎留言 打印(“欢迎来到魔术球!”) #幻数 答案=7 #准备“结束”变量 结束=错误 #猜猜看 guess=int(输入(“\n您的猜测:”) #While循环 #猜测不等于回答,重新提问 #无论是过高还是过低,都要加进去 #使用布尔值告诉程序何时停止循环 猜猜看!=回答或结束==真: 对于范围(1,5,+1)内的猜测:#对于循环限制了猜测的数量 guess=int(输入(“\n您的猜测:”) 如果猜测>回答: 打印(“\n过高”) elif guess<答案: 打印(“\n过低”) #如果仍未完成,请打印“最大机会” 打印(“您已获得最大答案”) #这将结束循环,使其停止循环 结束=真 #如果循环通过,告诉用户它是正确的 #在打印“max chances”之后,Python将打印出, #所以要确保答案匹配 如果猜测==答案: 打印(“\n全部完成”)
在while循环中有一个for循环,这是多余的。你应该选一个或另一个。如果想在猜到正确答案时停止循环,只需将If语句(当前位于最末端)移动到循环中即可


此外,您的range()中不需要“+1”,因为1是默认值。

第一个问题是while循环中的逻辑错误

应该是:

while guess != answer and not end:
下一个问题是,您的
for
循环正在循环询问4个答案,但它从不打印提示,因为这些打印语句的缩进太低

此外,您可能根本不希望在while循环中使用for循环,只需选择一种或另一种类型的循环即可。如果使用while循环,则需要一个计数器来跟踪猜测的次数

另一个突出的问题是,您正在使用
guess
作为for循环迭代器,但随后您将使用用户的输入重置它。这太糟糕了

下面是使用for循环的代码,这可能是最好使用的循环类型,因为它消除了在while循环中增加计数器变量的需要

# Welcome message
print("Welcome to the Magic Ball!")

# The magic number
answer = 7

for _ in range(5):
    guess = int(input("\nYour guess: "))
    if guess == answer:
        break
    elif guess > answer:
        print("Too high")
    elif guess < answer:
        print("Too low")
if guess == answer:
    print("Well done!")
else:
    print("You have used all your guesses")
print("The answer was {}".format(answer))
欢迎留言 打印(“欢迎来到魔术球!”) #幻数 答案=7 对于范围(5)内的uu: guess=int(输入(“\n您的猜测:”) 如果猜测==答案: 打破 elif guess>答案: 打印(“太高”) elif guess<答案: 打印(“太低”) 如果猜测==答案: 打印(“做得好!”) 其他: 打印(“您已经使用了所有猜测”) 打印(“答案是{}”。格式(答案))
您使用的是两个循环而不是一个循环-要么只使用for循环,要么实际使用while循环

这里有一种可能性(仅使用while循环,我也没有对此进行测试):

#猜测不等于回答,重新提问
#无论是过高还是过低,都要加进去
#使用布尔值告诉程序何时停止循环
尝试=1
而(非猜测==答案)和(非尝试==5):
guess=int(输入(“\n您的猜测:”)
如果猜测>回答:
打印(“\n过高”)
elif guess<答案:
打印(“\n过低”)
其他:
尝试次数+=1
如果尝试==5:
打印(“您已获得最大答案”)

在猜测时仔细查看
再次回答或结束==True
条件。(这不是你的问题,但只是一个提示,不要使用==等等式运算符来比较布尔值。只需简单地测试它们,如
而end
)@grayshirt,但循环继续这只是一个逻辑错误。分解条件测试的内容,何时通过,何时失败,看看它与您的预期有何不同。在用户输入的第一个猜测(值)中,“结束”的值将是真实的。如果我想在另一个条件测试中包含“结束”的值呢?您的作业是否出于某种原因要求您这样做?否则就没有意义了。我不认为这需要什么,但目前我正在为我的普通中等教育证书学习Python,所以,我必须证明我能做到最好,尽管我试图做到不可能的事情
# While guess NOT EQUAL to ANSWER, re-ask
# And add whever too high or too low
# Used a boolean to tell the program when to stop the loop
tries = 1
while (not guess == answer) and (not tries == 5):
    guess = int(input("\nYour guess: "))
    if guess > answer:
        print("\nToo high")
    elif guess < answer:
        print("\nToo low")
    else:
        tries += 1
    if tries == 5:
        print("You have gotten to your maximum answers")