2011-08-01 92 views
21

讓我首先說我完全是編程新手。我剛剛拿起Python,它始終把我踢在頭上,一個反覆出現的錯誤 - 「預計縮進塊」 現在,我知道還有其他幾個線程來解決這個問題,我看了很多但是,他們甚至檢查我的縮進並沒有給我更好的結果。我用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

你能編輯印刷你的帖子並給我們提供原始錯誤信息w /行號請:-) – 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

這一個是錯誤的:

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

elif option == 2:開始,你縮進一個時間太多了。在一個體面的文本編輯器中,您應該能夠突出顯示這些行並按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應該與第二個if option == 1對齊,而不是與for對齊。

  2. for x in range(x, 1, 1):缺少身體。

  3. 由於「選項1(計數)」需要第二個輸入,所以需要第二次調用input()。然而,爲了理智,我敦促您將結果存儲在第二個變量中,而不是重新調整option

  4. 您的代碼的第一行中的比較可能是一項任務。

一旦你可以運行你的代碼你會發現更多的問題(你需要一對夫婦更input()來電,來電range()一個需要注意等)。

最後,請不要使用相同的變量作爲循環變量和作爲初始/終端狀態的一部分,如:

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

它可以工作,但它是非常混亂閱讀。給循環變量不同的名稱:

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

..... intendation事項,如:

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

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

print("all the best") 

在這種情況下,「一路走好」,將缺少其中任何一項都可以打印條件執行,但如果它會一直這樣

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

然後「一切順利」將僅在== 2