2

这里是 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 循环需要一个整数,如您所见,我试图强制执行该整数。

4

3 回答 3

3

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

应该可以正常工作。您已经将其转换为整数,您不应该从中创建字符串

于 2012-09-06T19:15:16.373 回答
3

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

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

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

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]
于 2012-09-06T19:17:36.583 回答
1

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

在您使用的情况下,您说的是从 1 开始,然后上升到一个带有数字的字符串postint

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

于 2012-09-06T19:15:27.913 回答