Język programowania Python

Przejdź do ćwiczeń do tego tematu »

Python jest obecnie najczęściej wybieranym językiem programowania dla początkujących programistów. Nie jest to jednak wyłącznie język do nauki – jest on również powszechnie stosowany przez zawodowych programistów na całym świecie. W Umiemy informatykę używamy języka Python 3.

Jeżeli zamierzasz dużo programować w Pythonie, warto zainstalować go na swoim komputerze. Jednak do opanowania podstaw wystarczy przeglądarka. Umiemy informatkę oferuje wiele ćwiczeń i przykładów, które można rozwiązywać bezpośrednio na stronie:

  • Zacznij od ćwiczenia Decydowanie, w którym wystarczy wybrać poprawną odpowiedź z dwóch propozycji. Gdy poczujesz się pewniej, przejdź do ćwiczenia Wpisywanie odpowiedzi, w którym należy samodzielnie odgadnąć odpowiedź i wpisać ją na klawiaturze.
  • Czytanie kodu możesz potrenować w ćwiczeniu Kod kostki, w którym Twoim zadaniem jest analiza i poprawne wykonanie gotowego programu.
  • Przede wszystkim jednak spróbuj samodzielnego programowania. Służą do tego ćwiczenia Programowanie w Pythonie oraz Żółw Python. Program wpisuje się bezpośrednio w przeglądarce, gdzie można go uruchomić i automatycznie sprawdzić, czy działa poprawnie.

Dla zupełnie początkujących polecamy na rozgrzewkę zadania z sekcji myślenie algorytmiczne, gdzie podstawowe koncepcje programowania można poznać w formie graficznej.

Do góry

Funkcje matematyczne w Pythonie

Przejdź do ćwiczeń do tego tematu »

Python oferuje wbudowane funkcje do podstawowych operacji matematycznych, np.:

abs(x)        # wartość bezwzglęna x

round(x)      # wartość x zaokrąglona(do liczby całkowitej)

round(x, 2)   # wartość x zaokrąglona do dwóch miejsc po przecinku

min(x, y)     # minimum z x, y

max(x, y, z)  # maximum z x, y

Inne przydatne funkcje (np. log, sqrt, sin, floor) Python udostępnia w bibliotece math.

Do góry

Program w Pythonie składa się z wielu instrukcji, które łączymy w odpowiedni sposób.

  • Sekwencja poleceń oznacza wykonywanie instrukcji jedno po drugim, w ustalonej kolejności. Należy zwracać uwagę zarówno na ich dobór, jak i na właściwe uporządkowanie.
  • Instrukcja warunkowa umożliwia wykonanie określonych poleceń tylko wtedy, gdy spełniony jest podany warunek.
  • Pętle for i while służą do wielokrotnego wykonywania instrukcji. Każda z nich ma nieco inne zastosowanie, dlatego warto dokładnie przećwiczyć obie konstrukcje.
  • Struktury sterujące można zagnieżdżać, na przykład umieszczając instrukcję warunkową wewnątrz pętli. Pętlom zagnieżdżonym poświęciliśmy osobny temat, ponieważ początkujący programiści często napotykają w tym obszarze trudności.
  • Programy dzielimy na funkcje, tóre pozwalają na wielokrotne wykorzystywanie tych samych fragmentów kodu.

Osobom rozpoczynającym naukę języka Python pomocne może być wykonanie ćwiczeń z podstaw myślenia algorytmicznego, umożliwiających praktyczne przećwiczenie użycia pętli i instrukcji warunkowych w środowisku programowania graficznego.

Do góry

Instrukcja warunkowa (if) w Pythonie

Przejdź do ćwiczeń do tego tematu »

Warunkowe wykonanie polecenia zapisujemy za pomocą if. Warunek może być dowolnym wyrażeniem logicznym. W ramach warunku możemy wykonać również więcej niż jedno polecenie. Blok poleceń oznaczamy wcięciem:

if answer != 42:           # polecenia zostaną wykonane tylko, jeśli warunek jest spełniony:

    print("Bad answer")    # wyświetlamy komunikat

    answer = 42            # dodatkowo zmieniamy zmienną

Gałąź else

Możemy również określić, co ma się stać, gdy warunek nie jest spełniony. W tym celu używamy polecenia else, po którym następuje wcięty blok poleceń:

if x < 10:

    print("small")    # wykona się, jeśli warunek jest prawdziwy

else:

    print("big")      # wykona się, jeśli warunek jest fałszywy

Poszczególne warianty obliczeń nazywamy gałęziami, a całą instrukcję warunkową możemy również określać jako rozgałęzienie.

Wielokrotne rozgałęzienie

Jeśli chcemy sprawdzić kilka możliwości, możemy użyć konstrukcji if / elif / else. W niektórych językach programowania do wielokrotnego rozgałęzienia używa się polecenia switch, ale w Pythonie wystarczy elif. Na przykład:

