2016-08-24 11 views
1

私はコーディングとスタック交換が初めてです。書式設定の問題に関しては、いかなる誤りも許してください(訂正は歓迎されます)。私の質問はこれです。私は "Python Crash Course"でエクササイズ7-4をしています。私はフォーマットと出力に関して非常に似ている2つのプログラムを持っています。 city_visitsは著者が提示した例であり、 "outside outside loop"エラーには導かれませんでした。しかし、Pizza_toppingsは "outside outside loop"エラーを引き起こします。だれかがその違いが何かを説明してくれるのであれば、それは一つのエラーにつながり、他のエラーは起こらないだろうか?助けてくれてありがとう!なぜこのPythonプログラムでループ外エラーが発生しますが、似たようなプログラムでは発生しませんか?

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() + "!" 
+5

あなたのインデントが乱れています。 – BrenBarn

+1

*これは狂気です... *これはPYTHONです! –

答えて

1

ループの範囲とif/elseブロックはインデントによってのみ決定されるため、インデントがうまくいけば - あなたのコードのように見える - それは奇妙な結果を生むか、コンパイルしませんbreakのような特定の要素が予期しない文脈で使用される場合は全くありません。

あなたのコードは、いずれの例では、次のようにインデントする必要があります。

while True: 
    city = raw_input(prompt) 

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

cityif、およびelsewhileより(a)は、さらにインデントすべてであり、(b)は、正確に同じことをインデントする方法量。 どのようにあなたはインデントがあまり重要ではありませんが、良い練習は4 spaces per level of indentation (although some prefer 1 tab)を指示します。また、タブとスペースを混ぜて使用しないでください。は、がエディタで正しく表示されますが、実際は完全に混乱している可能性があります。

0

インデントは、Pythonに厳密です。これは:

if topping == "quit": 
break 

これを次のようになります。

if topping == "quit": 
    break 

非常に微妙な、しかし、Pythonで非常に重要。

+0

インデントが問題ですが、この部分は問題ありません(または無関係です)。 –

関連する問題