【发布时间】:2017-06-28 13:14:03
【问题描述】:
我正在尝试调用递归方法并在while 条件为False 时退出调用它。虽然,我得到的是当 COUNT_NUM 为 0 时,该方法只会不断重复并返回 prints
不知道我做错了什么
import urllib.request
from bs4 import BeautifulSoup
URL = input("Enter URL: ")
COUNT = input("Enter count: ")
POS = input("Enter position: ")
def retrieveNames(url, count=1, position=1):
""" Retrieves a name from url """
POSITION_NUM = int(position)
COUNT_NUM = int(count)
if (POSITION_NUM< 1): return
html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html, "html.parser")
tags = soup("a")
countNum = COUNT_NUM - 1
tag = tags[POSITION_NUM-1]
print("COUNT:", countNum > 0)
while countNum > 0:
retrieveNames(tag.get("href"), countNum, position)
print(tag.contents[0])
return
retrieveNames(URL, COUNT, POS)
【问题讨论】:
-
您可能希望将
while count > 0:替换为if count > 0:。否则while循环将在count > 0时永远运行。或者在while循环内设置count -= 1而不是在外部设置count = COUNT_NUM - 1。 -
好的,声明的
count变量应该有不同的名称,但count > 0返回False。那么它是如何保持循环的呢? :// -
@JimFasarakisHilliard 你能详细说明一下吗?不知道它是如何做到的,因为 while 循环条件是错误的
-
你的循环本质上是
while count > 0: do nothing。你根本没有递减count。一旦开始,就永远不会停止。 -
@RolandJegorov
count > 0对于 一些 的调用retrieveNames的计算结果为False,即当您将参数count传递给它时,该参数为零。但是,在您的while循环中,您将永远这样做。
标签: python python-3.x