Ответ 1
for i in [float(j) / 100 for j in range(0, 100, 1)]:
print i
Я пытаюсь выполнить цикл от 0 до 1, используя размеры шагов 0,01 (например). Как мне это сделать? for i in range(start, stop, step)
принимает только целые аргументы, поэтому поплавки не будут работать.
for i in [float(j) / 100 for j in range(0, 100, 1)]:
print i
Избегайте сочетания ошибок с плавающей запятой при таком подходе. Количество шагов как ожидалось, а значение рассчитывается для каждого шага.
def drange2(start, stop, step):
numelements = int((stop-start)/float(step))
for i in range(numelements+1):
yield start + i*step
Usage:
for i in drange2(0, 1, 0.01):
print i
Один вариант:
def drange(start, stop, step):
while start < stop:
yield start
start += step
Использование:
for i in drange(0, 1, 0.01):
print i
Ну, вы можете сделать свой цикл от 0 до 100 с шагом размером 1, который даст вам такое же количество шагов. Затем вы можете разделить я на 100 за все, что вы собираетесь с ним делать.
вы также можете использовать списки:
print([i for i in [float(j) / 100 for j in range(0, 100, 1)]])
Если вы хотите управлять печатью, тогда сделайте что-то вроде этого:
print(['something {} something'.format(i) for i in [float(j) / 100 for j in range(0, 100, 1)]])
или
list(i for i in [float(j) / 100 for j in range(0, 100, 1)])
Я бы сказал, что лучший способ - использовать массив numpy.
Если вы хотите выполнить цикл от -2 до +2 с шагом 0,25, то я бы так и сделал:
Start = -2
End = 2
Increment = 0.25
Array = np.arange(Start, End, Increment)
for i in range(0, Array.size):
print (Array[i])
ваш код
for i in range(0,100,0.01):
может быть достигнуто очень просто, вместо использования float
for i in range(0,10000,1):
если вы очень обеспокоены поплавком, тогда вы можете пойти с fooobar.com/info/342075/...