Witam,
mam problem z następującym programem. Jak na razie jest pobierana z coingecko lista kryptowalut do zmiennej globalnej coinData
(w formie listy słowników), użytkownik podaje symbol konkretnej którą chce znaleźć i program ją wyświetla już jako konkretny element tej listy czyli ostateczny słownik.
import requests
coinData = None
currency = "pln"
def coinList():
global coinData
try:
response = requests.get("https://api.coingecko.com/api/v3/coins/list?include_platform=true")
coinData = response.json() #list of dictionaries
except requests.exceptions.Timeout:
print("Request timed out...")
except requests.exceptions.ConnectionError as e:
print(f"Connection error: {e}")
except requests.exceptions.RequestException as r:
print(f"System error: {r}")
def getCoin(symbol):
#coinData: [ {'id': 'bitcoin', 'symbol': 'btc', 'name': 'Bitcoin', 'platforms': {}} ...]
for coin in coinData: #coinData -> list of dictionaries
if coin["symbol"] == symbol:
return coin
else:
return None
coinList()
symbol = input('Podaj symbol kryptowaluty którą chcesz znaleźć: ')
coin = getCoin(symbol) #returns dictionary with specified crypto
print(coin)
Nie mam zielonego pojęcia czemu program wysypuje się raz na 3 razy, tzn 3 razy wpiszę konkretną walutę, znajdzie ją i wyświetli, natomiast za 4 pokazuje poniższy błąd:
# Podaj symbol kryptowaluty którą chcesz znaleźć: eth
# Traceback (most recent call last):
# File "c:\Users\Galaw\Documents\Git_Hub\Python\udemy\programs\cryptocantor.py", line 29, in <module>
# coin = getCoin(symbol) #dictionary with specified crypto
# ^^^^^^^^^^^^^^^
# File "c:\Users\Galaw\Documents\Git_Hub\Python\udemy\programs\cryptocantor.py", line 21, in getCoin
# if coin["symbol"] == symbol:
# ~~~~^^^^^^^^^^
# TypeError: string indices must be integers, not 'str'
# PS C:\Users\Galaw\Documents\Git_Hub>
Z tego co rozumiem to coin["example"]
jest konkretnym kluczem w danym słowniku a z tego błędu chyba wynika że program traktuje to jako odwołanie do elementu listy.
Byłbym bardzo wdzięczny za pomoc.