Przejdź do treści głównej
INF.04Pytanie #653 z 856jezyk-python-skladnia-i-moduly

Jaki będzie wynik wykonania powyższego kodu w języku Python?

Opcje odpowiedzi:
A
[]
B
[20, 40]
Prawidłowa
C
[10, 30, 50]
D
Kod spowoduje błąd w trakcie działania (RuntimeError)
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: B

B. [20, 40] – Ten kod demonstruje częstą pułapkę: modyfikowanie listy podczas iterowania po niej. Iterator pętli for przesuwa się po indeksach, a nie po wartościach. Gdy usuwamy element, pozostałe elementy przesuwają się w lewo, co powoduje, że iterator 'omija' niektóre z nich.

  1. Pętla zaczyna od num = 10. 10 zostaje usunięte. Lista wygląda tak: [20, 30, 40, 50]. Iterator przesuwa się na następny indeks (indeks 1).
  2. Elementem na indeksie 1 jest teraz 30 (ponieważ 20 przesunęło się na indeks 0). Wartość 20 zostaje pominięta. num przyjmuje wartość 30.
  3. 30 zostaje usunięte. Lista wygląda tak: [20, 40, 50]. Iterator przesuwa się na następny indeks (indeks 2).
  4. Elementem na indeksie 2 jest teraz 50. Wartość 40 zostaje pominięta. num przyjmuje wartość 50.
  5. 50 zostaje usunięte. Lista wygląda tak: [20, 40]. Pętla próbuje przejść do następnego indeksu, ale lista ma już tylko 2 elementy, więc pętla się kończy.

Dlaczego inne odpowiedzi są nieprawidłowe:

  • A. [] – To intuicyjna, ale błędna odpowiedź. Jak widać, pętla nie przetwarza wszystkich elementów.

  • C. [10, 30, 50] – Jest to wynik błędnego śledzenia działania pętli.

  • D. Kod spowoduje błąd... – Chociaż modyfikowanie listy w ten sposób jest złą praktyką, w Pythonie nie prowadzi to do błędu wykonania (RuntimeError), a jedynie do nieoczekiwanego logicznie rezultatu.

Chcesz poćwiczyć całą kwalifikację INF.04?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF04
Reklama

Podobne pytania z działu „Jezyk python skladnia i moduly”

Ten sam obszar materiału z kwalifikacji INF.04. W całej bazie znajdziesz 5 pytań z tego działu.