if age < 6:

    print("przedszkolak")

elif age < 18:        # sprawdzane, jeśli poprzedni warunek nie był prawdziwy

    print("uczeń")

elif age < 65:        # sprawdzane, jeśli żaden poprzedni warunek nie jest był prawdziwy

    print("dorosły")

else:                 # wykona się, jeśli żaden poprzedni warunek nie jest prawdziwy

    print("emeryt")

Z if/elif wykona się maksymalnie jedna – pierwsza, dla której warunek jest prawdziwy. W naszym przykładzie, jeśli w zmiennej age znajduje się wartość 15, zostanie wyświetlone tylko „uczeń”. Warunek age < 65 również jest prawdziwy, ale Python już go nie sprawdza.

Rozgałęzienia zagnieżdżone

Czasem polecenia warunkowe mogą zawierać kolejne rozgałęzienia. Mówimy wówczas o zagnieżdżaniu. W przypadku kolejnych gałęzi musimy zwiększyć wcięcie. Możemy napisać na przykład:

if choice == "tea":

    if money >= 10:

        print("ok")

    else:

        print("refuse")

else:

    print("not available")



if n % 2 == 1:

    if x > 13:

        print("Win!")

W niektórych przypadkach zamiast zagnieżdżonego kodu łatwiej i przejrzyściej jest użyć prostego polecenia warunkowego z warunkiem wykorzystującym operatory logiczne. Na przykład ostatni przykład możemy uprościć w ten sposób:

if n % 2 == 1 and x > 13:

    print("Win!")
Do góry

W programowaniu wykorzystujemy pętle do powtarzania grupy poleceń. Powtórzenie często nazywamy iteracją.

Pętli for używamy w sytuacji, gdy z góry znamy liczbę powtórzeń. W pozostałych przypadkach używamy pętli while.

Prosta pętla for

Podstawowe zastosowanie pętli for polega na zwykłym powtarzaniu zestawu poleceń. Za pomocą for i in range(10) powtórzymy zestaw poleceń 10 razy. Polecenia, które mają być powtarzane, muszą być wcięte. W poniższy sposób wypiszemy dziesięć razy Hello:

for i in range(10):

    print("Hello")

Zmienna sterująca

W trakcie działania pętli zmienia się wartość zmiennej sterującej (w powyższym przykładzie jest to i). W każdym powtórzeniu pętli możemy więc wykonać coś nieco innego, w zależności od aktualnej wartości tej zmiennej. To, jakie wartości przyjmuje zmienna sterująca, określa część znajdująca się po słowie in. Jeśli użyjemy podstawowego range, zmienna sterująca będzie stopniowo zwiększana o jeden. Na przykład poniższa pętla wypisze liczby od 0 do 9:

for i in range(10):

    print(i)

W ramach pętli możemy korzystać z wielu zmiennych, ale tylko wartość zmiennej sterującej zmienia się automatycznie. Rozważmy przykład:

y = 1

z = 2

for x in range(10):

    y = x + y + z

    print(x, y, z)

Zmienną sterującą pętli jest x, którego wartość będzie się stopniowo zmieniać (od 0 do 9). Wartość zmiennej y również będzie się zmieniać, ponieważ wewnątrz pętli znajduje się instrukcja przypisania do y. Natomiast wartość zmiennej z pozostanie we wszystkich iteracjach taka sama, ponieważ z nie jest zmienną sterującą ani nie przypisujemy do niej niczego w pętli.

Zastosowanie range

W podstawowych zastosowaniach łączymy pętlę for z funkcją range, która zwraca przedział liczb, a zmienna sterująca przyjmuje kolejne wartości z tego przedziału.

Uwaga: w informatyce często liczymy od zera (a nie od jedynki jak zazwyczaj). Dlatego tutaj range(n) zwraca wartości od 0 do n-1.

Jeśli funkcji range podamy dwa parametry, tzn. wywołamy range(a, b), to otrzymamy przedział liczb od a do b-1. Możemy podać także trzeci parametr określający długość kroku. Na przykład:

for x in range(5, 13): print(x, end=" ")     # 5 6 7 8 9 10 11 12

for x in range(5, 16, 3): print(x, end=" ")  # 5 8 11 14

for x in range(8, 0, -1): print(x, end=" ")  # 8 7 6 5 4 3 2 1

Pętli for można używać nie tylko w połączeniu z range, lecz także z innymi typami danych – na przykład z listami:

for x in [3, 7, 10]:

    print(x)

Przykłady użycia pętli for

Parzyste i nieparzyste

Wypisanie informacji o parzystości i nieparzystości pierwszych n liczb:

n = 20

for i in range(1, n+1):

    if i % 2 == 0:

        print(i, "jest parzysta")

    else:

        print(i, "jest nieparzysta")

Suma ciągu liczb

Obliczenie sumy liczb od 1 do n:

n = 10

s = 0

for i in range(1, n+1):

    s = s + i

print("Suma od 1 do", n, "wynosi", s)

Potęgi liczby dwa

Wypisanie informacji o pierwszych n potęgach liczby dwa:

n = 10

for x in range(1, n+1):

    print("Dwa do potęgi", x, "wynosi", 2**x)
Do góry

Funkcja jest nazwanym blokiem poleceń. Funkcjom możemy przekazywać argumenty.

Definicja funkcji

Python oferuje całą gamę funkcji wbudowanych, czyli takich, które zostały już przygotowane przez twórców języka. Przykładem jest funkcja len, która oblicza długość łańcucha znaków.

Własną funkcję definiujemy za pomocą słowa kluczowego def:

def say_hello(name):

    print("Hello", name)

W ten sposób zdefiniowaliśmy funkcję say_hello, która ma parametr name. Funkcja może mieć również więcej parametrów.

Wywoływanie funkcji

Samo zdefiniowanie funkcji nie powoduje jej wykonania. Aby funkcja została wykonana, musimy ją wywołać. Robimy to, zapisując nazwę funkcji i przekazując w nawiasach konkretny argument:

say_hello("Alice")  # wypisze Hello Alice

say_hello("Bob")    # wypisze Hello Bob

Niektóre funkcje nie mają parametrów. Przy ich wywołaniu nadal musimy podać nawiasy, np. say_goodbye().

Wartość zwrotna

Funkcja może zwracać wartość zwrotną za pomocą słowa kluczowego return. Poniższa funkcja oblicza i zwraca silnię.

def factorial(n):

    f = 1

    for i in range(1, n+1):

        f = f*i

    return f

Taka funkcja sama w sobie nic nie wykonuje, jedynie zwraca wartość, z którą możemy dalej pracować.

factorial(5)         # obliczy wartość silni z 5, ale potem ta

                     # wartość nie zostanie w żaden sposób użyta

print(factorial(4))  # tym razem wypiszemy wynik obliczeń

x = factorial(6)     # wynik obliczeń zostanie zapisany do zmiennej

print(x)             # a następnie możemy np. wypisać wartość zmiennej

Instrukcja return kończy wykonywanie funkcji. Zatem przy wywołaniu poniższej funkcji zostanie wypisane tylko foo:

def test():

    print("foo")

    return 0

    print("bar")

Różnice między return a print

Częstym źródłem problemów u początkujących programistów jest prawidłowe użycie print i return w funkcjach.

Użycie print powoduje natychmiastowe wypisanie wartości, jednak nie można z tą wartością dalej pracować.

Użycie return kończy działanie funkcji i zwraca wartość. Nie jest ona automatycznie wypisywana, ale możemy przypisać ją do zmiennej i dalej z nią pracować.

Do góry

Słownik (dictionary, dict) pozwala przechowywać dane w postaci par: klucz – wartość. Każdemu kluczowi przypisana jest konkretna wartość. Dzięki temu możemy w prosty sposób zapisać np. informację o liczbie owoców w magazynie.

Tworzenie słownika

Słownik tworzymy przy użyciu nawiasów klamrowych.

fruits = {"apple": 5,

          "banana": 10,

          "orange": 2}



empty_dictionary = {}    # pusty słownik

Dostęp do elementów

Aby odczytać wartość przypisaną do danego klucza, używamy nawiasów kwadratowych. W ten sam sposób możemy dodać nowy element do słownika.

print(fruits["apple"])

fruits["pear"] = 3

Jeśli spróbujemy odwołać się do klucza, którego nie ma w słowniku, Python zgłosi błąd. Aby tego uniknąć, warto skorzystać z get:

print(fruits["plum"])    # => KeyError: 'plum'

print(fruits.get("plum", 0))   # jeśli elementu nie ma w słowniku,

                               # zwróci podaną wartość (0)

Przydatne operacje na słownikach

Python udostępnia kilka funkcji, które ułatwiają pracę ze słownikami:

len(fruits)        # liczba kluczy w słowniku

fruits.keys()      # wszystkie klucze, czyli 'pear', 'orange', 'banana', 'apple'

fruits.values()    # wszystkie wartości, czyli 10, 2, 3, 5

"apple" in fruits  # sprawdzenie, czy klucz istnieje w słowniku
Do góry
NAPISZ DO NAS

Twoja wiadomość została wysłana. Dziękujemy.

Napisz do nas

Jesteś w kropce?

Zanim zadasz pytanie, zapoznaj się z instrukcjami:

Prosimy o nieprzesyłanie próśb o gotowe rozwiązania. Jeśli zgłaszasz błąd, dokładnie opisz, czego dotyczy, i dołącz zrzut ekranu.

Wybierz temat

Wiadomość Zgłoszenie błędu Treści Sterowanie Logowanie Licencja