Sortowanie listy par względem kryterium
Treść zadania
Wczytaj listę par (napis, liczba) i zapisz je jako krotki.
a) Posortuj pary rosnąco według liczby.
b) Posortuj pary rosnąco według długości napisu.
Przy remisie (ta sama liczba w a), ta sama długość napisu w b)) pary zachowują kolejność z wejścia.
Dane wejściowe
- 1. linia: liczba par $N$
- kolejne $N$ linii: napis (bez spacji) i liczba całkowita, oddzielone spacją
Dane wyjściowe
- 1. linia: lista par posortowana według podpunktu a)
- 2. linia: lista par posortowana według podpunktu b)
Listy wypisz w formacie Pythona — tak, jak robi to print(lista) dla listy krotek, np. [('bca', 1), ('c', 2), ('ab', 3)].
Ograniczenia
- $1 \le N \le 20$
Uwagi
- Kryterium sortowania podaj w parametrze
key, np.sorted(pary, key=lambda para: para[1]).
Przykład
3 ab 3 bca 1 c 2
[('bca', 1), ('c', 2), ('ab', 3)]
[('c', 2), ('ab', 3), ('bca', 1)]
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 22
Zadania w tym rozdziale pokazują, jak sortować w praktyce: napisy, słowa, pary, obiekty — często według własnego kryterium. Tutaj wolno (a nawet warto) korzystać z wbudowanych narzędzi Pythona: sorted(), list.sort() i parametru key=.
Konwencje wspólne:
- Każde zadanie to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- Jeśli wejściem jest napis — wczytaj całą linię (łącznie ze spacjami).
- Jeśli wejściem jest lista — najpierw podana jest liczba elementów $N$, a potem elementy (w jednej linii albo w kolejnych liniach — zależnie od zadania).
- Napisy porównujemy tak jak Python, czyli według kodów znaków Unicode: wielkie litery są „mniejsze” od małych (
'Z' < 'a'), a polskie litery są „większe” od wszystkich liter alfabetu łacińskiego ('z' < 'ą'). - Sortowanie w Pythonie (
sorted(),list.sort()) jest stabilne: elementy równe według kryterium sortowania zachowują kolejność z wejścia. Korzystają z tego zadania, w których mogą wystąpić remisy. - Program nie wypisuje komunikatów typu „Podaj liczbę:”.
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 uruchomiono1 x 0
[('x', 0)]
[('x', 0)]
Test 2
Nie uruchomiono2 xx 5 a 1
[('a', 1), ('xx', 5)]
[('a', 1), ('xx', 5)]
Test 3
Nie uruchomiono4 kot 2 pies 1 mysz 2 os 1
[('pies', 1), ('os', 1), ('kot', 2), ('mysz', 2)]
[('os', 1), ('kot', 2), ('pies', 1), ('mysz', 2)]
Test 4
Nie uruchomiono3 abc -5 ab 10 a -7
[('a', -7), ('abc', -5), ('ab', 10)]
[('a', -7), ('ab', 10), ('abc', -5)]
Test 5
Nie uruchomiono5 dlugi 3 b 3 cc 3 ddd 0 e -1
[('e', -1), ('ddd', 0), ('dlugi', 3), ('b', 3), ('cc', 3)]
[('b', 3), ('e', -1), ('cc', 3), ('ddd', 0), ('dlugi', 3)]