类型错误:无法将序列乘以非整数类型的'str
>>>
Enter muzzle velocity (m/2): 60
Enter angle (degrees): 45
Traceback (most recent call last):
File "F:/Python31/Lib/idlelib/test", line 9, in <module>
range()
File "F:/Python31/Lib/idlelib/test", line 7, in range
Distance = float(decimal((2*(x*x))((decimal(math.zsin(y)))*(decimal(math.acos(y)))))/2)
TypeError: can't multiply sequence by non-int of type 'str'
我刚开始学习,所以如果这个问题很明显,请不要太苛责我。不过,我为什么会遇到这个错误呢?
3 个回答
0
你现在用的是raw_input()来获取输入。其实可以用input(),这样它会返回一个整数。记得只输入数字,不然input()会报错(比如你输入了字符串)。另外,给你的变量起个好名字也很重要。像x和y这样的名字不太清楚,叫velocity和angle就好多了。
6
>>> '60' * '60'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str'
你正在尝试把两个字符串相乘。你需要先把用户输入的字符串转换成数字,可以用 int()
或 float()
来实现。
另外,我不太明白你在用 decimal
做什么;看起来你是想调用这个模块(它的类型是 在 模块里,decimal.Decimal
),但在做完浮点数运算后再转换成 Decimal,然后再转换回 float
,其实没什么意义。
以后如果遇到问题,记得把导致问题的代码贴出来(并保留交互和错误追踪信息)。不过首先尽量把代码缩小到最小,同时确保它仍然能引发错误。这是调试过程中的一个重要步骤。
10
你应该把从控制台获取的数据转换成整数:
x = int(x)
y = int(y)
Distance = float(decimal((2*(x*x))((decimal(math.zsin(y)))*(decimal(math.acos(y)))))/2)