我遇到了在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
我做错了什么?
答案 0 :(得分:6)
您需要使用limit
将int(limit)
转换为整数。在Python 2.x中3 > '2'
将始终返回False
,因此您的循环永远不会完成。
答案 1 :(得分:1)
您需要使用limit
将int(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