Z klawiatury zawsze przychodzi napis: int() i float()
Co się dzieje, gdy ktoś wpisze literę zamiast liczby
Program Szarlotka: od specyfikacji do sumy jabłek
Rozgrzewka · 3 minuty
Co pamiętacie z lekcji 2?
Co robi znak = w zapisie age = 16?
Wymieńcie cztery typy danych z poprzedniej lekcji i podajcie przykład każdego.
Co wypisze print("Ala", "ma", 2, "koty")?
Część 1 · Instrukcja wejścia
input: program czeka na Was
Funkcja input to instrukcja wejścia: zatrzymuje program i czeka, aż wpiszecie coś z klawiatury i wciśniecie Enter. Tekst podany w nawiasie jako argument (tekst zachęty) wypisuje się bez przejścia do nowej linii, więc kursor zostaje w tej samej linii.
name = input("Podaj swoje imię: ")
print(name, "uczy się programowania.")
Podaj swoje imię: Janek
Janek uczy się programowania.
Ta sama rzecz da się zapisać dwiema linijkami: print("Podaj swoje imię:") i osobno name = input(). Wtedy pytanie stoi w jednej linii, a odpowiedź w następnej.
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 96 (6.3 Tworzymy własne programy użytkowe, program Powitanie, funkcja input, instrukcja wejścia) · docs.python.org, wbudowana funkcja input (argument prompt)
Część 2 · Napis kontra liczba
Z klawiatury przychodzi napis
Funkcja input zawsze oddaje napis (typ str), nawet gdy wpiszecie same cyfry. Napisy Python skleja zamiast dodawać, dlatego "4" + "5" daje "45". Funkcja int zamienia taki napis na liczbę całkowitą.
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 99 (6.3 Tworzymy własne programy użytkowe, funkcja int, ramka „Warto wiedzieć”) · docs.python.org, wbudowane funkcje input i int
Część 2 · Dwie funkcje zamiany
int() i float(): całość albo ułamek
Zapis
Wynik
Typ wyniku
Kiedy tak robimy
int("16")
16
int
wiek, liczba jabłek, liczba punktów
float("4.99")
4.99
float
cena, waga, temperatura
float("7")
7.0
float
gdy chcemy liczyć na ułamkach
int(4.99)
4
int
ucina część po kropce, nie zaokrągla
int("4.5")
błąd ValueError
brak wyniku
nigdy: napis z kropką bierze float
Skąd nazwa:float to skrót od angielskiego floating point number, czyli liczba zmiennoprzecinkowa. Część ułamkową oddziela w niej kropka, nie przecinek, więc float("4,99") kończy się błędem.
docs.python.org, wbudowane funkcje int i float · docs.python.org, The Python Tutorial, rozdz. 3.1.1 (Numbers) · Podręcznik Informatyka na czasie 2 (Nowa Era), s. 223 (dodatek 6 „Typy danych w języku Python”)
Część 2 · Gdy dane są złe
Użytkownik wpisał literę zamiast liczby
ania_apples = int(input("Aniu, ile masz jabłek? "))
Aniu, ile masz jabłek? cztery
Traceback (most recent call last):
File "apples.py", line 1, in <module>
ania_apples = int(input("Aniu, ile ..."))
ValueError: invalid literal for int()
with base 10: 'cztery'
Funkcja int umie zamienić na liczbę tylko napis złożony z cyfr. Napis "cztery" cyfr nie zawiera, więc program przerywa pracę i wypisuje komunikat o błędzie.
Czytamy go od dołu: ostatnia linia podaje rodzaj błędu (ValueError, czyli zła wartość) i to, co się nie dało zamienić. Linie wyżej mówią, w którym pliku i w której linijce.
docs.python.org, wbudowane funkcje int i float (zamiana napisu na liczbę) · docs.python.org, The Python Tutorial, rozdz. 3.1.1 (Numbers)
Część 3 · Specyfikacja i lista kroków
Czy starczy na szarlotkę?
Dane: liczba jabłek zebranych przez Anię i Wojtka wprowadzona z klawiatury. Wynik: informacja, czy suma zebranych jabłek wystarczy na szarlotkę, lub komunikat o tym, że liczba jabłek jest niewystarczająca.
Zapytaj Anię o to, ile ma jabłek. Zapamiętaj tę liczbę.
Zapytaj Wojtka o to, ile ma jabłek. Zapamiętaj tę liczbę.
Oblicz sumę liczb z kroków 1 i 2. Zapamiętaj tę sumę.
Jeśli suma jest liczbą mniejszą niż 15, to wypisz informację, że jabłek jest za mało na szarlotkę. W przeciwnym razie wypisz informację, że liczba jabłek jest wystarczająca.
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 97–98 (6.3 Tworzymy własne programy użytkowe, program Szarlotka, ramka „Specyfikacja” i lista kroków)
Część 3 · Symulacja
Sprawdzamy algorytm zanim powstanie kod
Symulacja to przejście listy kroków ołówkiem, dla przykładowych liczb. Jeśli w algorytmie jest błąd, tu go widać, a poprawka nic nie kosztuje.
Wyjście
Wejście
Działania
Aniu! Ile masz jabłek?
4
Wojtku! Ile masz jabłek?
5
4 + 5 = 9
Czy 9 < 15
Jabłek jest za mało.
Podręcznik Informatyka na czasie 2 (Nowa Era), s. 98 (6.3 Tworzymy własne programy użytkowe, tab. 6.1 „Symulacja algorytmu Szarlotka”)