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ść zmiennejcatjest zgodna z poszukiwanym kotem, przechowywanym w zmiennejmissing_cat. - Jeśli warunek z
ifzostanie 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.

