2011-08-01 14 views
21

私は完全にプログラミングが初めてだと言って始めましょう。私はちょうど最近Pythonを拾いました。そして、一貫して、1つの繰り返しエラーで私を蹴ってきました。 - "インデントブロックを期待しました" 今、私はこの問題に取り組んでいるいくつかのスレッドがあることを知っています。しかし、私のインデントをチェックしても、より良い結果が得られませんでした。私はすべてのインデントを4つのスペースに置き換え、コードを何度も書き直しました。私は例として得たこのカウンター割当を投稿します。Pythonは "字下げブロックが期待されています"

option == 1 
while option != 0: 
    print "MENU" 
    option = input() 
    print "please make a selection" 
    print "1. count" 
    print "0. quit" 
    if option == 1: 
     while option != 0: 
      print "1. count up" 
      print "2. count down" 
      print "0. go back" 
      if option == 1: 
       print "please enter a number" 
       for x in range(1, x, 1): 
        print x 
       elif option == 2: 
        print "please enter a number" 
        for x in range(x, 1, 1): 
       elif option == 0: 
        break 
       else: 
        print "invalid command" 
    elif option == 0: 
     break 
+1

が編集できる場合にのみ、「すべての最高の」印刷されますあなたの投稿と私たちに生のエラーメッセージを与えてください:-) – Prydie

答えて

2

あなたforループには、ループ本体を持っていない:

elif option == 2: 
    print "please enter a number" 
    for x in range(x, 1, 1): 
elif option == 0: 

実際には、全体if option == 1:ブロックはインデントの問題を抱えています。 elif option == 2:ifと同じレベルにする必要があります。

1

あなたの最後のforステートメントには本文がありません。

Pythonはインデントされたブロックがfor、またはコロンの後に内容を持つ行に続くことを期待しています。

最初のスタイルはより一般的なので、インデントされたコードの後に​​続くと予想されます。同じインデントレベルでelifがあります。

1

この1つは、少なくとも間違っている:

  for x in range(x, 1, 1): 
     elif option == 0: 
13

elif option == 2:以降では、あまりにも多くの1時間をインデント。まともなテキストエディタでは、これらの行をハイライト表示し、Shift + Tabを押して問題を解決する必要があります。

さらに、for x in range(x, 1, 1):の後には声明がありません。インデントされたpassを挿入して、forループに何もしないでください。

また、最初の行にはoption == 1と書いてあります。 が左名前に正しい値を代入==平等のためのテストができますが、=を意味は、(単一等号)、すなわち

option = 1 
+2

vimは適切なエディタですが、キーストロークは '[Ctrl] - [<]'です(ビジュアルモードでは、ノーマルモードであらかじめモーションを追加してください) – SingleNegationElimination

+0

ありがとう!これは非常に役に立ちました。しかし、今私は私のプログラムを実行しようとすると、それは好きではない**オプション== 1 ** **オプション**は定義されていません – Zach

+0

@Zachあなたは 'option == 1'の代わりに' option = 1'最初の行では、あなたはしませんでしたか?答えを更新しました。 – phihag

2

いくつかの問題があります。

  1. elif option == 2:はと次のelif - elseは、forではなく、2番目のif option == 1と整列する必要があります。

  2. for x in range(x, 1, 1):には本文がありません。

  3. 「オプション1(カウント)」は2回目の入力が必要なため、2回目はinput()に電話する必要があります。しかし、正気のために、optionを再利用するのではなく、結果を第2の変数に格納することをお勧めします。

  4. コードの最初の行の比較は、おそらく割り当てであることを意味します。あなたのコードを実行することができます一度

あなたはより多くの問題を発見するでしょう(あなたは、などの注意が必要になりますカップルよりinput()呼び出し、range()呼び出しのいずれかが必要になります)。それが動作するかもしれ

  for x in range(1, x, 1): 
       print x 

が、非常に読み紛らわしいです:

最後に、のように、ループ変数として、端子/初期条件の一部として、同じ変数を使用しないでください。例えば、intendation事項..... pythonで

  for i in range(1, x, 1): 
       print i 
3

:ループ変数に別の名前を付ける

if a==1: 
    print("hey") 

if a==2: 
    print("bye") 

print("all the best") 

この場合、2つのいずれかの場合には印刷されます「すべてのベストを」条件が実行されますが、それは、この

if a==2: 
    print("bye") 
    print("all the best") 

ようにされているかどう==は2

関連する問題