4

I want to make a for loop that looks like this:

for x in range(0, 1, 0.1):
    print(x)

obviously it throws this error:

Traceback (most recent call last): File "", line 1, in for i in range(0, 1, 0.1): TypeError: 'float' object cannot be interpreted as an integer

So it there a way in python 3.6 to make a for loop with floating point?

Tissuebox
  • 946
  • 3
  • 13
  • 32

2 Answers2

11

use numpy's arange instead of range:

import numpy as np
for x in np.arange(0, 1, 0.1):
    print(x)
sacuL
  • 45,929
  • 8
  • 75
  • 99
  • 1
    Keep in mind you may not get exactly the numbers you expect, because `0.1` can't be represented exactly as a finite binary fraction. I like Simon's approach of using integers and dividing by 10 better; it's less prone to accumulated rounding errors. – kindall Mar 02 '18 at 01:26
5

Why not divide an integer and convert it into a float value?

for x in range(0, 10, 1):
    print(x/10)

Here you range from 0 to 10 and the divide the output by 10 to get a floating point.

Xantium
  • 10,258
  • 9
  • 56
  • 83
  • yes. I kinda should have thought about this, I guess its past experience from python2.x that made me scared to divide integer – Tissuebox Jul 30 '21 at 07:28