在python中使用整数参数进行for循环

时间:2012-09-06 19:13:41

标签: python

新手到python这里,我试图使用整数作为for循环的参数。我使用的代码

from sys import argv

script, numberofposts = argv
postsint = int(numberofposts)

for x in range(0,"%d" % postsint):
    print 'on time'

print "number %d" % postsint

给我这个错误 -

Traceback (most recent call last):
  File "forarg.py", line 6, in <module>
    for x in range(0,"%d" % postsint):
TypeError: range() integer end argument expected, got str.

我在这里做错了什么?我认为这是一个语法问题,但错误似乎表明for循环期望一个我试图强制的整数,你可以看到。

3 个答案:

答案 0 :(得分:3)

for x in range(postsint): # start at beginning as mgilson suggested

应该可以正常工作。你已经将它转换为整数,你不应该从它创建一个字符串

答案 1 :(得分:2)

这是因为"%d"用于字符串格式化,它只返回字符串:

In [18]: type( "%d" % 3)
Out[18]: <type 'str'>

如果您使用的是python 2.x,请使用just range(0,4)xrange(0,4)

In [19]: range(0,4)  #0 is the default value of the first argument, so range(0,4)==range(4)
Out[19]: [0, 1, 2, 3]

答案 2 :(得分:1)

您正在执行格式化字符串作为范围的第二个参数。

如果您正在使用,则表示从1开始,然后转到其中包含数字postint的字符串。

这是错误的。你想做range( 1, postint )