类型错误Python编程

2024-06-26 18:07:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python编写一些作业代码。我在任何地方都找不到的是哪里出了问题,为什么它不会运行。它是感知和移动机器人的定位功能。我不明白为什么这条线不行。在

q.append(p[i] * (hit * sensor_right + (1 - hit) * (1-sensor_right)))
  • hit=两个字符串之间的比较。结果是真或假,是1还是0,对吗?在
  • 传感器右侧=0.7
^{pr2}$

你能为我在这里贴的东西提些建议吗?在

def sense(p, Z):
q = [ ]
for i in range(len(p)):
    hit = (Z == colors[i])
    q.append(p[i] * (hit * sensor_right + (1 - hit) * (1-sensor_right)))
s = sum(q)
for i in range(len(q)):
    q[i] = q[i]/s
return q

Tags: 代码in定位功能rightforlen地方
3条回答

如果其他变量是正确的,它告诉你p[i]是一个序列(很可能是一个列表),它不能与浮点相乘。也许p[i]不是您期望的那样?在

在抛出错误的行之前尝试printing p[i]。在

正如其他人所指出的,这个p变量显然是一个序列序列。你可以通过

print(type(p))
print(type(p[i]))

在append语句之前。你可能会看到

^{pr2}$

如果这是您所期望的,那么您将需要在数组的其他索引上循环。另外,您的q是否需要以相同的形状返回?我想你想要更像这样的东西。在

def sense(p, Z):
    q = p[:]
    for i in range(len(p)):
        for j in range(len(p[i])):
            hit = (Z == colors[i])
            q[i][j] = (p[i][j] * (hit * sensor_right + (1 - hit) * (1-sensor_right)))
    s = sum(q)
    for i in range(len(q)):
        q[i] = q[i]/s
    return q

请注意,您可能还需要研究numpy数组。在

这里的问题是别人怎么说的。只能将序列乘以整数,而不是浮点。 例如

>>> [1] * 3
[1, 1, 1]
>>> "f" * 6
ffffff
>>> [1] * 0.7
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'

再次检查p的数据类型,以确保它应该是一个序列。如果这真的是p的值,那么在乘法之前一定要把下面的值转换成int

^{pr2}$

相关问题 更多 >