7

q.append(p[i] * (hit * pHit + (1-hit) * pMiss))変数hitはブール値であるため、行がわかりません。そのブール値はから来ますhit = (Z == world[i])

何が起こっているのですか?私はPythonの基本的な理解しかありません...

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))
        s = sum(q)
        for i in range(len(p)):
            q[i]=q[i]/s      
    return q

print sense(p,Z)
4

3 に答える 3

13

算術では、ブール値は整数として扱われます。Trueとして扱われ1Falseとして扱われ0ます。

>>> True + 1
    2
>>> False * 20
    0
>>> True * 20
    20
于 2012-11-11T14:45:52.810 に答える
10

Pythonでは、ブール値はintのサブクラスです。

>>> isinstance(True, int)
True

それらは基本的に1と0です:

>>> True * 1
1
>>> False * 1
0

boolがintのサブクラスである理由を参照してください。

于 2012-11-11T14:45:58.627 に答える
5

他の人が答えたように、真は真1で偽はです。0つまり、基本的に、それが行うこと(および書かれるべきだったもの)は次のとおりです。

p[i] * (pHit if hit else pMiss)
于 2012-11-11T14:48:11.330 に答える