在这个特定的代码中中断(或停止)一个循环-Python
我试图创建一个“end”变量,该变量应该会中断(或停止),但它显然不起作用 我作业中的问题是: 修改上面的程序,只给用户5次猜测。如果猜测超过5次,用户应该得到以下消息:(在代码中) 第一个代码工作得很好,但在这个代码中,在这个特定的代码中中断(或停止)一个循环-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 #
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")