-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexercise_subject.txt
42 lines (28 loc) · 1.82 KB
/
exercise_subject.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Obecne zadanie
*** Optymalizacja kodu do programu pobierającego pogodę ***
Zoptymalizuj kod z poprzedniego zadania z pogodą.
Utwórz klasę WeatherForecast, która będzie służyła do odczytywania i zapisywania pliku, a także odpytywania API.
Obiekt klasy WeatherForecast dodatkowo musi poprawnie implementować cztery metody:
__setitem__
__getitem__
__iter__
items
Wykorzystaj w kodzie poniższe zapytania:
weather_forecast[date] da odpowiedź na temat pogody dla podanej daty
weather_forecast.items() zwróci generator tupli w formacie (data, pogoda) dla już zapisanych rezultatów przy wywołaniu
weather_forecast to iterator zwracający wszystkie daty, dla których znana jest pogoda
Zadanie z lekcji 14
*** Obsługa biblioteki zewnętrznej ***
Napisz program, który sprawdzi, czy danego dnia będzie padać. Użyj do tego poniższego API. Aplikacja ma działać następująco:
Program pyta dla jakiej daty należy sprawdzić pogodę. Data musi być w formacie YYYY-mm-dd, np. 2022-11-03.
W przypadku nie podania daty, aplikacja przyjmie za poszukiwaną datę następny dzień.
Aplikacja wykona zapytanie do API w celu poszukiwania stanu pogody.
Istnieją trzy możliwe informacje dla opadów deszczu:
Będzie padać (dla wyniku większego niż 0.0)
Nie będzie padać (dla wyniku równego 0.0)
Nie wiem (gdy wyniku z jakiegoś powodu nie ma lub wartość jest ujemna)
Wyniki zapytań powinny być zapisywane do pliku. Jeżeli szukana data znajduje się już w pliku, nie wykonuj zapytania do
API, tylko zwróć wynik z pliku.
URL do API:
https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}&hourly=rain&daily=rain_sum&timezone=Europe%2FLondon&start_date={searched_date}&end_date={searched_date}
W URL należy uzupełnić parametry: latitude, longitude oraz searched_date