2012-04-20 106 views
11

下面是代碼:IndentationError預期的縮進塊

def myfirst_yoursecond(p,q): 

a = p.find(" ") 
b = q.find(" ") 
str_p = p[0:a] 
str_q = p[b+1:] 

if str_p == str_q: 
    result = True 
else: 
    result = False 
return result 

以下是錯誤:

Traceback (most recent call last): 
File "vm_main.py", line 26, in <module> 
import main 
File "/tmp/vmuser_ssgopfskde/main.py", line 22 
result = False 
^ 
IndentationError: expected an indented block 

這有什麼錯我的代碼?

回答

28

您混合了製表符和空格。這可能會導致一些令人困惑的錯誤。

我建議使用只有選項卡或只有壓痕的空間。

只使用空格通常是更容易的選擇。大多數編輯器都有自動將製表符轉換爲空格的選項。如果您的編輯器有此選項,請將其打開。


另外,您的代碼比需要的更冗長。取而代之的是:

if str_p == str_q: 
    result = True 
else: 
    result = False 
return result 

只是這樣做:

return str_p == str_q 

也似乎對這一行的錯誤:

str_q = p[b+1:] 

我將離開你找出什麼錯誤是。

+0

謝謝!有用! Python不支持這兩種縮進。這聽起來很奇怪。 – Sam 2012-04-20 00:49:17

+0

它實際上支持8-space選項卡,但是堅持使用空格會更好,尤其是當您的代碼在編輯器和系統之間移動時(您應該期待它。) – zigg 2012-04-20 00:56:04

+0

對不起。我已將其更改爲q [b + 1:]。你真的很樂意幫助我。 – Sam 2012-04-20 01:27:26

0

您應該安裝支持Python語法的編輯器(或IDE)。它可以突出顯示源代碼並進行基本格式檢查。例如:Eric4,Spyder,Ninjia或Emacs,Vi。

+0

我在windows中使用Pyscripter。因爲我必須在Windows中做其他工作,儘管我真的很喜歡使用linux。 – Sam 2012-04-20 01:33:22

1

如果你使用的是一個mac和崇高的文本3,這就是你所做的。

轉到您的/Packages/User/並創建一個名爲Python.sublime-settings的文件。

如果您使用的是mac os x,通常/Packages/User位於您的~/Library/Application Support/Sublime Text 3/Packages/User/Python.sublime-settings之內。

然後你把這個放在Python.sublime-settings

{ 
    "tab_size": 4, 
    "translate_tabs_to_spaces": false 
} 

幸得馬克·拜爾的answersublime text 3 docspython style guide

這個答案主要是爲讀者誰有同樣的問題和這跌跌Mac OS X上使用的是崇高的文本3

6

,如果你在它有沒有語句塊也會出現此錯誤

例如:

def my_function(): 
    for i in range(1,10): 


def say_hello(): 
    return "hello" 

注意,for塊是空的。如果要測試模塊中的其餘代碼,則可以使用pass語句。

+1

我正在尋找類似於bash的':'聲明的陳述,不容易爲此制定搜索詞;馬上來到這裏,你的回答脫穎而出,提到了我不知道的傳球。因此,一個。謝謝。 – Roadowl 2015-06-29 20:45:16

0

我得到了同樣的錯誤,這是我做了什麼來解決這個問題。

縮進之前:

enter image description here

縮進錯誤:預期的縮進塊。

後縮進:

enter image description here

做工精細。 TAB空間後。

相關問題