我遇到了河内塔递归问题。我得到了一个带有2个参数的move函数:
price = a.find('span').text
(环的索引:import csv ; import requests
from bs4 import BeautifulSoup
outfile = open('pistonheads.csv','w', newline='')
writer = csv.writer(outfile)
writer.writerow(["Link", "Make", "Model", "Price", 'Images'])
url = 'https://www.pistonheads.com/classifieds?Category=used-cars&Page=1&ResultsPerPage=100'
get_url = requests.get(url)
get_text = get_url.text
soup = BeautifulSoup(get_text, 'html.parser')
car_link = soup.find_all('div', 'listing-headline', 'price')
for div in car_link:
links = div.findAll('a')
for a in links:
link = ("https://www.pistonheads.com" + a['href'])
make = (a['href'].split('/')[-4])
model = (a['href'].split('/')[-3])
price = a.find('span').text
image_link = a.parent.parent.find('img')['src']
image = link + image_link
writer.writerow([link, make, model, price, image])
print(link, make, model, price, image)
outfile.close()
-> j
从下到上)和我找到了一种无需使用此函数即可解决递归问题的方法,但是当我需要使用它时会陷入困境。实际上,我不知道如何有效地更改我的1
变量。
n
我发现了j
进化的一些模式:
例如3个环:
moveTower(n, position1, position2):
if n > 1:
moveTower(n-1, position1, aux)
move(j, position2) """ That's where i'm stuck """
moveTower(n-1, aux, position2)
else:
move(j, position2)
答案 0 :(得分:1)
我认为计算j
的最简单方法是注意到它总是与position1
和position2
不同。因此,您可以编写嵌套的if/else
,也可以将其显式传递为第三个参数,或者,如果您需要一些巧妙的技巧,请使用:
j = 6 - position1 - position2
这里的想法是6 = 1 + 2 + 3
,因此将j
计算为不是(1,2,3)
或position1
的{{1}}中的一个。