Numerowanie wierszy do końca danych
Treść zadania
Wczytuj wiersze tekstu aż do końca danych wejściowych — nie wiadomo z góry, ile ich będzie. Wypisz wszystkie niepuste wiersze, poprzedzając każdy jego numerem w wejściu, a na końcu podaj, ile było wszystkich wierszy i ile niepustych.
Wiersz jest pusty, jeśli nie zawiera żadnych znaków albo zawiera same spacje. Puste wiersze nie są wypisywane, ale liczą się do numeracji.
Dane wejściowe
- dowolna liczba wierszy tekstu (także zero)
Dane wyjściowe
- Dla każdego niepustego wiersza jedna linia w formacie
nr | wiersz, gdzienrto numer wiersza w wejściu (od 1) wyrównany do prawej na szerokości 3 znaków, np.1 | Ala,12 | kot. Wiersz wypisz bez zmian (z ewentualnymi spacjami na początku). - Ostatnia linia:
Wierszy: X, niepustych: Y.
Uwagi
- Wszystkie wiersze aż do końca danych wczytasz za pomocą modułu
sys:sys.stdin.read().splitlines()zwraca listę wierszy (bez znaków końca linii). Można też przejść po wierszach pętląfor wiersz in sys.stdin:— wtedy każdy wiersz kończy się znakiem"\n", który usuniesz przezwiersz.rstrip("\n"). - Wpisując dane ręcznie w konsoli, koniec danych zasygnalizujesz skrótem
Ctrl+D(Linux, macOS) alboCtrl+ZiEnter(Windows). - Liczbę wyrównasz do prawej na szerokości 3 znaków w f-stringu:
f"{nr:>3}". - Numerować wiersze pomoże
enumerate(wiersze, start=1).
Przykład
Ala ma kota Kot ma Alę
1 | Ala ma kota 3 | Kot ma Alę Wierszy: 3, niepustych: 2
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 11
Zadania w tym rozdziale ćwiczą podstawowe operacje na napisach: indeksowanie, wycinanie, zamianę znaków, dzielenie zdania na słowa i składanie napisów z części.
Konwencje wspólne:
- Każde zadanie jest osobnym programem: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- Program nie wypisuje komunikatów typu „Podaj napis:”.
- Napis lub zdanie wczytuj jako całą linię — może zawierać spacje.
- Słowo to fragment zdania oddzielony od innych spacjami. Znaki interpunkcyjne (np.
.,!?;:-()") stojące na początku lub końcu fragmentu nie należą do słowa (kota.→kota), a fragment złożony wyłącznie z interpunkcji (np. samotny myślnik-) nie jest słowem. W Pythonie słowa uzyskasz tak: podziel zdanie metodąsplit(), z każdego fragmentu usuń interpunkcję metodąstrip(string.punctuation)i pomiń puste wyniki. - Gdy wynikiem jest lista, wypisz ją tak, jak robi to
print(lista)w Pythonie, np.['Ala', 'ma', 'kota']. Pusta lista to[].
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 uruchomionojeden
1 | jeden Wierszy: 1, niepustych: 1
Test 2
Nie uruchomiono(brak)
Wierszy: 0, niepustych: 0
Test 3
Nie uruchomionoa b
1 | a 4 | b Wierszy: 4, niepustych: 2
Test 4
Nie uruchomionow1 w2 w4 w5 w6 w7 w8 w9 w10 w12
1 | w1 2 | w2 4 | w4 5 | w5 6 | w6 7 | w7 8 | w8 9 | w9 10 | w10 12 | w12 Wierszy: 12, niepustych: 10
Test 5
Nie uruchomionowcięty wiersz koniec
1 | wcięty wiersz 2 | koniec Wierszy: 2, niepustych: 2