2011-08-16 9 views
0

を終了しない間:だから`yは<X 'ループは決して私は、Pythonをしようとしている、と、私は非常に疲れた状態で、以下のコードで問題を見つけるように見えることはできません

import sys 

def printNum(x): 
    y = 0 
    while y < x: 
     print "Number: ", y 
     y = y + 1 

printNum(sys.argv[1]) 

を、Iそれを印刷しようとしていますyx回。 xがパラメータとして渡されます。ループは決して終わらず、私は理由を知らない!

+2

値int xをキャストしてみ - 'Y arunkumar

答えて

2

現在、このコードがprintNumstrを貼り付けますが、intようprintNum扱い入力(x)。この問題を解決するには、intに入力を変換します。

printNum(int(sys.argv[1])) 
+0

は完全に文字列であるパラメータを忘れてしまいました。ありがとう! – james246

4

おっと!

sys.argv[1]strstrは常にintより大きくなります。

例えば

>>> '2' < 1 
False 
>>> '1' < 2 
False 

だからあなたがする必要がありますどのようなコマンドラインパラメータとして取得

printNum(int(sys.argv[1])) 
2

x値にあなたの最後の行を変更しているがように渡されます整数ではなく文字列。すべての整数はすべての文字列より少ない文字として扱われます。

>>> 1 < "2" 
True 
>>> 3 < "2" 
True 
>>> 1000000 < "2" 
True 

...ループは決して終了しません。

試してみてください。

printNum(int(sys.argv[1])) 
関連する問題

 関連する問題