Я использовал Eclipse Juno, и я не помнил, было ли это 32 или 64 бит. Я установил Java 32 бита, и поэтому он не удался. Затем я установил Java 64 бит, а Eclipse Juno снова работает.
Я также удалил ссылку java или jre в переменных среды (PATH).
Вместо того, чтобы использовать десятичный шаг непосредственно, намного более безопасно выразить это с точки зрения того, сколько точек Вы хотите. Иначе погрешность округления с плавающей точкой, вероятно, даст Вам неправильный результат.
можно использовать эти linspace
функция от библиотека NumPy (который не является частью стандартной библиотеки, но относительно легок получить). linspace
берет ряд вопросов для возврата и также позволяет Вам указать, включать ли правильную конечную точку:
>>> np.linspace(0,1,11)
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])
>>> np.linspace(0,1,10,endpoint=False)
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
, Если Вы действительно хотите использовать значение шага с плавающей точкой, Вы можете, с numpy.arange
.
>>> import numpy as np
>>> np.arange(0.0, 1.0, 0.1)
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
погрешность округления С плавающей точкой будет проблемы причины, все же. Вот простой случай, где погрешность округления заставляет arange
производить длину 4 массива, когда это должно только произвести 3 числа:
>>> numpy.arange(1, 1.3, 0.1)
array([1. , 1.1, 1.2, 1.3])
Здание 'xrange ([запускаются], остановитесь [шаг])', , можно определить генератор, который принимает и производит любой тип, который Вы выбираете (придерживайтесь типов, поддерживающих +
и <
):
>>> def drange(start, stop, step):
... r = start
... while r < stop:
... yield r
... r += step
...
>>> i0=drange(0.0, 1.0, 0.1)
>>> ["%g" % x for x in i0]
['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']
>>>
Диапазон () встроенная функция возвращает последовательность целочисленных значений, я боюсь, таким образом, Вы не можете использовать его, чтобы сделать десятичный шаг.
я сказал бы просто что использование некоторое время цикл:
i = 0.0
while i <= 1.0:
print i
i += 0.1
, Если Вам любопытно, Python преобразовывает Ваши 0.1 в 0, который является, почему он говорит Вам, что аргументом не может быть нуль.
Диапазон Python () может только сделать целые числа, не плавающую точку. В Вашем конкретном случае можно использовать понимание списка вместо этого:
[x * 0.1 for x in range(0, 10)]
(Заменяют вызов для расположения с тем выражением.)
Для более общего случая, можно хотеть записать пользовательскую функцию или генератор.
Увеличьте величину i
для цикла и затем уменьшите его при необходимости в нем.
for i * 100 in range(0, 100, 10):
print i / 100.0
РЕДАКТИРОВАНИЕ: Я честно не могу помнить, почему я думал, что это будет работать синтаксически
for i in range(0, 11, 1):
print i / 10.0
, Который должен иметь желаемый вывод.
И если Вы часто делаете это, Вы могли бы хотеть сохранить сгенерированный список r
r=map(lambda x: x/10.0,range(0,10))
for i in r:
print i
Вы можете использовать эту функцию:
def frange(start,end,step):
return map(lambda x: x*step, range(int(start*1./step),int(end*1./step)))