2013-06-28 144 views
-1

請問,首先,是否有一個縮進正在被照顧的IDE?其次,我的代碼中有一個縮進錯誤。任何人都可以指出我的代碼中需要縮進的地方嗎?代碼中的Python縮進錯誤

p = [0.2,0.2,0.2,0.2,0.2] 

world = ['green','red','red','green','green'] 
z = 'red' 
pHit = 0.6 
pMiss = 0.2 
def sense(p, z): 
    q=[] 
    for i in range(len(p)): 
     hit = (z==world[i]) 
     q.append(p[i]*(hit*pHit + (1-hit)*pMiss)) 
     return q 

print sense(p,z) 
+0

的部分,您可以使用Python IDLE。 –

+0

幾乎所有IDE都會爲您處理縮進問題。 –

回答

0

return說法是不是在正確的地方。此外,​​,pMissworld變量應該在一個函數範圍定義:

def sense(p, z): 
    pHit = 0.6 
    pMiss = 0.2 
    world = ['green','red','red','green','green'] 

    q = [] 
    for i in range(len(p)): 
     hit = (z==world[i]) 
     q.append(p[i] * (hit * pHit + (1 - hit) * pMiss)) 
    return q 

p = [0.2,0.2,0.2,0.2,0.2] 
z = 'red' 
print sense(p,z) 
2
  1. 是該代碼的權利? (縮進)
  2. 您的return似乎不在正確的位置。
  3. 請!請!!請!!!按照PEP-8命名變量和編碼風格。
  4. 沒有,沒有IDE,可以瞭解你的心思,你猜你想在某個語句什麼縮進...

但是,你可以重新縮進您的代碼:

p = [0.2,0.2,0.2,0.2,0.2] 

world = ['green','red','red','green','green'] 
z = 'red' 
pHit = 0.6 
pMiss = 0.2 
def sense(p, z): 
    q=[] 
    for i in range(len(p)): 
     hit = (z==world[i]) 
     q.append(p[i]*(hit*pHit + (1-hit)*pMiss)) 
    return q # dedented 

print sense(p,z) 
+0

謝謝,但代碼是絕對正確的。 – helpdesk

+0

@henryjoseph請不要冒犯,我並不是要冒犯..(代碼事是爲了縮進..) – pradyunsg

1

在python中,你可以使用製表符或空格作爲縮進,但是你必須保持你使用的是一致的,並且它們中有多少是一致的。在下面細看:

def sense(p, z): 
    q=[] 
    for i in range(len(p)): 
     hit = (z==world[i]) 
     q.append(p[i]*(hit*pHit + (1-hit)*pMiss)) 
     return q 

無論return語句是屬於它的地方,這個問題是與線

q=[] 
    for i in range(len(p)): 

相對於

for i in range(len(p)): 
     hit = (z==world[i]) 
     q.append(p[i]*(hit*pHit + (1-hit)*pMiss)) 
     return q 

注意如何在提到的前兩行之前有兩個空格,for循環的主體之前有六個空格。每個縮進級別應該是單個縮進的倍數。所以,如果你想使用兩個空格:

def sense(p, z): 
    q=[] 
    for i in range(len(p)): 
    hit = (z==world[i]) 
    q.append(p[i]*(hit*pHit + (1-hit)*pMiss)) 
    return q 

,如果你想使用四個空格:

def sense(p, z): 
    q=[] 
    for i in range(len(p)): 
     hit = (z==world[i]) 
     q.append(p[i]*(hit*pHit + (1-hit)*pMiss)) 
     return q 

我通常去四個設置我的環境,製表符映射到四個空格。

這就是說......我也同意移動return語句。但至少現在你可以運行你的代碼,並找出是否/爲什麼你想要移動它。

你應該通過所有的PEP-8大概讀,但特別是在indentation

+1

雖然我同意,一般來說,'每個縮進級別應該是單個縮進的倍數' ,它不*有*。一個塊縮進兩個空格,接下來六個塊不會導致錯誤。 –

+0

@PaulGriffiths你是對的!我其實並沒有想到你可以這樣做。但現在我仔細看看,我意識到OP的代碼不會拋出任何錯誤開始... – Brian

+0

我確實懷疑這個問題,說實話,因爲當你*做*有縮進錯誤,它會總是告訴你它在哪一條線上...... –