我一次又一次地犯同样的错误。 我定义了多个函数,但这部分有问题:
a = 50000.0
c = 1.0
def fkt(smatrix, a, c):
y_Dach = [0.] * 93
for i in range(0, 93):
y_Dach[i] = c*( 1.5*(smatrix[i])/a -
0.5*((smatrix[i])/a)**3.0 )
return y_Dach
所以smatrix是一个有93个float的列表-1维,这是由我尝试调用它和函数中已经有print smatrix[0]
和print type(smatrix[0])
的类型的事实证明的-它可以像预期的那样工作。你知道吗
我的问题是我总是犯这个错误:
Traceback (most recent call last):
File "bla.py", line 260, in <module>
print anneal(fkt, a, c, bmatrix)
File "bla.py", line 242, in anneal
fkt(smatrix, a, c)
File "bla.py", line 220, in fkt
y_Dach[i] = c*( 1.5*(smatrix[i])/a -
0.5*((smatrix[i])/a)**3.0 )
TypeError: can't multiply sequence by non-int of type 'float'
我真的尝试了我的编程技巧所能做的一切来解决这个问题,但我无法摆脱这个错误,它不断地出现。 为什么我不能计算只有浮动在我的名单?你知道吗
我对编程还很陌生,但我现在想尽一切办法学习更多。我希望我能正确答复你的要求,如果不让我知道。
@当我通过print smatrix[0]
调用smatrix时,它将显示2500.0
,当我调用print smatrix
时,它将显示:
[2500.0, 3500.0, 5500.0, 6500.0, 7500.0, 8500.0, 9500.0, 10500.0,
11500.0, 12500.0, 13500.0, 14500.0, 15500.0, 16500.0,
17500.0, 18500.0, 19500.0, 20500.0, 21500.0, 22500.0, 23500.0, 24500.0,
25500.0, 26500.0, 27500.0, 28500.0, 29500.0, 30500.0, 31500.0, 32500.0,
33500.0, 34500.0, 35500.0, 36500.0, 37500.0, 38500.0, 39500.0, 40500.0,
41500.0, 42500.0, 43500.0, 44500.0, 45500.0, 46500.0, 47500.0, 48500.0,
49500.0, 50500.0, 51500.0, 52500.0, 53500.0, 54500.0, 55500.0, 56500.0,
57500.0, 58500.0, 59500.0, 60500.0, 61500.0, 62500.0, 63500.0, 64500.0,
65500.0, 66500.0, 67500.0, 68500.0, 69500.0, 70500.0, 71500.0, 72500.0,
73500.0, 74500.0, 75500.0, 76500.0, 78500.0, 79500.0, 80500.0, 81500.0,
83500.0, 85500.0, 87500.0, 88500.0, 89500.0, 90500.0, 91500.0, 92500.0,
93500.0, 95500.0, 98500.0, 99500.0, 100500.0, 103500.0, 107500.0]
我总是从你这样的人那里得到新的灵感。你真的解决了问题。谢谢!!! 我按照您的建议使用
numpy
使它工作。你知道吗让我们看看我如何处理代码和未来的问题。我希望我不会很快再遇到这样的人。:)
唯一可以将列表与标量值“相乘”的时间是早期用于创建行的时间;列表乘以int执行重复的串联。没有定义其他列表/标量操作(包括交换元素的顺序:
3 * [1, 2, 3]
未定义,并且与[1, 2, 3] * 3
不同)。你知道吗为了对一行执行
1.5*smatrix[i]/a
之类的操作,您需要自己一次执行一个元素:或者使用
numpy
这样的包,它为标量/矩阵/向量操作提供了一个API。你知道吗相关问题 更多 >
编程相关推荐