无法突破Python循环

时间:2014-09-18 21:47:20

标签: python

我遇到了在Python中打破循环的问题。它不会爆发。

这是dl.py:

#! /usr/bin/python
import urllib
import urllib2
import os
import sys
import re 
from pyquery import PyQuery as pq

url = sys.argv[1]
limit = sys.argv[2]

count = 0

while True :
    if count >= limit :
        break
    print 1;
    count += 1

print 'Complete ... exiting';

它只是永远循环,我无法理解为什么。 Python不是我的母语,我用它来编写一些shell脚本。

我像./dl.py http://url.com 3

那样运行它

我做错了什么?

5 个答案:

答案 0 :(得分:6)

您需要使用limitint(limit)转换为整数。在Python 2.x中3 > '2'始终返回False,因此您的循环永远不会完成。

答案 1 :(得分:1)

您需要使用limitint(limit)转换为整数(否则当从命令行读取时,它将被视为Python的字符串)。整数被评估为小于字符串(至少在Python 2中)。

>>> int < str
True

答案 2 :(得分:0)

问题是sys.argv[2]将返回一个字符串,当你在Python中将字符串与整数进行比较时,字符串总是更大。请尝试使用if count >= int(limit):

答案 3 :(得分:0)

当你有很多arg并且使用sys.argv作为限制时,你可以只调用一次int,因为来自输入的sys.argv获取字符串:

 user_args = sys.argv[1:]
 url, limit = user_args
 limit=int(limit)

答案 4 :(得分:-2)

尝试重新格式化while循环以包含您要尝试中断的语句。此外,您还需要将limit投射到int。虽然您的while True循环可行,但使用True语句代替资格来打破循环并不是while循环的最佳做法。

while count <= int(limit):
    print 1;
    count += 1