逐步执行Python循环,步长在指数中给出

时间:2015-10-08 02:25:12

标签: python python-2.7 loops for-loop

我有一个Python列表

q_s = [1E2,1E4,1E8,0]

我试图以1E2的步长循环遍历1E81E4的值。所以,我需要将循环值设为1E2 + 0 * 1E41E2 + 1 * 1E41E2 + 2 * 1E4等等。

尝试输出:

尝试:

这是我的尝试:

for j in range(q_s[0],q_s[2],q_s[1]):
    print j

输出:

以下是它给出的错误消息:

Traceback (most recent call last):
  File "C:\test.py", line 2, in <module>
    for q in range(q_s[0],q_s[2],q_s[1]):
TypeError: range() integer end argument expected, got float.
[Finished in 0.3s with exit code 1]

其他信息:

对于开始,停止和步骤值,开始(1E2)和停止(1E4)值对于我正在做的事情是切合实际的。步骤值(1E4)仅用于测试目的 - 理论上,我认为我应该可以自由地使用任何值 - 代码不应该强迫我选择某些步长来通过{{ 1}}循环。

问题:

有没有办法使用上面的开始,停止和步长来循环这个循环?

1 个答案:

答案 0 :(得分:2)

问题是Python中的xEy会返回float,而不是intrange仅处理int s。

解决方案是将您的值转换为int,如下所示:

for j in range(int(q_s[0]), int(q_s[2]), int(q_s[1])):
    print j