import random
def rand():
a =random.randint(1,2)
return a
Функция возвращает либо 1 либо 2, каждый раз по разному. Нужно написать цикл с рекурсией с условием, если a == 2, возвращаем 2 и заканчиваем цикл, если 1, то запускаем цикл еще раз пока не будет 2.
Disgusted: Чего ждать то. У вас решение практически верное. Но вас видимо запутало слово "цикл" в задании. Рекурсия это один из способов организации цикла. Т.е. рекурсия и есть цикл.
longclaps: Представим , что у нас динамически формируется ЮРЛ , а нам нужно получить из него значение. При этом в нужном нам ЮРЛе должен быть нужный нам идентификатор (символ) для дальнейшей обработки. Так вот чтобы проверить конечной символ при дроблении ЮРЛа я решил написать проверку.
Вот пример кода, но он почему то у меня не работает , хотя я вроде все так применил:
def get_total_page(html):
soup = BeautifulSoup(html, 'lxml')
pages = soup.find('div', class_='ui-pagination-navi util-left').find_all('a' , class_='page-next ui-pagination-next')[-1].get('href')
total_pages = pages.split('=')[5].split('&')[0]
while (total_pages != 2):
total_pages = get_total_page(html)
return total_pages
def main():
html = get_html(url)
print(get_total_page(html))
#url вынесен в глобальную переменную
Первоначальной задачей было просто взять нужный элемент, который равняется 2, но юрл динамичен и может выдать другое значение. Кстати, может подскажет почему в этом случае программа не выходит из цикла?
Heavy10110: Ты осознаешь, что тебе второй раз нужно вызвать функцию с другими параметрами? В твоем случае даже никаких рекурсий не надо.
Или я ничего не понял и у тебя есть случайный юрл который генерится динамически на одной конкретной странице и тебе каждый раз надо запрашивать и парсить одну и ту же страницу пока юрл нужный не попадется?
Heavy10110:
total_pages = pages.split('=')[5].split('&')[0] # это односимвольная строка
while (total_pages != 2): # сравнивается с числом, всегда ему не равна, вечный цикл
javedimka: " у тебя есть случайный юрл который генерится динамически на одной конкретной странице и тебе каждый раз надо запрашивать и парсить одну и ту же страницу пока юрл нужный не попадется? " Именно так.
Heavy10110: Ну тебе вон longclaps уже дал решение, которое должно работать:
while total_pages != '2':
В принципе если тебе надо чтобы код просто работал, то этого достаточно.