Тест самоперевірки

Умови

Обери відповідь — і одразу побачиш пояснення. Помилитись тут корисніше, ніж на іспиті.

← до лекції
Відповіді0 / 8   правильних: 0
Питання 1 / 8

Температура дорівнює 5. Ланцюжок починається з «if температура < 0», далі «elif температура < 12», далі «elif температура < 22», далі else. Скільки умов Python реально обчислить?

Чому так. Умови перевіряються згори вниз, і перша істинна забирає все — решта не обчислюються взагалі. Варіант із трьома перевірками — типове хибне уявлення, ніби Python шукає «найкращу» гілку; насправді він шукає першу. А else умовою не є, тому й не обчислюється.
Питання 2 / 8

Яке з цих значень Python вважає ІСТИННИМ?

Чому так. Істинність колекції — це питання «чи вона порожня», а не «що всередині». У списку [0] один елемент, отже він непорожній, отже істинний — хоча цей єдиний елемент сам хибний. Решта три значення — нуль і дві порожні колекції — хибні.
Питання 3 / 8

Місто дорівнює порожньому рядку. Що поверне вираз «місто or "Київ"» і якого це буде типу?

Чому так. or повертає лівий операнд, якщо той істинний, інакше правий — і повертає сам обʼєкт, а не True/False. Порожній рядок хибний, тому результат — правий операнд ʼКиївʼ, тип str. Спокуса відповісти «True» береться з того, що в if різниці не видно; вона зникає, щойно результат зберігають у змінну.
Питання 4 / 8

Чому «вимірів != 0 and сума / вимірів > 15» не падає при нулі вимірів, а «сума / вимірів > 15 and вимірів != 0» падає?

Чому так. and обчислює лівий операнд і, якщо той хибний, одразу повертає його — правий не виконується взагалі. У другому записі ділення стоїть зліва, тож воно виконається першим і кине ZeroDivisionError. Порядок операндів тут — не стиль, а працездатність.
Питання 5 / 8

Запис «0 < x < 10» при x = -3. Що дасть Python і що дав би C з тим самим текстом?

Чому так. Python розгортає ланцюжок у (0 < x) and (x < 10) — при -3 це False. C застосовує оператори зліва направо: (0 < -3) дає 0, а 0 < 10 — істина, тож умова істинна за будь-якого x. Це рідкісний випадок, коли той самий текст законний в обох мовах і означає різне.
Питання 6 / 8

Датчик чесно виміряв 0 градусів. Чим відрізняться перевірки «if not температура» і «if температура is None»?

Чому так. Нуль хибний за істинністю, тому not температура дає True. Але нуль — це виміряне значення, і температура is None дає False. Плутанина «немає значення» з «значення дорівнює нулю» — джерело багів, які проявляються рівно раз на сезон, коли за вікном справді нуль.
Питання 7 / 8

У коді є константа ГРАНИЦЯ = 40, і хтось пише «case ГРАНИЦЯ:», щоб порівняти з нею. Що станеться?

Чому так. Голе імʼя в зразку означає «захопи сюди все, що прийшло», а не «порівняй». Тому така гілка ловить будь-яке значення, і match начебто «завжди йде в першу гілку». Порівнювати можна лише з літералом (case 40:) або з «крапковим» імʼям (case Пороги.ГАРЯЧЕ:).
Питання 8 / 8

Речі — це список ["шапка"]. Чим «if речі:» відрізняється від «if речі == True:»?

Чому так. if речі: питає «чи істинний цей обʼєкт» — непорожній список істинний. if речі == True: питає «чи дорівнює список обʼєкту True» — ні, це різні значення, тож False. Порівняння між несумісними типами не падає, а тихо дає False — саме тому помилка непомітна.