Posortuj adresy IP z pliku
Treść zadania
Wczytaj ścieżkę pliku tekstowego, w którym każdy niepusty wiersz zawiera jeden adres IPv4 — cztery liczby od 0 do 255 oddzielone kropkami, np. 192.168.1.10. Wypisz wszystkie adresy posortowane rosnąco według wartości liczbowych: najpierw według pierwszej liczby, przy równych — według drugiej, potem trzeciej i czwartej.
Zwykłe porównywanie napisów da złą kolejność: "192.168.1.10" < "192.168.1.2", chociaż $10 > 2$.
Dane wejściowe
- 1. linia: ścieżka pliku z adresami
Dane wyjściowe
- Adresy w kolejności rosnącej, każdy w osobnej linii. Powtarzające się adresy wypisz tyle razy, ile razy występują w pliku.
Brak adresów.— jeśli plik nie zawiera żadnego adresu.Plik nie istnieje.— jeśli podana ścieżka nie wskazuje istniejącego pliku.
Ograniczenia
- Puste wiersze pomiń. Wiersze z adresami nie zawierają spacji ani innych znaków.
Uwagi
- Wygodnie jest sortować z kluczem:
sorted(adresy, key=...), gdzie klucz zamienia adres na krotkę czterech liczb całkowitych.
Przykład
adresy_ip.txt192.168.1.10 10.0.0.1 192.168.1.2 172.16.0.5
adresy_ip.txt
10.0.0.1 172.16.0.5 192.168.1.2 192.168.1.10
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 20
Poniższe zadania polegają na wczytywaniu danych ze standardowego wejścia (stdin), wykonywaniu operacji na plikach i folderach oraz wypisywaniu wyniku na standardowe wyjście (stdout).
Każde zadanie jest osobnym, niezależnym programem.
Konwencje wspólne:
- Program działa na plikach w katalogu roboczym, czyli w folderze, w którym jest uruchamiany. Wszystkie ścieżki na wejściu są względne wobec katalogu roboczego i używają
/jako separatora, np.dane/raport.txt. Ścieżki wczytuj jako całe linie — mogą zawierać spacje. - Sprawdzarka przed każdym testem tworzy nowy katalog roboczy z plikami opisanymi w teście, uruchamia program, a potem sprawdza zarówno wypisany tekst, jak i zawartość plików.
- W przykładach Pliki przed: pokazuje zawartość katalogu roboczego przed uruchomieniem programu, a Pliki po: — stan wybranych plików po jego zakończeniu. Każda linia to ścieżka pliku, a linie zaczynające się od
|to kolejne wiersze jego treści. Ścieżka zakończona/to pusty folder,(rozmiar: N B)oznacza plik o rozmiarze N bajtów, a(usunięty)— plik, którego po zakończeniu programu ma już nie być. - Pliki tekstowe są zapisane w kodowaniu UTF-8 — otwieraj je przez
open(sciezka, encoding="utf-8"). - Rozszerzenie to końcówka nazwy pliku od ostatniej kropki (razem z nią), np.
archiwum.tar.gzma rozszerzenie.gz. Rozszerzenia porównuj bez względu na wielkość liter (.TXTto też.txt). - Listy plików wypisuj po jednym w linii, jako ścieżki względem podanego folderu z separatorem
/(np.2024/raport.txt), posortowane rosnąco tak, jak sortuje napisy funkcjasorted(). Na Windowsie ścieżki mają separator\— zamień go na/(np. metodąPath.as_posix()). - Komunikaty dla przypadków brzegowych wypisuj dokładnie w podanej postaci, np.
Folder nie istnieje.,Plik nie istnieje.,Brak plików. - Program nie wypisuje komunikatów typu „Podaj ścieżkę:”. Tekst podany w
input("…")jest ignorowany przez sprawdzarkę.
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomionologi/ip.txt
1.0.0.1 1.1.1.1 8.8.4.4 8.8.8.8
logi/ip.txt8.8.8.8 1.1.1.1 8.8.4.4 1.0.0.1
Test 2
Nie uruchomionoserwery.txt
2.0.0.0 10.0.0.3 10.0.0.20 10.0.0.100 10.0.1.1
serwery.txt10.0.0.20 10.0.0.3 10.0.1.1 2.0.0.0 10.0.0.100
Test 3
Nie uruchomionoip.txt
9.255.255.255 100.2.3.4 100.2.3.4 100.10.0.0
ip.txt100.2.3.4 9.255.255.255 100.2.3.4 100.10.0.0
Test 4
Nie uruchomionojeden.txt
127.0.0.1
jeden.txt127.0.0.1
Test 5
Nie uruchomionopuste.txt
Brak adresów.
puste.txt
Test 6
Nie uruchomionopuste wiersze.txt
Brak adresów.
puste wiersze.txt
Test 7
Nie uruchomionoip.txt
Plik nie istnieje.
adresy.txt1.2.3.4