簡體   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