簡體   English   中英

代碼中的Python縮進錯誤

[英]Python indentation error in code

首先,請問有一個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)
  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)

在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 ,尤其是縮進部分

您的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM