首先,是否有一个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)
答案 0 :(得分:2)
return
似乎不在正确的位置。但是,您可以重新缩进代码:
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
声明不在正确的位置。此外,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)