`而y< x`循环永远不会结束

时间:2011-08-16 20:26:34

标签: python

我正在尝试使用Python,并且在我非常疲惫的状态下,似乎无法通过以下代码找到问题:

import sys

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

printNum(sys.argv[1])

所以,我正试图打印y x次。 x作为参数传递。循环永远不会结束,我不知道为什么!

3 个答案:

答案 0 :(得分:4)

哎哟!

您的问题是,sys.argv[1]为您提供了str,而str始终大于int

例如:

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

所以你需要做的是将你的最后一行改为

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

答案 1 :(得分:2)

作为命令行参数获得的x值作为字符串传递,而不是整数。所有整数都被视为少于所有字符串:

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

...所以你的循环永远不会结束。

尝试:

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

答案 2 :(得分:2)

目前此代码会将str粘贴到printNum,但printNum会将输入(x)视为int。要解决此问题,请将输入转换为int

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