我想让用户确定for循环的步长。
用户将在输入中写入一个浮点数,例如0.2
或0.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
这意味着我们将1
和3.5
乘以100
或步长{{} 1}}我们将它们乘以0.5
。那我们该怎么做?
我的意思是,当用户写10
时,我们有stepseize = 0.00005
个十进制数字,因此我们必须将5
和1
乘以 a {{1}在其前面有3.5
个零的1
。如果用户写5
我们有100000
个十进制数字,我们必须将stepseize = 0.0042
和4
乘以1
3.5
答案 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