I_R_PY_W13A_M06 Zbiory
Ile liczb udało mi się trafić?
Znasz zapewne gry liczbowe polegające na odgadywaniu wylosowanych wcześniej liczb. Napiszemy program, który będzie sprawdzał, ile liczb spośród wylosowanych udało się odgadnąć.
Skopiuj zaprezentowany kod, wklej go do pustego pliku i zapisz pod nazwą ile_trafionych.py.
W programie używamy krotek do zapisania wylosowanych liczb oraz typowanych liczb. Elementy krotek, podobnie jak i list, możemy wskazywać za pomocą indeksów. Instrukcja warunkowa if moje_typy[0] in wylosowane_liczby: sprawdza, czy pierwsza liczba z krotki moje_typy znajduje się w krotce wylosowane_liczby. Dwie kolejne instrukcje robią to samo dla kolejnych typów i zwiększają zmienną ile_trafionych dla każdego trafienia.
Ręczne podawanie indeksów kolejnych typów oraz powtarzanie instrukcji warunkowych nie jest dobrym sposobem zliczania poprawnych typów. Do ulepszenia programu moglibyśmy użyć pętli, ale jeszcze szybciej uzyskamy wynik za pomocą operacji na zbiorach.
Zbiory zawierają niepowtarzające się elementy. Mogą to być liczby, ciągi znaków i inne typy danych. Struktury te nie zapisują pozycji dodawanych elementów, więc nie obsługują indeksacji.
Program ile_trafionych.py zapisz pod nazwą zbior_trafionych.py
Pozostaw w programie krotki z danymi, pozostały kod zastąp poniższym:
Skopiuj swój kod i umieść go tutaj:
Polecenie set() przekształca podaną krotkę lub listę na zbiór, jednocześnie eliminuje ewentualne powtarzające się wartości. Operator & oznacza operację wyznaczania części wspólnej dwóch (lub więcej) zbiorów. W naszym wypadku otrzymamy zbiór zawierający liczby występujące w obydwu krotkach: {3, 1}. Funkcja len() – podobnie jak wypadku list i krotek – zwraca nam liczbę elementów w zbiorze.