Python — не печатает все данные

#python

#python

Вопрос:

Я создал код, который постоянно обновляет все значения валют по всему миру. В настоящее время в коде отображается только значение в евро, Когда оно должно отображать доллары США, евро, рупии и т. Д. Может кто-нибудь, пожалуйста, скажите мне, почему это отображает только одно значение?

 import time
import os
import requests 
from bs4 import BeautifulSoup 

def refresh():
    URL = "https://www.x-rates.com/table/?from=USDamp;amount=1"
    r = requests.get(URL) 

    soup = BeautifulSoup(r.content, 'html.parser') 
    ratelist = soup.findAll("table", {"class": "ratesTable"})[0].findAll("tbody")

    for tableVal in ratelist:
        trList = tableVal.findAll('tr')
        for trVal in trList[:6]:
            print(trVal.text)
            time.sleep(5)
            os.system('cls')
            refresh()
refresh()
 

Хорошего дня,

         Bipolar Sheep
 

Комментарии:

1. Кроме того, вы не должны использовать рекурсию для этого

Ответ №1:

Я бы сказал, что ваш последний оператор refresh() должен находиться за пределами циклов for .

В вашем коде он обновляется после печати первого trVal, поэтому он снова запускает оператор refresh() . Пожалуйста, попробуйте эту версию :

 import time
import os
import requests 
from bs4 import BeautifulSoup 

def refresh():
    URL = "https://www.x-rates.com/table/?from=USDamp;amount=1"
    r = requests.get(URL) 

    soup = BeautifulSoup(r.content, 'html.parser') 
    ratelist = soup.findAll("table", {"class": "ratesTable"})[0].findAll("tbody")

    for tableVal in ratelist:
        trList = tableVal.findAll('tr')
        for trVal in trList[:6]:
            print(trVal.text)
            time.sleep(5)
    os.system('cls')
    refresh()

refresh()
 

РЕДАКТИРОВАТЬ: я также решил удалить os.system (‘cls’) из циклов.