-1

请首先,是否有处理缩进的 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)
4

3 回答 3

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)
于 2013-06-28T18:43:42.823 回答
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

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

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

您可能应该通读PEP-8的所有内容,尤其是关于缩进的部分

于 2013-06-28T18:46:55.883 回答
0

你的return说法不正确。此外,pHitpMiss变量world应在函数范围内定义:

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)
于 2013-06-28T18:36:12.680 回答