1.4.2. Instrukcje warunkowe

1.4.2.1. Trzy liczby

ZADANIE: Pobierz od użytkownika trzy liczby, sprawdź, która jest najmniejsza i wydrukuj ją na ekranie.

POJĘCIA: pętla while, obiekt, typ danych, metoda, instrukcja warunkowa zagnieżdżona.

Kod nr
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#! /usr/bin/env python3
# -*- coding: utf-8 -*-

op = "t"
while op == "t":
    a, b, c = input("Podaj trzy liczby oddzielone spacjami: ").split(" ")

    print("Wprowadzono liczby:", a, b, c)
    print("\nNajmniejsza:")

    if a < b:
        if a < c:
            najmniejsza = a
        else:
            najmniejsza = c
    elif b < c:
        najmniejsza = b
    else:
        najmniejsza = c

    print(najmniejsza)

    op = input("Jeszcze raz (t/n)? ")

print("Koniec.")

Pętla while warunek umożliwia powtarzanie bloku operacji, dopóki warunek jest prawdziwy. W tym wypadku dopóki zmienna op ma wartość “t”. Zwróć uwagę na operator porównania: ==.

W Pythonie wszystko jest obiektem. Każdy obiekt przynależy do jakiegoś typu i ma jakąś wartość. Typ determinuje, jakie operacje można wykonać na wartości danego obiektu. Funkcja input() zwraca pobrane dane jako napis (typ string). Metoda split(separator) pozwala rozbić napis na składowe (w tym wypadku liczby).

Instrukcje warunkowe (if), jak i pętle, można zagnieżdżać stosując wcięcia. Instrukcje o takich samych wcięciach tworzą bloki kodu. W jednej złożonej instrukcji warunkowej można sprawdzać wiele warunków (elif:).

1.4.2.1.1. Zadania

Sprawdź, co się stanie, jeśli podasz liczby oddzielone przecinkiem lub podasz za mało liczb. Zmień program tak, aby poprawnie interpretował dane oddzielane przecinkami.

1.4.2.2. Trójkąt

ZADANIE: Napisz program, który na podstawie danych pobranych od użytkownika, czyli długości boków, sprawdza, czy da się zbudować trójkąt i czy jest to trójkąt prostokątny. Jeżeli da się zbudować trójkąt, należy wydrukować jego obwód i pole, w przeciwnym wypadku komunikat, że nie da się utworzyć trójkąta.

POJĘCIA: pętla for, obiekt, typ danych, metoda, lista, instrukcja warunkowa zagnieżdżona.

Kod nr
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import math  # dołączamy bibliotekę matematyczną

op = "t"  # deklarujemy i inicjujemy zmienną pomocniczą
while op != "n":  # dopóki wartość zmiennej op jest inna niż znak "n"
    dane = input("Podaj 3 boki trójkąta (oddzielone przecinkami): ")

    lista = []  # definicja pustej listy
    for x in dane.split(","):
        lista.append(int(x))  # dodanie lementu do listy
    a, b, c = lista  # rozpakowanie listy
    # wyrażenie listowe, które zastępuje kod 10-13:
    # a, b, c = [int(x) for x in dane.split(",")]

    print("Podano boki: ", a, b, c)

    if a + b > c and a + c > b and b + c > a:  # warunek złożony
        print("Z podanych boków można zbudować trójkąt.")
        # czy boki spełniają warunki trójkąta prostokątnego?
        if (a**2 + b**2 == c**2 or
                a**2 + c**2 == b**2 or
                b**2 + c**2 == a**2):
            print("Do tego prostokątny!")

        # na wyjściu możemy wyprowadzać wyrażenia
        print("Obwód wynosi:", (a + b + c))
        p = 0.5 * (a + b + c)  # obliczmy współczynnik wzoru Herona
        # liczymy pole ze wzoru Herona
        P = math.sqrt(p * (p - a) * (p - b) * (p - c))
        print("Pole wynosi:", P)
        op = "n"  # ustawiamy zmienną na "n", aby wyjść z pętli while
    else:
        print("Z podanych odcinków nie można utworzyć trójkąta prostokątnego.")
        op = input("Spróbujesz jeszcze raz (t/n): ")

print("Do zobaczenia...")

Pętla while działa podobnie jak w poprzednim przykładzie, ale wykorzystuje warunek sformułowany przy wykorzystaniu operatora “różne od”: !=.

Metoda split(",") zwraca listę napisów wyodrębnionych z podanego ciągu. Lista (zob. lista) to sekwencja uporządkowanych danych, np. [‘3’, ‘4’, ‘5’]. Do przeglądania takich sekwencji używa się pętli for.

Pętla for zmienna in sekwencja odczytuje kolejne elementy sekwencji i udostępnia je w zmiennej. W ciele pętli zmienną skonwertowaną na liczbę całkowitą dodajemy do nowej listy za pomocą metody append().

Zapis a, b, c = lista jest przykładem rozpakowania listy, co polega na przypisaniu zmiennym z lewej strony kolejnych wartości z listy.

Informacja

Pętle, które wykonują jakieś operacje na sekwencjach i zapisują je w listach zastępuje się w Pythonie tzw. wyrażeniami listowymi. Zostaną one omówione w kolejnych przykładach.

Operatory logiczne:

  • and – koniunkcja (“i”), wskazuje, że obydwa warunki muszą być prawdziwe;
  • or – alternatywa (“lub”), przynajmniej jeden z podanych warunków powinien być prawdziwy.

Działania matematyczne:

  • x**y – podnoszenie podstawy x do potęgi y;
  • sqrt() – funkcja z modułu math, oblicza pierwiastek kwadratowy.

Licencja Creative Commons Materiały Python 101 udostępniane przez Centrum Edukacji Obywatelskiej na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowa.

Utworzony:2018-04-12 o 19:31 w Sphinx 1.5.3
Autorzy:Patrz plik “Autorzy”