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'>

を使用する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

範囲の2番目のパラメーターとしてフォーマットされた文字列を実行しています。

あなたが使用している場合、あなたは1から始めて、その中に数字が入っている文字列まで上がると言ってpostintいます。

これは間違っています。あなたがしたいrange( 1, postint )

于 2012-09-06T19:15:27.913 に答える