Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 布尔值与浮点值相乘?_Python_Type Conversion_Boolean - Fatal编程技术网

Python 布尔值与浮点值相乘?

Python 布尔值与浮点值相乘?,python,type-conversion,boolean,Python,Type Conversion,Boolean,我不理解行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=[]

我不理解行
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)

在算术中,布尔被视为整数
True
被视为
1
False
被视为
0

>>> True + 1
    2
>>> False * 20
    0
>>> True * 20
    20

在python中,布尔是int的一个子类:

>>> isinstance(True, int)
True
它们基本上是1和0:

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

参见

如其他人所回答,True is
1
和False is
0
。所以基本上,它所做的(以及应该写的)是:

p[i] * (pHit if hit else pMiss)