我试图调用一个递归方法,并在while
条件为False
时停止调用它。不过,我得到的结果是,当COUNT_NUM
为0时,该方法只会不断重复自身并同时返回print
不知道我做错了什么
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)
因为递归调用函数,所以运行在无限循环中,这意味着变量countnum现在存在于多个作用域中:原始函数调用和递归调用。这意味着无论调用retrieveNames时countnum发生了什么,都不会影响while循环中countnum的值。因此,您将永远无法脱离while循环。 所以您要做的是返回countnum:
或者将while语句更改为if语句。你知道吗
相关问题 更多 >
编程相关推荐