[英]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.