繁体   English   中英

无法突破Python循环

[英]Can't break out of Python loop

我遇到了在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

我究竟做错了什么?

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

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

>>> int < str
True

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

您可以在有很多arg的情况下仅调用一次sys.argv ,并使用int作为限制,因为sys.argv从输入中获取字符串:

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

尝试重新格式化您的while循环,以包含要从中断开的语句。 另外,您需要将str limit转换为int 尽管while True循环可以工作,但使用True语句而不是限定条件来打破循环不是while循环的最佳实践。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM