.. _przyklad3: Pętle ##### .. note:: W tym przykładzie poznasz instrukcje iteracyjne, tzw. pętle, pozwalające powtarzać określone operacje. Zadanie ******** Napisz program :file:`alfabet.py`, który wypisze ``n`` początkowych małych i dużych liter alfabetu w jednym wierszu w formacie: "mała_litera–duża_litera". **Dane**: * ``n`` – liczba całkowita oznaczająca liczbę liter do wypisania. **Wynik**: * wypisane pary małych i dużych liter na ekranie, np. dla ``n = 5``: .. code:: a–A b–B c–C d–D e–E .. raw:: html
Plik alfabet.pyKod nr
.. highlight:: python .. literalinclude:: przyklad03.py :linenos: Pętla ``for`` ************* Liczba wykonań pętli ``for`` zależy od liczby elementów sekwencji znajdującej się po słowie kluczowym ``in``. Kolejne elementy sekwencji dostępne są w zmiennej iteracyjnej, w naszym przykładzie ma ona nazwę``i``. **Funkcja** ``range()`` generuje sekwencje liczb całkowitych, np.: - ``range(n)`` – zwraca kolejne liczby z zakresu ``<0, n-1>``, pętla wykona się ``n`` razy, - ``range(a, b)`` – zwraca kolejne liczby z zakresu ````, pętla wykona się ``b-a`` razy, - ``range(a, b, -1)`` – zwraca malejące liczby z zakresu ````, pętla wykona się ``a-b`` razy. .. note:: Jeżeli chcesz sprawdzić działanie funkcji ``range()`` w trybie interaktywnym interpretera, warto tę funkcję wywołać jako argument funkcji ``list()``, która zamienia generowaną sekwencję na listę, np.: ``list(range(65, 91))``. Inne przykłady sekwencji, których można użyć w pętli ``for``: - ciąg znaków, np. ``abcdefg``, - lista elementów, np. ``[2, 4, 6, 8]``. Pętla ``while`` *************** Pętla ``while warunek`` umożliwia powtarzanie bloku operacji, dopóki warunek jest prawdziwy, w tym przypadku dopóki ``i < n``. Zwróć uwagę, że początkowa wartość 0 zmiennej ``i`` jest w pętli zwiększana o 1: ``i += 1`` – aby pętla nie działała w nieskończoność. Operacje na znakach ******************* Wszystkim znakom przypisane są kody liczbowe, w przypadku 25 liter alfabetu łacińskiego są to kody `ASCII `_. Duże litery mają kody w zakresie ``<65, 90>``, natomiast małe litery w zakresie ``<97, 122>``. Do wykonywania operacji na znakach służą funkcje i metody typu ``string``: - ``ord(znak)`` – zwraca kod ASCII podanego znaku, - ``char(kod)`` – zwraca znak o podanym kodzie. - ``znak(i).upper()`` – metoda zwraca znak(i) zamienione na duże litery, - ``znak(i).lower()`` – metoda zwraca znak(i) zamienione na małe litery. Formatowane wyjście ******************** Jeżeli w wpisywanym komunikacie chcemy umieścić wartości zmiennych lub wyrażeń, najwygodniej używać formatowanych ciągów znakowych (ang. *f-strings*). Przed cudzysłowami dajemy małą literą ``f``, zmienne lub wyrażenia otaczamy nawiasami klamrowymi, np.: - ``print(f'{l_mala} – {l_duza}', end=' ')`` – dodatkowy argument ``end`` pozwala określić znak wstawiany na końcu wypisywanego komunikatu zamiast domyślnego znaku nowego wiersza. Ćw. 1 – odwrócony porządek -------------------------- Dodaj do programu :file:`alfabet.py` kod, który wypisze w jednym wierszu ``n`` małych i dużych liter zaczynając od końca alfabetu. .. tip:: Użyj funkcji ``range()``, która wygeneruje sekwencje malejących kodów ASCII. Możesz również użyć metod ``.upper()`` lub ``.lower()``. .. admonition:: Pojęcia :term:`pętla`, :term:`metoda`