首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个python程序的外部循环错误会中断,而对于类似的程序却没有呢?

为什么这个python程序的外部循环错误会中断,而对于类似的程序却没有呢?
EN

Stack Overflow用户
提问于 2016-08-24 20:53:58
回答 2查看 127关注 0票数 1

我对编码和堆栈交换很陌生。请原谅任何错误的格式问题(欢迎更正)。我的问题是这个。我正在做"Python速成班“的练习7-4。我有两个程序在格式和输出方面非常相似。city_visits是作者给出的例子,并没有导致“中断外部循环”错误。但是,Pizza_toppings会导致“中断外部循环”错误。谁能解释一下导致一个错误而不是另一个错误的区别是什么?谢谢你的帮助!

Pizza_toppings.py

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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() + "!"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-24 21:29:04

在Python中,循环和if/else块的范围完全由缩进决定,所以如果缩进混乱了--就像代码中的情况一样--它会产生奇怪的结果,或者如果在意外的上下文中使用break这样的元素,它就会产生奇怪的结果,或者根本不会编译。

在这两个示例中,您的代码应该缩进如下:

代码语言:javascript
运行
复制
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)。此外,不要混合制表符和空格,否则你的缩进在你的编辑器中可能看起来是正确的,但在现实中却是完全混乱的。

票数 1
EN

Stack Overflow用户

发布于 2016-08-24 21:15:00

在Python中缩进是严格的。这是:

代码语言:javascript
运行
复制
if topping == "quit":
 break

应该是这样:

代码语言:javascript
运行
复制
if topping == "quit":
    break

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39132847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档