#python
#python
Вопрос:
i = range(0,40,1)
y = 0.1 * cos((i)/20 * pi)
Ошибка, которую я получаю, заключается в следующем:
TypeError: unsupported operand type(s) for /: 'list' and 'int'`
Я не уверен, как удалить эту ошибку. Я ввел i в int, но это список, поэтому его нельзя ввести. Я следую этому примеру. http://msenux.redwoods.edu/math/python/simple.php
Комментарии:
1. хорошо насчет опечатки, но взгляните на мой ответ о
import
вещах.
Ответ №1:
Они используют pylab arange
, а не простой python range
. И это проблема, когда importing *
: вы не знаете, какой метод откуда берется. Импортируйте только pylab и ссылайтесь на все его методы / константы с pylab.
помощью . Вам действительно понравится этот способ программирования, когда у вас будет несколько импорта.
import pylab
i = pylab.arange(0, 40, 1) # or pylab.arange(40) will suffice
y = 0.1 * pylab.cos(i / 20. * pylab.pi)
будет работать.
Комментарии:
1. Также вы захотите разделить на
20.0
(с плавающей точкой), илиfrom __future__ import division
, или использовать Python 3. В противном случае при делении inti/20
будут просто нули и единицы.2. Почему именно это должны быть нули и единицы? Может кто-нибудь прояснить немного больше!
3. с
i/20
помощью и Python 2.x у вас есть целочисленное деление, т.е.5/20 = 0
,21/20 = 1
4. Не было бы лучшей идеей использовать i % 20?
5. @Hiccup:
%
делает что- то совершенно другое . Я думаю, вам нужно разделение.
Ответ №2:
Возможно, вам следует выполнить цикл i
, чтобы получить отдельные значения: range
возвращает список.
>>> for i in range(0, 40):
... print cos((i)/20.0 * pi)
Или для получения значений:
y = [cos((i)/20.0 * pi) for i in range(0, 40)]