Розділ 1Змінні й типи
Змінна – це ярлик із назвою, який ми чіпляємо на значення: vik = 15 означає «ярлик vik тепер на числі 15». Кожне значення має тип – що це за дані: ціле число, дробове, текст, «так/ні».
Тип визначає, що з даними можна робити: числа додають, текст склеюють. "5" + 5 – помилка, бо Python не знає, чи ви хочете 10, чи «55».
Основні типи
Арифметика: три ділення
/ – звичайне ділення, завжди дає дріб. // – ціла частина (скільки цілих разів уміщається). % – остача. Разом вони відповідають на питання «скільки повних коробок і скільки лишилось».
Перетворення типів
input() завжди повертає текст, навіть якщо людина ввела цифри. Тому перед рахунком текст перетворюють: int(...), float(...). Назад у текст – str(...).
0.1 + 0.2 == 0.3 дає False. Дробові числа в комп'ютері зберігаються наближено. Порівнюйте з допуском: abs(a - b) < 1e-9 або округлюйте round(x, 2).Розминка Наступне число
Прочитайте ціле число й виведіть наступне. Для 14 → 15.
Підказка 1
input() дає текст, тому спершу int(...) – це вже зроблено в першому рядку.
Підказка 2
Залишилося надрукувати n + 1.
Відповідь
n = int(input()) print(n + 1)
Легка Хвилини в години
Програма отримує кількість хвилин. Виведіть години й хвилини через пробіл. Для 125 → 2 5.
Підказка 1
Скільки повних годин у 125 хвилинах? Це ділення націло: m // 60.
Підказка 2
А скільки хвилин лишилося понад повні години? Це остача: m % 60.
Відповідь
m = int(input()) print(m // 60, m % 60)
Середня Сума цифр чотирицифрового числа
Без перетворення в текст, лише // і %. Для 1234 → 10.
Підказка 1
Остання цифра числа – це остача від ділення на 10: 1234 % 10 → 4.
Підказка 2
Перша цифра – n // 1000. Друга – відкиньте дві останні (n // 100) і візьміть остачу на 10.
Відповідь
n = int(input()) print(n // 1000 + n // 100 % 10 + n // 10 % 10 + n % 10)
Розділ 2Рядки й f-рядки
Рядок – це ланцюжок символів, кожен має номер (індекс) починаючи з нуля. Від'ємні номери рахують з кінця: -1 – останній символ.
Зріз s[від:до] вирізає шматок; «до» не входить. Третє число – крок: s[::-1] читає з кінця.
Найпотрібніші методи
f-рядки: вставити значення в текст
Літера f перед лапками дозволяє писати змінні у фігурних дужках. Після двокрапки – формат: скільки знаків після коми, ширина поля, вирівнювання.
s[0] = "д" – рядки незмінні. Створюйте новий: s = "д" + s[1:].Розминка Привітання
Прочитайте ім'я й виведіть привітання f-рядком. Для «Оля» → Привіт, Оля!.
Підказка 1
f-рядок – це f"...", а змінна стоїть у фігурних дужках.
Підказка 2
Порівняйте з прикладом розділу: print(f"Привіт, {imia}!").
Відповідь
imia = input()
print(f"Привіт, {imia}!")Легка Ініціали
Ім'я та прізвище через пробіл → ініціали з крапками: «Тарас Шевченко» → Т.Ш.
Підказка 1
Розріжте рядок на два слова: imia, prizvyshche = input().split().
Підказка 2
Перша літера слова – індекс 0: imia[0]. Склейте все f-рядком з крапками.
Відповідь
imia, prizvyshche = input().split()
print(f"{imia[0]}.{prizvyshche[0]}.")Середня Паліндром
Виведіть True, якщо фраза читається однаково з обох боків (без пробілів і регістру).
Підказка 1
Спершу приберіть різницю між великими й малими літерами (.lower()) і пробіли (.replace(" ", "")).
Підказка 2
Рядок навпаки – зріз t[::-1]. Паліндром – коли він дорівнює самому рядку.
Відповідь
t = input().lower().replace(" ", "")
print(t == t[::-1])Розділ 3Умови if
if – розвилка: «якщо умова правдива, виконай цей блок». Блок – рядки з відступом (4 пробіли). Відступ у Python – не прикраса, а частина синтаксису: він показує, що належить до if.
elif – «а якщо ні, то перевір ось це», else – «в усіх інших випадках». Спрацьовує лише перша правдива гілка.
Коротші записи умов
and, or, not
and – обидві умови; or – хоч одна; not – навпаки. Python перевіряє зліва направо й зупиняється, щойно відповідь ясна, тому x != 0 and 10 / x > 1 не впаде при x = 0.
if як «ні» сприймаються: 0, 0.0, порожній текст "", порожні [], (), {}, None, False. Усе інше – «так». Тому досвідчені пишуть if spysok: замість if len(spysok) > 0:.if x == 1 or 2: – завжди правда, бо читається як (x == 1) or 2, а 2 – «так». Правильно: if x in (1, 2):.Розминка Знак числа
Виведіть додатне, від'ємне або нуль.
Підказка 1
Три варіанти – це if, elif, else.
Підказка 2
Перевірте n > 0, потім n < 0; усе інше – нуль.
Відповідь
n = int(input())
if n > 0:
print("додатне")
elif n < 0:
print("від'ємне")
else:
print("нуль")Середня Високосний рік
Рік високосний, якщо ділиться на 4, але не на 100 – або ділиться на 400. Виведіть так чи ні.
Підказка 1
«Ділиться на 4» – це r % 4 == 0; «не ділиться на 100» – r % 100 != 0.
Підказка 2
Склейте: (на 4 і не на 100) або на 400. and виконується раніше за or, тож дужки можна не ставити.
Відповідь
r = int(input())
if r % 4 == 0 and r % 100 != 0 or r % 400 == 0:
print("так")
else:
print("ні")Розділ 4Тернарний оператор: if в один рядок
Коли треба вибрати одне з двох значень, не пишуть чотири рядки. Форма:
ЯКЩО_ТАК if УМОВА else ЯКЩО_НІ
Читайте як українське речення: «"бюджет", якщо балів ≥ 160, інакше "контракт"». Результат – значення, яке можна присвоїти, надрукувати, вставити в f-рядок.
Чотири рядки
Один рядок
or і and як короткі підстановки
Вибір через індекс і через словник
Індекс за умовою. True і False у Python – це 1 і 0. Тому умову можна поставити в квадратні дужки як номер: (ЯКЩО_НІ, ЯКЩО_ТАК)[УМОВА]. Зверніть увагу: варіант «ні» стоїть першим, бо False – це індекс 0.
Словник замість ланцюжка if. Коли варіантів багато й вибір іде за значенням, словник «ключ → відповідь» читається краще за п'ять elif. Метод get дає запасну відповідь для ключа, якого немає.
(0, 10 / x)[x != 0] при x = 0 впаде з діленням на нуль, хоч ви й «вибирали» нуль. Тернарний 10 / x if x != 0 else 0 рахує лише потрібну гілку – тому для обчислень, що можуть зламатися, беріть його. Індекс і словник – для готових значень: текстів, чисел, назв.Легка Менше з двох без if
Два числа в рядку. Виведіть менше, вибравши його індексом за умовою (…, …)[умова]. Для «5 9» → 5.
Підказка 1
Умова a < b дає True (1) або False (0) – це номер у парі.
Підказка 2
Коли a < b хибне (індекс 0), менше – b. Отже, пара (b, a).
Відповідь
print((b, a)[a < b])
kilkist = n or 10 замінить і чесний нуль на 10. Якщо 0 допустимий, пишіть 10 if n is None else n. І не будуйте ланцюжки з трьох і більше умов – їх важко читати, звичайний if/elif кращий.Розминка Більше з двох
Два числа в рядку. Виведіть більше одним рядком з тернарним оператором. Для «8 3» → 8.
Підказка 1
Форма: ЯКЩО_ТАК if УМОВА else ЯКЩО_НІ.
Підказка 2
print(a if a > b else b).
Відповідь
a, b = map(int, input().split()) print(a if a > b else b)
Легка Парне чи непарне
Одним рядком з тернарним оператором виведіть парне або непарне.
Підказка 1
Число парне, коли остача від ділення на 2 дорівнює нулю: n % 2 == 0.
Підказка 2
Форма: "парне" if УМОВА else "непарне" – і все це в print(...).
Відповідь
n = int(input())
print("парне" if n % 2 == 0 else "непарне")Середня Рівень за 12-бальною шкалою без if
1–3 «початковий», 4–6 «середній», 7–9 «достатній», 10–12 «високий». Підказка: індекс у списку.
Підказка 1
Список rivni уже дано: індекс 0 – «початковий», 1 – «середній» і так далі. Треба лише порахувати індекс.
Підказка 2
Оцінки 1–3 мають дати 0, 4–6 – 1… Спробуйте (o - 1) // 3 для o = 1, 3, 4, 12.
Відповідь
print(rivni[(o - 1) // 3])
Розділ 5Цикли
for – «для кожного елемента з набору зроби…». while – «повторюй, доки умова правдива». Якщо відомо, скільки разів або по чому йти, беріть for; якщо невідомо, коли зупинитись, – while.
range(старт, стоп, крок) – послідовність чисел; стоп не входить: range(5) – це 0, 1, 2, 3, 4.
Що відбувається на кожному кроці
Найчастіше в циклах плутаються не в записі, а в тому, що лежить у змінних на кожному кроці. Простежте за програмою suma = 0, for i in range(1, 5): suma += i рядок за рядком:
| крок | i | suma до | suma після |
|---|---|---|---|
| 1 | 1 | 0 | 1 |
| 2 | 2 | 1 | 3 |
| 3 | 3 | 3 | 6 |
| 4 | 4 | 6 | 10 |
5 у range(1, 5) не входить, тому кроків чотири, а відповідь 10. Коли програма поводиться дивно, намалюйте таку таблицю в зошиті або додайте в цикл print(i, suma) – і побачите, де саме все пішло не так.
enumerate і zip – помічники циклу
enumerate дає номер разом з елементом. zip іде по двох списках паралельно, як застібка-блискавка.
while, break, continue
else у циклі
Блок else після for виконується, якщо цикл дійшов до кінця без break. Зручно для пошуку: «перебрав усе й не знайшов».
while, бо змінна в умові не змінюється. І ще: не видаляйте елементи зі списку, по якому йде for – він пропускатиме сусідів.Розминка Від 1 до n
Виведіть числа від 1 до n через пробіл. Для 5 → 1 2 3 4 5.
Підказка 1
range(1, n + 1) – бо кінець не входить.
Підказка 2
Друкуйте в рядок: print(i, end=" ") або одразу print(*range(1, n + 1)).
Відповідь
n = int(input()) print(*range(1, n + 1))
Легка Факторіал
Виведіть n! = 1·2·…·n. Для 5 → 120.
Підказка 1
Заведіть змінну-добуток f = 1 (не 0: множення на нуль усе зіпсує).
Підказка 2
Пройдіть циклом for i in range(2, n + 1) і щоразу множте: f *= i.
Відповідь
n = int(input())
f = 1
for i in range(2, n + 1):
f *= i
print(f)Середня Ялинка
Для n = 3 виведіть зірочки по центру: 1, 3, 5 у рядку (ширина 2n−1).
Підказка 1
У рядку номер i (від 0) зірочок 2 * i + 1: 1, 3, 5…
Підказка 2
Пробілів перед ними n - 1 - i. Рядок можна «помножити»: " " * 3 → три пробіли.
Відповідь
n = int(input())
for i in range(n):
print(" " * (n - 1 - i) + "*" * (2 * i + 1))Розділ 6Списки
Список – пронумерований ряд значень у квадратних дужках: [5, 3, 8]. Його можна змінювати: додавати, видаляти, сортувати. Індекси й зрізи – як у рядків.
sort() чи sorted()?
Копії й посилання
a = a.sort() – після цього a дорівнює None. Або a.sort(), або a = sorted(a).Розминка Найвища й найнижча
Оцінки через пробіл. Виведіть найвищу й найнижчу через пробіл. Для «8 11 3 12 7» → 12 3.
Підказка 1
Для списку є готові функції max(...) і min(...).
Підказка 2
print(max(ocinky), min(ocinky)).
Відповідь
ocinky = list(map(int, input().split())) print(max(ocinky), min(ocinky))
Легка Середня оцінка
Оцінки в один рядок через пробіл. Виведіть середнє з двома знаками після коми. Для «8 11 3 12 7» → 8.20.
Підказка 1
Список оцінок уже є. Середнє – це сума, поділена на кількість: sum(ocinky) / len(ocinky).
Підказка 2
Два знаки після коми дає f-рядок: f"{x:.2f}".
Відповідь
print(f"{sum(ocinky) / len(ocinky):.2f}")Середня Без повторів, порядок зберегти
«3 1 3 2 1 5» → 3 1 2 5.
Підказка 1
Ідіть по числах по черзі й додавайте до результату лише ті, яких ще не бачили.
Підказка 2
Що «вже бачили», зручно тримати в окремому наборі (можна в списку, з in; з множинами з розділу 10 – швидше).
Відповідь
bulo, rez = set(), []
for x in a:
if x not in bulo:
bulo.add(x)
rez.append(x)
print(*rez)
# коротко: print(*dict.fromkeys(a))Розділ 7Цикл в один рядок (включення)
Дуже часто цикл робить одне: збирає новий список із старого. Для цього є стислий запис:
[ЩО_КЛАСТИ for X in ЗВІДКИ if ЯКА_УМОВА]
Читайте зліва направо: «квадрат x – для кожного x з 0..9 – якщо x парне». Частина з if необов'язкова.
Звичайний цикл
Включення
Де ставити if
if після for – фільтр (відкинути зайві). Тернарний if … else перед for – перетворення (кожен елемент стає одним із двох значень).
Словники, множини, генератори
if і два for, звичайний цикл читається краще.Розминка Квадрати
Виведіть квадрати чисел від 1 до n через пробіл, використавши включення. Для 4 → 1 4 9 16.
Підказка 1
Шаблон: [x * x for x in ЗВІДКИ].
Підказка 2
Звідки – range(1, n + 1); надрукувати – print(*список).
Відповідь
n = int(input()) print(*[x * x for x in range(1, n + 1)])
Легка Лише високі оцінки
Виведіть через пробіл оцінки ≥ 10, використавши включення.
Підказка 1
Шаблон включення: [ЩО for X in ЗВІДКИ if УМОВА]. Що кладемо – саму оцінку o.
Підказка 2
Умова – o >= 10. Надрукувати список через пробіл: print(*список).
Відповідь
print(*[o for o in ocinky if o >= 10])
Середня Довжини слів
Виведіть словник «слово: довжина» для різних слів рядка, слова – за абеткою. Словник – це пари «ключ: значення» у фігурних дужках; докладно – у розділі 11, тут досить прикладу «Словники, множини, генератори» вище.
Підказка 1
Різні слова за абеткою – sorted(set(slova)): set прибирає повтори, sorted упорядковує.
Підказка 2
Словник включенням пишуть у фігурних дужках з двокрапкою: {w: len(w) for w in …}.
Відповідь
print({w: len(w) for w in sorted(set(slova))})Розділ 8Функції й лямбди
Функція – іменований шматок коду, який можна викликати багато разів з різними даними. def оголошує її, у дужках – параметри (вхід), return – результат (вихід).
Лямбда – мініфункція в один вираз без імені: lambda x: x * 2. Її передають туди, де потрібна «маленька інструкція», найчастіше в key= при сортуванні.
Лямбда в сортуванні
f = lambda x: …) – пишіть def. Типова помилка: забули return – функція поверне None.Розминка Подвоєння
Напишіть podviy(x), що повертає число, удвічі більше за x.
Підказка 1
Тіло функції – з відступом під def.
Підказка 2
Замість pass напишіть return x * 2.
Відповідь
def podviy(x):
return x * 2Легка Функція площі
Напишіть ploshcha(a, b), що повертає площу прямокутника.
Підказка 1
Функцію оголошують def ploshcha(a, b):, а тіло пишуть з відступом.
Підказка 2
Не друкуйте всередині – поверніть результат: return a * b.
Відповідь
def ploshcha(a, b):
return a * bСередня Сортування слів
За довжиною, а слова однакової довжини – за абеткою. Через пробіл. Ключ може бути парою в дужках, наприклад (len(w), w): такі пари (кортежі) – розділ 9, тут досить знати, що порівнюються спершу перші числа.
Підказка 1
Python порівнює пари (довжина, слово) спершу за першим числом, а за рівності – за другим.
Підказка 2
Тож ключ сортування – key=lambda w: (len(w), w).
Відповідь
print(*sorted(slova, key=lambda w: (len(w), w)))
Розділ 9Кортежі й розпакування
Кортеж – список, який не можна змінити: (3, 4). Береться для записів фіксованої форми: координата, дата, рядок таблиці. Бо незмінний – його можна зробити ключем словника чи покласти в множину.
Розпакування – розкласти значення по змінних одним рядком: x, y = (3, 4).
t[0] = 1 → TypeError. Потрібно змінювати – беріть список.Розминка Мінімум і максимум разом
Числа через пробіл. Покладіть найменше й найбільше у дві змінні одним рядком і виведіть їх. Для «3 9 1 7» → 1 9.
Підказка 1
Праворуч можна записати два значення через кому – Python складе з них кортеж.
Підказка 2
mn, mx = min(a), max(a) – і надрукувати обидві.
Відповідь
a = list(map(int, input().split())) mn, mx = min(a), max(a) print(mn, mx)
Розминка Відстань до початку координат
Точка задана двома числами в рядку. Розпакуйте їх у x, y і виведіть відстань до точки (0, 0) з одним знаком після коми. Для «3 4» → 5.0.
Підказка 1
Розпакування з рядка: x, y = map(float, input().split()).
Підказка 2
Відстань – (x ** 2 + y ** 2) ** 0.5; один знак – f"{d:.1f}".
Відповідь
x, y = map(float, input().split())
d = (x ** 2 + y ** 2) ** 0.5
print(f"{d:.1f}")Легка Обмін
Прочитайте два числа й виведіть їх у зворотному порядку, обмінявши значення змінних одним рядком.
Підказка 1
Розпакування обмінює змінні без третьої: праворуч складається пара, ліворуч розкладається.
Підказка 2
Один рядок: a, b = b, a.
Відповідь
a, b = b, a
Розділ 10Множини
Множина – «мішок» різних значень: повтори зникають, порядку немає. Головна сила – миттєва перевірка «чи є таке» (x in s) навіть серед мільйона елементів, і операції як у математиці: об'єднання, перетин, різниця.
Розминка Скільки різних
Слова через пробіл. Виведіть, скільки серед них різних. Для «кіт пес кіт рибка пес» → 3.
Підказка 1
Множина сама прибирає повтори: set(slova).
Підказка 2
Кількість – len(...).
Відповідь
slova = input().split() print(len(set(slova)))
Розминка Чи є повтор
Числа через пробіл. Виведіть так, якщо якесь число повторюється, інакше ні.
Підказка 1
Якщо повтори є, множина буде коротшою за список.
Підказка 2
Порівняйте len(set(a)) з len(a) і виберіть «так» або «ні».
Відповідь
a = input().split()
print("так" if len(set(a)) < len(a) else "ні")Легка Спільні літери
Два слова в двох рядках. Виведіть спільні літери (у нижньому регістрі) за абеткою, без пробілів. Для «Дрогобич» і «Борислав» це биор.
Підказка 1
Перетворіть кожне слово на множину літер: set(a). Не забудьте .lower(), щоб «Д» і «д» були однакові.
Підказка 2
Спільне – перетин &; за абеткою – sorted; склеїти без пробілів – "".join(...).
Відповідь
print("".join(sorted(set(a) & set(b))))Розділ 11Словники
Словник – таблиця «ключ → значення», як справжній словник «слово → переклад» чи журнал «учень → оцінка». За ключем значення знаходиться миттєво. Ключі унікальні; порядок додавання зберігається.
Підрахунок – найчастіша задача
bal["Петро"] для відсутнього ключа – KeyError. Перевіряйте in або беріть get.Розминка Телефонна книга
Ім'я в рядку. Виведіть номер із книги або немає, якщо такого імені нема.
Підказка 1
knyha["Марко"] впаде з помилкою – для відсутнього ключа беріть get.
Підказка 2
knyha.get(imia, "немає") поверне запасну відповідь сама.
Відповідь
knyha = {"Оля": "067-111", "Іван": "050-222", "Петро": "093-333"}
imia = input()
print(knyha.get(imia, "немає"))Середня Найчастіше слово
Виведіть слово, що трапляється найчастіше, і скільки разів. Якщо таких кілька – перше за абеткою.
Підказка 1
Порахуйте кожне слово в словнику: lich[w] = lich.get(w, 0) + 1.
Підказка 2
Найчастіше, а за рівності – перше за абеткою: min(lich, key=lambda w: (-lich[w], w)) – мінус робить «більше» «меншим».
Відповідь
lich = {}
for w in slova:
lich[w] = lich.get(w, 0) + 1
naikrashche = min(lich, key=lambda w: (-lich[w], w))
print(naikrashche, lich[naikrashche])Розділ 12Помилки й try/except
Помилка під час роботи програми (виняток) – це сигнал «далі так не можна»: ділення на нуль, «abc» замість числа, ключа немає в словнику. Без обробки програма зупиняється й друкує червоне повідомлення.
try – «спробуй виконати», except – «а якщо сталася ось така помилка, зроби інакше». Програма не падає, а йде далі.
Перехопити помилку
Назва після except – тип помилки. Найчастіші: ValueError (не те значення: int("abc")), ZeroDivisionError (ділення на нуль), KeyError (немає ключа), IndexError (немає такого індексу), TypeError (не той тип: "5" + 5).
Кілька винятків, else і finally
Підняти свою помилку: raise
Функція, яка отримала неможливі дані, не повинна мовчки повертати дурницю. Вона піднімає помилку з поясненням – а той, хто викликав, вирішує, що робити.
except: без назви ловить усе підряд – і помилки у вашому власному коді теж, тож ви їх ніколи не побачите. Завжди пишіть, яку саме помилку чекаєте. І не загортайте в try пів програми – лише рядок, який справді може впасти.Розминка Число чи ні
Прочитайте рядок. Якщо це ціле число – виведіть його подвоєним, інакше не число. Для «21» → 42.
Підказка 1
Перетворення int(t) загорніть у try.
Підказка 2
Помилка перетворення – except ValueError:, і в ній друкуйте «не число».
Відповідь
t = input()
try:
print(int(t) * 2)
except ValueError:
print("не число")Середня Безпечне ділення
Два числа в рядку. Виведіть частку з двома знаками; якщо ділити на нуль – на нуль не можна. Для «7 2» → 3.50.
Підказка 1
Ділення на нуль піднімає ZeroDivisionError.
Підказка 2
У try – print(f"{a / b:.2f}"), в except ZeroDivisionError: – повідомлення.
Відповідь
a, b = map(float, input().split())
try:
print(f"{a / b:.2f}")
except ZeroDivisionError:
print("на нуль не можна")Розділ 13Класи й об'єкти
Клас – це креслення, об'єкт – річ, зроблена за кресленням. Клас «Учень» описує, що в кожного учня є (ім'я, оцінки) і що він уміє (порахувати середній бал). Учні Оля й Тарас – два окремі об'єкти: в кожного свої оцінки.
Дані об'єкта – атрибути, його вміння – методи (функції всередині класу). Ви вже користувалися об'єктами: "текст".upper() і spysok.append(5) – це методи вбудованих класів str і list.
Перший клас
Як об'єкт себе показує: __str__
Без підказки print(olia) надрукує щось на кшталт <Uchen object at 0x…>. Метод __str__ каже, як перетворити об'єкт на текст.
Спадкування: «як той, але ще й…»
self – у параметрах методу (def dodaty(o): → «takes 1 positional argument but 2 were given») або перед атрибутом (ocinky.append(o) замість self.ocinky.append(o) → NameError). self – це спосіб методу дістати «свій» об'єкт.Розминка Прямокутник
Допишіть метод ploshcha, що повертає площу. Pryamokutnyk(3, 4).ploshcha() → 12.
Підказка 1
Сторони лежать в атрибутах об'єкта: self.a і self.b.
Підказка 2
Замість pass: return self.a * self.b.
Відповідь
class Pryamokutnyk:
def __init__(self, a, b):
self.a = a
self.b = b
def ploshcha(self):
return self.a * self.bСередня Банківський рахунок
Клас Rakhunok: на початку баланс 0; popovnyty(suma) додає гроші; znyaty(suma) знімає, а якщо грошей не вистачає – піднімає ValueError. Атрибут – balans.
Підказка 1
У __init__: self.balans = 0. Поповнення – self.balans += suma.
Підказка 2
У znyaty спершу перевірка: if suma > self.balans: raise ValueError("недостатньо коштів"), і лише потім віднімання.
Відповідь
class Rakhunok:
def __init__(self):
self.balans = 0
def popovnyty(self, suma):
self.balans += suma
def znyaty(self, suma):
if suma > self.balans:
raise ValueError("недостатньо коштів")
self.balans -= sumaРозділ 14Секрети Python
Те, що досвідчені пишуть машинально, а новачки роблять у п'ять рядків. Кожен прийом – не магія, а скорочення того, що ви вже вмієте.
Розпакування й зірочка
Вбудовані помічники
collections: Counter і defaultdict
Моржовий оператор := і сортування за кількома ключами
Середня Найчастіше – одним рядком
Слова через пробіл. Виведіть найчастіше слово й скільки разів, через пробіл, використавши Counter. Для «кіт пес кіт рибка пес кіт» → кіт 3.
Підказка 1
Counter(slova).most_common(1) поверне список з однієї пари [(слово, скільки)].
Підказка 2
Розпакуйте: slovo, k = Counter(slova).most_common(1)[0].
Відповідь
from collections import Counter slova = input().split() slovo, k = Counter(slova).most_common(1)[0] print(slovo, k)
Легка Чи всі парні
Числа через пробіл. Виведіть так, якщо всі парні, інакше ні – одним рядком з all.
Підказка 1
all(УМОВА for x in a) – чи умова правдива для кожного.
Підказка 2
Умова парності – x % 2 == 0; «так»/«ні» – тернарним оператором.
Відповідь
a = list(map(int, input().split()))
print("так" if all(x % 2 == 0 for x in a) else "ні")Розділ 15Підводні камені й шпаргалка
Запустіть – і подивіться, що піде не так.
Ще кілька каменів
print(f"{x=}")) і перевірте на маленькому прикладі в пісочниці.Що коли брати
| Тип | Порядок | Змінний | Повтори | Запис | Коли |
|---|---|---|---|---|---|
| list | так | так | так | [1, 2] | ряд значень, що змінюється |
| tuple | так | ні | так | (1, 2) | запис фіксованої форми, ключ |
| set | ні | так | ні | {1, 2} | унікальні, швидке in |
| dict | так | так | ключі – ні | {"a": 1} | пошук за ключем, підрахунок |
| str | так | ні | так | "ab" | текст |
Підсумкова Друге за величиною
Перший рядок – n, другий – n чисел. Виведіть друге за величиною різне число; якщо його немає – немає. Для «3 9 1 9 4» → 4.
Підказка 1
Різні числа – set(a); від більшого до меншого – sorted(…, reverse=True).
Підказка 2
Друге за величиною – індекс 1. Якщо різних чисел лише одне, індексу 1 немає – виведіть «немає».
Відповідь
rizni = sorted(set(a), reverse=True) print(rizni[1] if len(rizni) > 1 else "немає")