Ошибка типа: не может умножить последовательность на не-int типа 'str' - PullRequest
2 голосов
/ 30 июля 2009
>>> 
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 ]

6 голосов
/ 30 июля 2009
>>> '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.

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

5 голосов
/ 30 июля 2009

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

x = int(x)
y = int(y)
Distance = float(decimal((2*(x*x))((decimal(math.zsin(y)))*(decimal(math.acos(y)))))/2)
0 голосов
/ 30 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...