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ść zmiennej cat jest zgodna z poszukiwanym kotem, przechowywanym w zmiennej missing_cat.
  • Jeśli warunek z if zostanie spełniony ,wykona się wtedy ciało tej instrukcji – czyli print().

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()):

breakpoint w kodzie

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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *