新手到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循环期望一个我试图强制的整数,你可以看到。
答案 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 )