Python • kurs podstawowy • lekcja 05
None, brak wartości i wartości puste
Przed pierwszą rundą wynik może być nieznany.
Twój cel: Odróżnisz nieustalony wynik od zera, pustego napisu i False.Typy int, str i bool.
Co ma zrobić program?
Po rozegranej rundzie może wynosić zero. To dwie różne informacje. None jest specjalną wartością używaną do oznaczania braku konkretnego wyniku — nazwa przypisana do None istnieje.
Znaczenie braku ustala projekt programu. W naszym przykładzie score = None oznacza „jeszcze nie grano”, a score = 0 „grano, zdobyto zero”. Pusty napis "" jest tekstem o długości zero. False jest wartością logiczną, np. odpowiedzią na pytanie „czy zakończono grę?”.
print() bez argumentów albo print("") daje pustą linię. Nie oznacza to, że instrukcja się nie wykonała. Aby zobaczyć pusty napis, umieścimy go między znacznikami wypisywanymi osobnymi argumentami print().
Przewidź przed uruchomieniem
score = None
print(score)
score = 0
print(score)
print("[", "", "]")
print(False)
Porównaj wynik i prześledź mechanizm
Pierwsza linia pokaże None, druga 0. Trzecia pokaże [ ] — dwa odstępy dodane przez print między argumentami, ale żadnych znaków pustego napisu. Ostatnia linia to False.
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
None
0
[ ]
False
| Stan | Wartość | Interpretacja |
|---|---|---|
| Przed rundą | None | Wynik nieustalony |
| Po rundzie bez punktów | 0 | Znany wynik |
| Pusty podpis | "" | Tekst bez znaków |
| Gra niezakończona | False | Odpowiedź logiczna |
Zmień działający program
Pokaż typ wartości None oraz typ napisu "None". Zwróć uwagę, że cudzysłowy zmieniają znaczenie.
Pierwsza wskazówka
Zachowaj działający punkt wyjścia. Zlokalizuj konstrukcję wskazaną w poleceniu i zmień tylko ten etap. Przed uruchomieniem zapisz oczekiwany efekt.
Porównaj swoją modyfikację
print(type(None))
print(type("None"))
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
<class 'NoneType'>
<class 'str'>
Znajdź przyczynę problemu
Celowo błędny przykład diagnostyczny. Najpierw postaw hipotezę. Nie kopiuj tej wersji jako poprawnego rozwiązania.
Zamierzone działanie: Zapisz rzeczywisty brak wyniku, nie napis.
score = "None"
print(type(score))
Trop do diagnozy
Porównaj zamierzony rezultat z typami, nazwami i kolejnością instrukcji. Wskaż pierwsze miejsce, w którym zachowanie odbiega od celu.
Zastosuj w nowej sytuacji
Wskazówka do rozpoczęcia
None jest wartością, a nie niezdefiniowaną nazwą. Zero i pusty tekst mogą być prawidłowymi danymi.
Zacznij od przygotowania danych. Pierwsza instrukcja przykładowego rozwiązania:
answer = None
Rozwiązanie do samodzielnej kontroli
answer = None
comment = ""
votes = 0
consent = False
print(answer)
print(comment)
print(votes)
print(consent)
Wynik kontrolny dla danych z przykładu. Wpisane odpowiedzi użytkownika nie są tutaj powtarzane:
None
0
False
Porównaj dane wejściowe, wynik i powód użycia konstrukcji. Inna wersja kodu jest poprawna, jeśli realizuje te same wymagania.
Co zabierasz do kolejnego programu?
None jest wartością, a nie niezdefiniowaną nazwą. Zero i pusty tekst mogą być prawidłowymi danymi.
Bez zaglądania do przykładu wyjaśnij własnymi słowami, jak główna konstrukcja prowadzi od danych do wyniku. Potem sprawdź wyjaśnienie, uruchamiając swój program.