-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

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

上記の最初の 2 行の前に 2 つのスペースがあり、for ループの本体の前に 6 つのスペースがあることに注意してください。すべてのインデント レベルは、1 つのインデントの倍数である必要があります。したがって、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

4 つのスペースを使用する場合は、次のようにします。

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

私は通常 4 つを使用し、タブ文字を 4 つのスペースにマップするように環境をセットアップします。

そうは言っても...私もreturnステートメントを移動することに同意します。しかし、少なくともこれで、コードを実行して、移動するかどうか、または移動する理由を把握できます。

おそらくPEP-8のすべてを読む必要がありますが、特にインデントに関するセクションを読んでください。

于 2013-06-28T18:46:55.883 に答える
0

あなたのreturn発言は適切な場所にありません。さらに、、pHitおよびpMiss変数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 に答える