根据步长调整for循环的可调范围

时间:2018-05-24 11:21:37

标签: python for-loop

我想让用户确定for循环的步长。 用户将在输入中写入一个浮点数,例如0.20.5,但Python不接受for循环中的float,因此我们必须将其更改为整数。

for i in range (1, 3.5, 0.5): #This is proposal
   print(i)

for i in range (10, 35, 5): #This is the logical term for Python
   print(i/10)

如果用户写0.05,则循环范围必须为100 to 350 with step size 5这意味着我们将13.5乘以100或步长{{} 1}}我们将它们乘以0.5。那我们该怎么做?

我的意思是,当用户写10时,我们有stepseize = 0.00005个十进制数字,因此我们必须将51乘以 a {{1}在其前面有3.5个零的1 。如果用户写5我们有100000个十进制数字,我们必须将stepseize = 0.00424乘以1

3.5

1 个答案:

答案 0 :(得分:0)

您可以编写自己的范围生成器来包装range()函数但处理浮点数:

def range_floats(start,stop,step):
    f = 0
    while not step.is_integer():
        step *= 10
        f += 10
    return (i / f for i in range(start*f,stop*f,int(step)))

有效:

>>> for i in range_floats(0, 35, 0.5):
...     print(i)
... 
0.0
0.5
1.0
.
.
.
33.5
34.0
34.5