Debugowanie if
Czas na trzecią wersję naszego programu, w której będziemy debugować konstrukcję if
!
Utwórz nowy plik cats_if.py. Użyj kodu z poprzedniej lekcji:
# Cats inventory advanced manager v2 (with for) print("Starting program") print("Preparing data") cat1 = "Kitty" cat2 = "Pussy" cat3 = "Paw" print("Initialising cats list") cats = [cat1, cat2, cat3] print("Returning cats") for cat in cats: print(f"Found cat: {cat}")
Wklej go do nowego pliku.
Zmiany w kodzie
Najpierw zmieńmy dokumentację – czyli pierwszą linię na:
# Cats inventory advanced manager v3 (with for and if)
Namieszamy trochę w pętli for
. Wyglądała ona wcześniej tak:
for cat in cats: print(f"Found cat: {cat}") print("Cat program finished")
Teraz będzie ona miała taką postać:
missing_cat = "Pussy" for cat in cats: if cat is missing_cat: print(f"Below cat reported as missing!") print(f"Found cat: {cat}") print("Cat program finished")
Co tu zmieniliśmy?
- Dodaliśmy zmienną związaną z zaginionym kotem
missing_cat = "Pussy"
. - Dodaliśmy instrukcję
if
. Sprawdzamy w niej czy wartość zmiennejcat
jest zgodna z poszukiwanym kotem, przechowywanym w zmiennejmissing_cat
. - Jeśli warunek z
if
zostanie spełniony ,wykona się wtedy ciało tej instrukcji – czyliprint()
.
Cały kod ze zmianami, które wprowadziliśmy:
# Cats inventory advanced manager v3 (with for and if) print("Starting program") print("Preparing data") cat1 = "Kitty" cat2 = "Pussy" cat3 = "Paw" print("Initialising cats list") cats = [cat1, cat2, cat3] print("Returning cats") missing_cat = "Pussy" for cat in cats: if cat is missing_cat: print(f"Cat in line below reported as missing!") print(f"Found cat: {cat}") print("Cat program finished")
Uruchom standardowo program i zobacz wartości wypisane na konsoli:
Starting program Preparing data Initialising cats list Returning cats Found cat: Kitty Cat in line below reported as missing! Found cat: Pussy Found cat: Paw Cat program finished
Debugujemy if!
Na początek umieść breakpoint w ciele instrukcji if
(przy print()
):
Po uruchomieniu debugowania wykonanie zatrzyma się w miejscu, którego dokładnie się spodziewaliśmy💪 Wartości dla zmiennych cat
i missing_cat
są identyczne.
Używając dalej akcji Step Over F8 zobaczysz, kolejne wykonania programu. Zwróć uwagę, że w następnym przebiegu pętli, ciało funkcji zostaje pominięte.
Gdyby nawet zmienna missing_cat
była gdzieś ukryta w naszym kodzie, to bez problemu w trybie Debug dowiedziałbyś się jaką ma wartość, i w którym przebiegu zostanie wykonana.
Skoro wiemy jak debugować if
spróbujmy czegoś bardziej skomplikowanego.