2013-06-28 107 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

我确实怀疑这个问题,说实话,因为当你*做*有缩进错误,它会总是告诉你它在哪一条线上...... –