为什么我会收到此 python 程序的中断外部循环错误,但不会收到类似程序的错误?

Why am I getting a break outside loop error for this python program but not for a similar program?

我是编码和 Stack Exchange 的新手。请原谅格式问题方面的任何错误(欢迎更正)。我的问题是这样的。我正在 "Python Crash Course" 做练习 7-4。我有两个在格式和输出方面非常相似的程序。 city_visits 是作者给出的示例,并没有导致 "break outside loop" 错误。但是 Pizza_toppings 会导致 "break outside loop" 错误。任何人都可以解释导致一个错误而不是另一个错误的区别是什么?谢谢您的帮助!

Pizza_toppings.py

prompt = "\nWelcome to Pizza by the sea!" 
prompt += "\nYou can add as manty toppings as you like! Just tell us!"
prompt += "\nWhen you are finished type 'quit'. Tell us what you want: "

while True:
topping = raw_input(prompt) 

if topping == "quit":
 break
else: 
    print "Adding " + topping + "." 

city_visits

prompt = "\nPlease enter the name of a city you have visited:"
prompt += "\n(Enter 'quit' when you are finished.)"

while True:  
city = raw_input(prompt)

if city == 'quit':
    break
else:
    print "I'd love to go to " + city.title() + "!"

Python 中的缩进很严格。这个:

if topping == "quit":
 break

应该是这样的:

if topping == "quit":
    break

非常微妙,但在 Python 中非常重要。

在 Python 中,循环和 if/else 块的范围完全由缩进决定,所以如果你的缩进搞砸了——就像你的代码中的情况一样——如果在意想不到的上下文中使用某些元素,如 break,它将产生奇怪的结果,或者根本无法编译。

你的代码,在这两个例子中,都应该像这样缩进:

while True:  
    city = raw_input(prompt)

    if city == 'quit':
        break
    else:
        print "I'd love to go to " + city.title() + "!"

请注意 cityifelse 是如何 (a) 比 while 进一步缩进的,以及 (b) 缩进了完全相同的量。 如何 缩进并不太重要,但良好的习惯决定了 4 spaces per level of indentation (although some prefer 1 tab)。另外,切勿混用制表符和空格,否则您的缩进可能在您的编辑器中看起来正确,但实际上完全是一团糟。