我正在尝试使用Python,并且在我非常疲惫的状态下,似乎无法通过以下代码找到问题:
import sys
def printNum(x):
y = 0
while y < x:
print "Number: ", y
y = y + 1
printNum(sys.argv[1])
所以,我正试图打印y
x
次。 x
作为参数传递。循环永远不会结束,我不知道为什么!
答案 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]))