16 Mar 17:46
Zad1
import json
from pathlib import Path
import requests
POKEAPI_URL = "https://pokeapi.co/api/v2/pokemon/{name}"
def fetch_pokemon(name: str) -> dict | None:
url = POKEAPI_URL.format(name=name.lower())
response = requests.get(url, timeout=10)
if response.status_code == 404:
return None
response.raise_for_status()
return response.json()
def save_to_file(data: dict, filename: str) -> None:
Path(filename).write_text(
json.dumps(data, ensure_ascii=False, indent=2),
encoding="utf-8"
)
def print_pokemon_info(data: dict) -> None:
pokemon_name = data.get("name", "nieznany")
weight = data.get("weight", "brak danych")
types_data = data.get("types", [])
types_list = [item["type"]["name"] for item in types_data]
moves_data = data.get("moves", [])
moves_list = [item["move"]["name"] for item in moves_data]
print(f"Pokemon: {pokemon_name}")
print(f"Waga: {weight}")
print(f"Typy: {', '.join(types_list) if types_list else 'brak'}")
print("Ruchy:")
if moves_list:
for move in moves_list:
print(f" - {move}")
else:
print(" - brak ruchów")
def main() -> None:
name = input("Podaj nazwę pokemona: ").strip()
if not name:
print("Nie podano nazwy pokemona.")
return
try:
data = fetch_pokemon(name)
if data is None:
print(f"Pokemon '{name}' nie istnieje.")
return
# opcjonalny zapis do pliku
save_to_file(data, f"{name.lower()}.json")
# analiza odpowiedzi
print_pokemon_info(data)
except requests.RequestException as exc:
print(f"Błąd podczas pobierania danych: {exc}")
if __name__ == "__main__":
main()