代码中的Python缩进错误

时间:2013-06-28 18:35:17

标签: python python-2.7

首先,是否有一个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

print sense(p,z)

3 个答案:

答案 0 :(得分:2)

  1. 那段代码对吗? (缩进)
  2. 您的return似乎不在正确的位置。
  3. 请!请!!请!!!按照PEP-8命名变量和编码风格。
  4. 不,没有IDE可以读懂你的想法,猜猜你想要某个声明的缩进...
  5. 但是,您可以重新缩进代码:

    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)
    

答案 1 :(得分: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

返回语句是否属于它所在的位置,问题在于

  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

我通常选择四个并设置我的环境以将制表符映射到四个空格。

那说......我也同意移动退货声明。但至少现在你可以运行你的代码并弄清楚是否/为什么要移动它。

您应该仔细阅读所有PEP-8,但特别是关于indentation的部分

答案 2 :(得分:0)

您的return声明不在正确的位置。此外,pHitpMissworld变量应在函数范围内定义:

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)