TypeError: не может умножить последовательность на non-int типа '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 Solutions collect form web for “TypeError: не может умножить последовательность на non-int типа 'str'”

Вы должны преобразовать данные, полученные с консоли, в целые числа:

 x = int(x) y = int(y) Distance = float(decimal((2*(x*x))((decimal(math.zsin(y)))*(decimal(math.acos(y)))))/2) 
 >>> '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 ), но нет смысла конвертировать в десятичное число после выполнения математики с плавающей запятой, а затем преобразовывать обратно в float .

В будущем отправьте код, который вызывает проблему (и сохраните взаимодействие и трассировку). Но сначала попробуйте и сократите код как можно больше, убедившись, что он все еще вызывает ошибку. Это важный шаг в отладке.

Вы используете raw_input () для получения ввода. Вместо этого используйте input (). Он вернет Int. Убедитесь, что вы вводите только цифры или input () вызовет ошибку (скажем, в случае строки). Кроме того, было бы неплохо, если бы вы правильно указали свои переменные. x и y не передают много. (скорость и угол были бы намного лучше)

Python - лучший язык программирования в мире.