Вікторіна#
Завдання до розділу Основи:#
Завдання 1#
Створіть змінну з назвою
реченняі присвойте їй значення — рядок, який містить одинадцять слів (будь-яких).Виведіть на екран значення змінної
речення.Додайте цей рядок коду в кінці своєї програми:
print(len(sentence.split()))
Підказка: Функція split() у Python рахує кількість слів у рядку, підраховуючи кількість пробілів між словами. Тож завдання звучить так: «напиши слова, між якими є 10 пробілів».
Можливе розв’язання
Натисніть, щоб розгорнути
# Ось приклад розв’язання для завдання 1 із розділу Основи ("")
речення = "Мова Python дуже цікава, проста і легка для вивчення кожному щодня"
print(речення)
print(len(речення.split()))
Завдання 2#
Створіть змінну з назвою
вірші присвойте їй рядок із кількома словами.Рядок повинен складатися з трьох рядків тексту.
Виведіть на екран значення змінної
вірш.Додайте цей рядок коду в кінці своєї програми:
print(len(poem.splitlines()))
Чи можеш розв’язати це завдання (щоб рядок охоплював кілька рядків тексту) різними способами?
Можливі розв’язання:
Натисніть, щоб розгорнути
# Розв’язання для розділу "Основи" Basic, завдання 2, варіант A.
вірш="""Код,
рядок за рядком я пишу,
світ новий у полі творю."""
print(вірш)
print(len(вірш.splitlines()))
Натисніть, щоб розгорнути
# Розв’язання для розділу "Основи" Basic, завдання 2, варіант B
вірш='Код,\nрядок за рядком я пишу,\nсвіт новий у полі творю.'
print(вірш)
print(len(вірш.splitlines()))
Натисніть, щоб розгорнути
# Розв’язання для розділу "Основи" Basic, завдання 2, варіант C
вірш="\n".join(["Код,","рядок за рядком я пишу,","світ новий у полі творю."])
print(вірш)
print(len(вірш.splitlines()))
Завдання 3#
Створіть змінну з назвою
заробітна платаі присвойте їй значення 4000.Виведіть на екран значення змінної
заробітна плата
Можливі розв’язання:
Натисніть, щоб розгорнути
# Розв’язання для розділу "Основи" Basic, завдання 3, варіант A
# найпоширеніший варіант
заробітна_плата = 4000
print(заробітна_плата)
Натисніть, щоб розгорнути
# Розв’язання для розділу "Основи" Basic, завдання 3, варіант B
# використовуйте підкреслення (underscores) для покращення читабельності
заробітна_плата = 4_000
print(заробітна_плата)
Завдання 4#
Створіть змінну з назвою
Дохіді надайте їй значення4000.Створіть змінну з назвою
Висновок. Значення змінноїВисновокмає бути наступним рядком: “Мій дохід становить X євро на місяць”.Змініть код так, щоб Python підставляв замість
Xзначення змінноїДохід.Надрукуюте значення змінної
Висновок
Чи можеш ти розв’язати це завдання кількома способами?
Можливі розв’язання:
Натисніть, щоб розгорнути
# Розв’язання для розділу «Основи» Basic, завдання 4, варіант A.
# використовувайте .format()
Дохід = 4000
Висновок = 'Мій дохід становить {} євро на місяць'.format(дохід)
print(висновок)
Натисніть, щоб розгорнути
# Розв’язання для розділу «Основи» Basic, завдання 4, варіант B
# використовувайте f-strings
Дохід = 4000
Висновок = f'Мій дохід становить {дохід} євро на місяць'
print(висновок)
Натисніть, щоб розгорнути
# Розв’язання для розділу «Основи» Basic, завдання 4, варіант C
# використовувайте str()
Дохід = 4000
Висновок = "Мій дохід становить " + str(дохід) + " євро на місяць"
print(висновок)
Натисніть, щоб розгорнути
# Розв’язання для розділу «Основи» Basic, завдання 4, варіант D
# використовувайте %
Дохід = 4000
Висновок = 'Мій дохід становить %i євро на місяць' % дохід
print(висновок)
Завдання 5#
Ідентифікатори для змінних
Які з наведених назв є допустимими ідентифікаторами для змінних у Python?
aAaaaaa123123a_123a_a123a_1231_a23!abca-ba_minus_b
Правильні відповіді:
Натисніть, щоб розгорнути
1,2,3,4,6,7,8,12
Завдання для розділу Оператори та вирази :#
англійська:Operators and Expressions
Завдання 1#
Які з наведених виразів у Python набувають значення True?
True == FalseTrue == TrueFalse == False5 > 2len("Michael") > len("Mike")5 != 76 >= 6"abc" * 3 == "abcabcabc"5**2 == 250 == False1 == True2 == True2 == FalseTrue == 1None == NoneNone != 0None == ""
Правильні відповіді:
Натисніть, щоб розгорнути
2,3,4,5,6,7,8,9,10,11,14,15,16
Завдання 2#
Які з наведених виразів у Python набувають значення False ?
10 / 5 == 2.010 // 5 == 210 % 3 == 1( 5 > 1) and ( 5 > 7)( 5 > 1) or (5 > 7)not (5 > 7)
Правильна відповідь:
Натисніть, щоб розгорнути
4
Завдання 3#
Яким буде вивід (значення змінної
x) у цій програмі Python?
# розділ _Оператори та вирази_ Завдання 3
x = 5
x = 5+1
x += 1
x = x * 2
x /= 2
print(x)
Правильна відповідь:
Натисніть, щоб розгорнути
7.0
Завдання для розділу: “Потік керування”:#
Завдання 1#
У завданнях цього розділу використовуйте (деякі з) операторів Python, описаних у розділі “Керування потоком виконання” (таких як if, elif, else, for, while, continue, break)
Напишіть програму, яка дозволяє користувачу ввести пароль і надає відповідь залежно від введеного значення:
Якщо пароль —
SeCrEt, програма має вивестиПравильноі завершити роботу.Якщо користувач вводить неправильний пароль, програма повинна вивести
Неправильноі знову запитати пароль.
Після трьох невдалих спроб програма має вивести
Ви зробили 3 невдалі спробиі завершити роботу.Перед завершенням роботи програми вона має вивести
Бувай!
Приклад виводу::
Будь ласка, введіть пароль: >>>secret
Неправильно
Будь ласка, введіть пароль: >>>Secret
Неправильно
Будь ласка, введіть пароль: >>>SeCrEt
Правильно
Бувай!
Можливі розв’язання:
Натисніть, щоб розгорнути
# solution for chapter control flow, task 1, variant A
# Розв’язання для розділу «Потік керування», завдання 1, варіант A.
for a in range(3):
текст = input("Будь ласка, введіть пароль: >>>")
if текст == "SeCrEt":
print("Правильно")
break
else:
print("Неправильно")
else:
print("Ви зробили 3 невдалі спроби")
print("Бувай!")
Натисніть, щоб розгорнути
# solution for chapter control flow, task 1, variant B
# Розв’язання для розділу «Потік керування», завдання 1, варіант B
for _ in range(3):
if input("Будь ласка, введіть пароль: >>>") == "SeCrEt":
print("Правильно")
break
print("Неправильно")
else:
print("Ви зробили 3 невдалі спроби")
print("Бувай!")
Натисніть, щоб розгорнути
# solution for chapter control flow, task 1, variant C
# Розв’язання для розділу «Потік керування», завдання 1, варіант C
спроба = 1
max_спроб = 3
дійсний_пароль = "SeCrEt"
while True:
print(f"Це спроба {спроба} із {max_спроб}")
текст = input("Будь ласка, введіть пароль: >>>")
if текст == дійсний_пароль:
print("Правильно")
break
else:
print("Неправильно")
спроба += 1
if спроба > 3:
print("Ви зробили 3 невдалі спроби")
break
print("Бувай!")
Натисніть, щоб розгорнути
# solution for chapter control flow, task 1, variant D
# Розв’язання для розділу «Потік керування», завдання 1, варіант D
спроба = 0
while спроба < 3:
спроба += 1
if input("Будь ласка, введіть пароль: >>>") == "SeCrEt":
print("Правильно")
break
print("Неправильно")
else:
print("Ви зробили 3 невдалі спроби")
print("Бувай!")
Натисніть, щоб розгорнути
# solution for chapter control flow, task 1, variant E
# Розв’язання для розділу «Потік керування», завдання 1, варіант E
спроба = 1
while input("Будь ласка, введіть пароль: >>>") != "SeCrEt":
print("Неправильно")
спроба += 1
if спроба > 3:
print("Ви зробили 3 невдалі спроби")
break
else:
print("Правильно")
print("Бувай!")
Завдання 2#
Наведена нижче програма не працює так, як задумано. Що має робити програма:
Програма має дозволити користувачу ввести пароль.
Якщо користувач вводить правильний пароль(
secret) програма має вивестиПравильноі завершитися.Якщо користувач вводить неправильний пароль, програма має запитати знову.
Якщо користувач 3 рази введе неправильний пароль, програма має вивести
Ви зробили 3 невдалі спробиі завершитися.»
Твої завдання після аналізу програми:
З’ясуй, чому ця програма не працює так, як задумано.
Запропонуй, як змінити програму, щоб вона працювала відповідно до задуму.
# problem control flow, task 2,
# Задача з розділу "Потік керування", завдання 2
пароль = "secret"
max_спроб = 3
спроба = 1
while спроба < max_спроб:
print(f"Спроба {спроба} of {max_спроб}")
здогадка = input("введіть пароль: >>>")
if здогадка == пароль:
print("Правильно")
break
спроба += 1
else:
print("Ви зробили 3 невдалі спроби")
print("Бувай!")
Розв’язання коду:
Натисніть, щоб розгорнути
Проблема у наступносу рядку: “while спроба < max_спроб:”
Виправлення:
while спроба <= max_спроб:
Завдання 3#
Будь ласка, виправте наведену нижче програму, щоб вона виводила тільки одну відповідь.
# problem control_flow task 3
# Задача з розділу "Потік керування", завдання 3
дохід = input("Будь ласка, введіть свій щомісячний (чистий) дохід в євро")
дохід = int(дохід)
if дохід < 1000:
print("Ти небагато заробляєш...")
if дохід < 2000:
print("Могло б бути краще...")
elif дохід < 3000:
print("Добре")
if дохід < 4000:
print("Дуже добре")
if дохід < 5000:
print("Чудово")
else:
print("Насправді??")
Розв’язання коду:
Натисніть, щоб розгорнути
дохід = input("Будь ласка, введіть свій щомісячний (чистий) дохід в євро")
дохід = int(дохід)
if дохід < 1000:
print("Ти небагато заробляєш...")
elif дохід < 2000:
print("Могло б бути краще...")
elif дохід < 3000:
print("Добре")
elif дохід < 4000:
print("Дуже добре")
elif дохід < 5000:
print("Чудово")
else:
print("Насправді??")
Завдання 4#
Вправи для циклу “for loop” та функції “range”
Ознайомтеся з документацією Python щодо функції
range: https://docs.python.org/3/library/stdtypes.html#range Для розуміння параметрівstart,stopandstep.
Спробуйте розв’язати це завдання без використання комп’ютера: який буде результат виконання наступної послідовності чисел:
print(list(range(5)))
Розв’язання:
Натисніть, щоб розгорнути
[0,1,2,3,4]
Завдання 5#
Напишіть рядок коду на Python (використовуючи range) щоб отримати наступний результат:
[1,2,3,4,5]
Розв’язання:
Натисніть, щоб розгорнути
# solution control flow, task 5
# Розв’язання задачі з розділу "Потік керування", завдання 5
print(list(range(1,6)))
Завдання 6#
Напишіть рядок коду на Python (використовуючи range) щоб отримати наступний результат:
[10,20,30,40,50]
Розв’язання:
Натисніть, щоб розгорнути
# solution control flow task 6
# Розв’язання задачі з розділу "Потік керування", завдання 6
print(list(range(10,51,10)))
де число 10-це крок
Завдання 7#
Напишіть рядок коду на Python (використовуючи range) щоб отримати наступний результат: [50,40,30,20,10,0]
Розв’язання:
Натисніть, щоб розгорнути
# Розв’язання задачі з розділу "Потік керування", завдання 7
print(list(range(50,-1,-10)))
Завдання 8#
Напишіть рядки коду на Python (використовуючи range) який виводить усі числа від 1 до 10. Кожне число має бути надруковане в окремому рядку.
Розв’язання:
Натисніть, щоб розгорнути
# Розв’язання задачі з розділу "Потік керування", завдання 8
for x in range(1,11):
print(x)
Завдання 9#
Напишіть рядок коду на Python (використовуючи range), який виводить усі числа від 1 до 10 в одному рядку. Числа мають бути розділені комами (після останнього числа може стояти кома).
Розв’язання:
Натисніть, щоб розгорнути
# Розв’язання задачі з розділу "Потік керування", завдання 9
for x in range(1,11):
print(x, end=",")
Завдання 10#
Напишіть програму на Python (використовуючи вбудовану функцію range), яка перемножує кожне число від 2 до 5 з кожним іншим числом у цьому діапазоні.
Програма повинна виводити окремий рядок для кожного обчислення, як у цьому (скороченому) прикладі: :
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
3 x 2 = 6
3 x 3 = 9
...
Розв’язання
Натисніть, щоб розгорнути
# Розв’язання задачі з розділу "Потік керування", завдання 10
for a in range(1,6):
for b in range(1,6):
print(f"{a} x {b} = {a*b:>2}")
Завдання 11#
6.8. Скілька рядків буде виведено цією Python програмою?
# problem control flow task 11
# Розв’язання задачі з розділу "Потік керування", завдання 11
for x in "abcde":
for y in "wxyz":
print(x,y)
Розв’язання:
Натисніть, щоб розгорнути
20 рядків
Завдання 12#
Скільки рядків виведе ця програма на Python?
# problem control flow task 12
# Розв’язання задачі з розділу "Потік керування", завдання 12
for a in ("abc","def","ghi"):
for b in (100,200,300,400):
for c in "yz":
print(a,b,c)
Розв’язання:
Натисніть, щоб розгорнути
24 рядка
Завдання 13#
Чому ця програма не буде працювати?
# problem control flow task 13
# Проблема з розділу "Потік керування", завдання 13
for a in range(-10,11):
for b in range(-10,11):
print(f"{a} + {b} = {a+b}")
print(f"{a} - {b} = {a-b}")
print(f"{a} x {b} = {a*b}")
print(f"{a} / {b} = {a/b}")
Розв’язання:
Натисніть, щоб розгорнути
Внаслідок помилки ділення на нуль у шостому рядку коду.
Рядок 6 : print(f"{a} / {b} = {a/b}")
намагається поділити a на b. Але змінна b береться з range(-10, 11),який містить 0.
Завдання 14#
Будь ласка, прочитайте в книзі “Byte of Python”, розділ “Потік керування” про оператори break і continue(обидва оператори можуть використовуватися всередині блоку while або for).
Також перевірте, чи ви розумієте офіційну документацію Python щодо цих команд:
https://docs.python.org/3/tutorial/controlflow.html#break-and-continue-statements
Якщо ви вважаєте, що зрозуміли використання breakіcontinue, проаналізуйте цю програму (програма працює правильно):
# problem control flow task 14 A
# Задача з розділу "Потік керування", завдання 14 а
while True:
print("Яка відповідь на це ПИТАННЯ?")
print("Введіть 'допомога' щоб переглянути довідковий текст.")
print("Введіть 'вийти' , щоб вийти з цієї гри.")
команда = input(">>>")
if команда == "допомога":
print("Дивіться 'Путівник Галактикою для автостопників'")
print("автор — Дуглас Адамс")
elif команда == "вийти":
break
elif команда == "42":
print("Вітаю, ти знаєш ТУ САМУ ВІДПОВІДЬ.")
print("Але яке ж було запитання насправді.... ? ")
break
print("Бувай-бувай")
Спробуйте зрозуміти, що робить програма (запусти її та перевір).
Спробуйте зрозуміти цю програму, розглядаючи не лише код, а й блок-схему (flowchart) цієї програми:
flowchart TD
початок:::перший_клас
задати_запитання-->користувач_вводить_відповідь:::другий_клас
показати_інструкції:::третий_клас
кінець_програми:::четвертий_клас
початок-->показати_інструкції
показати_інструкції-->задати_запитання
задати_запитання--вихід--> кінець_програми
задати_запитання--допомога--> показати_довідку
задати_запитання--42--> Вітаю!
задати_запитання--інше-->показати_інструкції
показати_довідку --> показати_інструкції
Вітаю! --> кінець_програми
classDef перший_клас fill:#4040ff
classDef другий_клас fill:#800000
classDef третий_клас fill:#208090
classDef четвертий_клас fill:#6611bc
Дізнайтеся більше про блок-схеми (англ.“flowcharts”) у Вікіпедії: https://en.wikipedia.org/wiki/Flowchart
Ви можете створювати блок-схеми за допомогою ручки й паперу або за допомогою комп’ютерних програм (наприклад, MS Word чи LibreOffice Draw). Блок-схему, наведену вище, створено за допомогою інструмента для побудови діаграм “Mermaid”. Див. https://mermaid.js.org для ознайомлення з документацією та використання онлайн-редактора.
Задача з розділу “Потік керування”, завдання 14 B#
Проаналізуйте наведену нижче програму на Python.
Створіть для неї блок-схему (за допомогою будь-якого інструмента на ваш вибір).
# problem control flow task 14 B # Задача з розділу "Потік керування", завдання 14 B
# password creation/створення пароля
while True:
print("Введіть 'допомога', щоб відобразити довідковий текст.")
команда = input("Будь ласка, введіть новий пароль >>>")
if команда == "допомога":
print("Пароль повинен мати: ")
print("Щонайменше одну цифру (0-9) ")
print("Щонайменше одну літеру в нижньому регістрі (a-я)")
continue
#перевірити пароль
for char in "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя":
if char in команда:
break
else:
print("Не знайдено жодної літери в нижньому регістрі (a–я). Будь ласка, спробуйте ще раз.")
continue
for цифра in "0123456789":
if цифра in команда:
break
else:
print("Не знайдено жодної цифри (0–9). Будь ласка, спробуйте ще раз.")
continue
print("Вітаємо! Ваш пароль успішно прийнято.")
break
print("Бувай!")
можливе розв’язання
Натисніть, щоб розгорнути
flowchart TD
надрукувати_інструкцію([відобразити короткий текст інструкції]):::перший_клас
надрукувати_довідку([відобразити довгий довідковий текст]):::четвертий_клас
запитати_пароль>попросити користувача ввести новий пароль]:::другий_клас
пароль_це_довідка{пароль == 'довідка'?}:::третій_клас
чи_є_літера_в_паролі{чи є літера в <br>паролі?}:::п_ятий_клас
чи_є_число_в_паролі{чи_є_число_в <br>паролі?}:::шостий_клас
початок_програми-->надрукувати_інструкцію
надрукувати_інструкцію-->запитати_пароль
запитати_пароль-->пароль_це_довідка
пароль_це_довідка--НІ-->чи_є_літера_в_паролі
пароль_це_довідка--ТАК-->надрукувати_довідку
чи_є_літера_в_паролі--ТАК-->чи_є_число_в_паролі
чи_є_літера_в_паролі--НІ-->показати_повідомлення_про_помилку-->надрукувати_інструкцію
чи_є_число_в_паролі--ТАК-->Вітаю!-->кінець_програми
чи_є_число_в_паролі--НІ-->показати_повідомлення_про_помилку2-->надрукувати_інструкцію
надрукувати_довідку --> надрукувати_інструкцію
classDef перший_клас fill:#0000f0
classDef другий_клас fill:#880000
classDef третий_клас fill:#a088bb
classDef четвертий_класc fill:#0066ff
classDef п_ятий_клас fill:#dd4400
classDef шостий_клас fill:#228822
Завдання до розділу Функція (англ.Function):#
Завдання 1#
Напишіть функцію на Python з назвою привітання.
Функція має імітувати працівника готелю. Отримавши параметр година_доби(0 - 24), функція повинна повертати привітання:
година з |
година до |
привітання |
|---|---|---|
0 |
6 |
Добраніч |
6 |
11 |
Доброго ранку |
11 |
14 |
Доброго дня |
14 |
18 |
Доброго пообіду |
18 |
22 |
Доброго вечора |
22 |
24 |
Добраніч |
Додайте код, щоб перевірити роботу функції привітання:
Виведіть на екран кожну годину від 1 до 24 та відповідне привітання
для цієї години (по одному рядку на кожну годину).
можливі розв’язання
Натисніть, щоб розгорнути
# solution chapter function task 1, variant A
# Розв’язання з розділу "Функція", завдання 1, варіант А
def привітання (година_доби):
if 6 <= година_доби <11:
return "Доброго ранку"
elif 11 <= година_доби < 14:
return "Доброго дня"
elif 14 <= година_доби < 18:
return "Доброго пообіду"
elif 18 <= година_доби < 22:
return "Доброго вечора"
elif (22 <= година_доби) or (година_доби <6):
return "Добраніч"
# Тест
for h in range(1,25):
print(f"година: {h:>2} привітання: {привітання(h)}")
Натисніть, щоб розгорнути
# solution chapter function task 1, variant B
# Розв’язання з розділу "Функція", завдання 1, варіант B
def привітання(година_доби):
# словник : ключ : година_доби значення: привітання (dictionary: key: hour_of_day value: greeting)
розклад = {6:"Добраніч",
11:"Доброго ранку",
14:"Доброго дня",
18:"Доброго пообіду",
22:"Доброго вечора",
24.1:"Добраніч",# особливий випадок для обробки числа 24
}
for ключ in розклад:
if година_доби < ключ:
return розклад[ключ] #повертає значення словника
# тест
for h in range(1,25):
print(f"година: {h:>2} привітання: {привітання(h)}")
Завдання 2#
Напишіть функцію з назвою
удосконалене_привітання.Функція повинна відтворювати привітання співробітника готелю, подібно до завдання 1.
Функція повинна мати два параметри:
година_доби(число від 1 до 24)стать(“чоловіча” чи “жіноча”)
Функція повинна повертати привітання, що залежить від
години доби(див. таблицю в завданні 1) тастаті:додайте “Пане”, якщо
стать— чоловічадодайте “Пані”, якщо
стать- жіноча
Приклади:
Доброго ранку, Пане
Добрий день, Пані
Крім того, як і в попередньому завданні, додайте код для тестування функції для кожної години доби (0–24) та для обох статей (“чоловічої” і “жіночої”).
можливі розв’язання:
Натисніть, щоб розгорнути
# solution chapter function task 2, variant A
# Розв’язання з розділу "Функція", завдання 2, варіант A
def удосконалене_привітання(година_доби,стать):
суфікс = ""
if стать == "чоловіча":
суфікс = ", Пан"
elif стать == "жіноча":
суфікс = ", Пані"
if 6 <= година_доби <11:
return "Доброго ранку" + суфікс
elif 11 <= година_доби < 14:
return "Доброго дня" + суфікс
elif 14 <= година_доби < 18:
return "Доброго пообіду" + суфікс
elif 18 <= година_доби < 22:
return "Доброго вечора" + суфікс
elif (22 <=година_доби) or (година_доби <6):
return "Добраніч" + суфікс
# Тест
for h in range(1,25):
for g in ("чоловіча", "жіноча"):
print(f"година: {h:>2} стать: {g:<6} привітання: {удосконалене_привітання(h,g)}")
Натисніть, щоб розгорнути
# solution chapter function task 2 , variant B
# Розв’язання з розділу "Функція", завдання 2, варіант B
def удосконалене_привітання(година_доби,стать):
суфікс = {"чоловіча": "Пане",
"жіноча":"Пані",
}
# словник : ключ : година_доби значення: привітання (англ.dictionary: key: hour_of_day value: greeting)
розклад = {6:"Добраніч",
11:"Доброго ранку",
14:"Доброго дня",
18:"Доброго пообіду",
22:"Доброго вечора",
24.1:"Добраніч", # особливий випадок для обробки числа 24
}
for ключ in розклад:
if година_доби < ключ:
return розклад[ключ] + ", " + суфікс[стать]
# тест
for h in range(1,25):
for g in ("чоловіча", "жіноча"):
print(f"година: {h:>2} стать: {g:<6} привітання: {удосконалене_привітання(h,g)}")
Завдання 3#
Використайте приклад із попереднього завдання (завдання 2), але внесіть такі зміни:
Перейменуйте функцію на
комплексне_привітанняДодайте додатковий параметр з назвою
дитинаЗмініть повернене значення функції так, щоб коли значення параметра
дитинадорівнюєTrue, функція повертала “молодий чоловік” замість “Пане” і “молода леді” замість “Пані”
Додайте код для перевірки функції для всіх комбінацій година_доби (0-24), стать (“чоловіча”, “жіноча”) та дитина (True, False)
можливі розв’язання:
Натисніть, щоб розгорнути
# solution chapter function task 3, variant A
# Розв’язання з розділу "Функція", завдання 3, варіант A
def комплексне_привітання(година_доби, стать, дитина):
суфікс = ""
if стать == "чоловіча":
суфікс = ", Пане"
if дитина: # якщо дитина == True:
суфікс = ", молодий чоловік"
elif стать == "жіноча":
суфікс = ", Пані"
if дитина:
суфікс = ", молода леді"
if 6 <= година_доби <11:
return "Доброго ранку" + суфікс
elif 11 <= година_доби < 14:
return "Доброго дня" + суфікс
elif 14 <= година_доби < 18:
return "Доброго пообіду" + суфікс
elif 18 <= година_доби < 22:
return "Доброго вечора" + суфікс
elif (22 <= година_доби) or (година_доби <6):
return "Добраніч" +суфікс
# тест
for h in range(1,25):
for g in ("чоловіча", "жіноча"):
for c in (True, False):
print(f"година: {h:>2} стать: {g:<6} дитина: {str(c):<5} "
f"привітання: {комплексне_привітання(h,g,c)}")
Натисніть, щоб розгорнути
# solution chapter function task 3, variant B
# Розв’язання з розділу "Функція", завдання 3, варіант B
def комплексне_привітання(година_доби, стать, дитина):
# словник : ключ : стать значення:(привітання_дорослих, привітання_дітей)
# англ.(dictionary: key: gender value: (greeting_adult, greeting_child))
суфікс = {"чоловіча": (" Пане","молодий чоловік"),
"жіноча":("Пані","молода леді"),
}
# словник : ключ : година_доби значення:привітання
# dictionary: key: hour_of_day value: greeting
розклад = {6:"Добраніч",
11:"Доброго ранку",
14:"Доброго дня",
18:"Доброго пообіду",
22:"Доброго вечора",
24.1:"Добраніч", # особливий випадок для обробки числа 24
}
for ключ in розклад:
if година_доби < ключ:
return розклад[ключ] + ", " + суфікс[стать][дитина]
# True має значення 1, а False має значення 0
# Тому "дитина" можна використовувати як індекс для першого/другого елемента
# тест
for h in range(1,25):
for g in ("чоловіча", "жіноча"):
for c in (True, False):
print(f"година: {h:>2} стать: {g:<6} дитина: {str(c):<5} "
f"привітання: {комплексне_привітання(h,g,c)}")
Завдання 4#
Це дуже просте завдання:
Напишіть функцію з назвою
той_хто_вітає:Функція не повинна мати жодних параметрів
Функція повинна завжди повертати рядок: “Доброго ранку”
Додайте код, щоб вивести результат виклику функції в той_хто_вітає_1
Розв’язання
Натисніть, щоб розгорнути
# solution chapter function, task4
# розв’язання з розділу "Функція", завдання 4
def той_хто_вітає_1():
return "Добрий ранок!"
# виклик функції (виклик той_хто_вітає_1 без аргументів)
print("----- виклик той_хто_вітає_1 -------")
print(той_хто_вітає_1())
Завдання 5#
Створіть функцію з назвою
той_хто_вітає_2:Функція повинна мати один параметр з назвою
прикметникТипове значення параметра
прикметникмає бути"гарний"Функція повинна повертати рядок, що складається з
прикметниката" Ранок"Протестуйте функцію, викликаючи її з різними аргументами (а також без аргументів). Завжди виводьте повернуте значення під час виклику функції.
Розв’язання
Натисніть, щоб розгорнути
# solution function task 5
# Розв’язання з розділу "Функція", завдання 5
def той_хто_вітає_2 (прикметник="гарний"):
return прикметник + " Ранок"
# виклик функціїl (виклик той_хто_вітає_2 з різними аргументами)
print("---- виклик той_хто_вітає_2 -----")
print(той_хто_вітає_2("добрий"))
print(той_хто_вітає_2("чудовий"))
print(той_хто_вітає_2())
print(той_хто_вітає_2(" "))
Завдання 6#
Створіть функцію з назвою
той_хто_вітає_3:Функція повинна мати 2 параметра:
прикметникandгодина_доби(обидва є рядками)Обидва параметри повинні мати значення аргументів за замовчуванням (англ. “default values”) (наприклад,
"доброго"та"Ранку")Функція повинна повертати один рядок, що складається зі значення
прикметник,пробілу та значеннягодина_добиПротестуйте функцію, викликаючи її з різними аргументами (а також без аргументів) для обох параметрів, і завжди виводьте повернуте значення (англ.return value) кожного виклику функції.
Натисніть, щоб розгорнути
# Задача з розділу "Функція", завдання 6
def той_хто_вітає_3 (прикметник="гарний", година_доби="Ранок"):
return прикметник + " " + година_доби
# виклик функціїl (виклик той_хто_вітає_3)
print("---- виклик той_хто_вітає_3 -----")
print(той_хто_вітає_3())
print(той_хто_вітає_3("сонячний"))
print(той_хто_вітає_3("сонячний", "Вечір"))
print(той_хто_вітає_3(година_доби= "Вечір"))
Завдання 7#
Створіть функцію з назвою
той_хто_вітає_4:Функція повинна мати один параметр з назвою
година_добиЗначення аргументів за замовчуванням (англ. “default values”)
година_добиповино бути"Ранок"Функція повинна приймати БУДЬ-ЯКУ кількість додаткових аргументів (включно з нулем).
Функція повинна повертати рядок, що складається з усіх додаткових аргументів (розділених комами), пробілу та значення
година_доби(усі параметри є рядками).Протестуйте функцію, викликаючи її кілька разів, щоразу з різною кількістю аргументів (у тому числі без аргументів). Виводьте повернуте значення кожного виклику функції. Наприклад:
print(той_хто_вітає_4("Вечір", "чудовий", "м’який", "прекрасний"))
Можливі розв’язання:
Натисніть, щоб розгорнути
# Задача з розділу "Функція", завдання 7 варіант A
# Функція, яка приймає будь-яку кількість параметрів і повертає їх усі.
def той_хто_вітає_4(година_доби="Ранок", *args):
текст = ""
for a in args:
текст += a + ","
if len(args) > 0:
текст = текст[:-1] # приберіть останню кому
текст += " "
текст += година_доби
return текст
print("------ виклик той_хто_вітає_4 ----")
print(той_хто_вітає_4())
print(той_хто_вітає_4("Ніч"))
print(той_хто_вітає_4("вечір", "Тихий", "чудовий", "героїчний", "романтичний"))
print(той_хто_вітає_4("ніч", "Гарна"))
print(той_хто_вітає_4("день", "Сонячний", "теплий", "емоційний"))
Натисніть, щоб розгорнути
# Задача з розділу "Функція", завдання 7 варіант B
# Функція, яка приймає будь-яку кількість параметрів і повертає їх усі.
def той_хто_вітає_4(година_доби="Ранок", *args):
текст = ",".join(args)
if len(текст) > 0:
текст += " "
текст += година_доби
return текст
print("------ виклик той_хто_вітає_4 ----")
print(той_хто_вітає_4())
print(той_хто_вітає_4("Ніч"))
print(той_хто_вітає_4("вечір", "Тихий", "чудовий", "героїчний", "романтичний"))
print(той_хто_вітає_4("ніч", "Гарна"))
print(той_хто_вітає_4("день", "Сонячний", "теплий", "емоційний"))
Завдання 8#
Створіть функцію з назвою
той_хто_вітає_ 5:Функція повинна мати один параметр з назвою
година_добиЗначення аргументів за замовчуванням (англ. “default values”)
година_добиповино бути"Ранок"Функція повинна приймати БУДЬ-ЯКУ кількість додаткових аргументів ключових слів (англ.“additional keyword arguments”), наприклад:
той_хто_вітає_5("Ранок",повітря="чудове", погода="сонячна")Функція повинна повертати багаторядковий рядок (див. нижче), який містить усі аргументи в такій формі:
для виклику функції:
той_хто_вітає_5("Ранок", повітря="чудове", погода="сонячна")Повернене значення має бути таким:
"Який ранок!\nПовітря чудове.\nПогода сонячна."
Протестуйте функцію, викликаючи її кілька разів, щоразу з різною кількістю аргументів (у тому числі без аргументів). Виводьте повернуте значення кожного виклику функції.
Розв’язання:
Натисніть, щоб розгорнути
# Задача з розділу "Функція", завдання 8
def той_хто_вітає_5(година_доби="Ранок", **kwargs):
текст = "Який " + година_доби + "!\n" # \n створює новий рядок
for ключ, значення in kwargs.items():
текст += ключ + " - " + значення + ".\n"
return текст
print("------- виклик той_хто_вітає_5 ---------")
print(той_хто_вітає_5())
print(той_хто_вітає_5(Повітря="чудове", Настрій="радісний", Майбутне ="світле"))
print(той_хто_вітає_5("День", Температура="морозна", Вітер="сильний"))
Завдання 9#
Створіть функцію з назвою
той_хто_вітає_6:Функція повинна мати один параметр з назвою
година_добиЗначення аргументів за замовчуванням (англ. “default values”)
година_добиповино бути"Ранок"Функція повинна приймати БУДЬ-ЯКУ кількість додаткових аргументів (їхні значення — рядки), наприклад:
той_хто_вітає_6("День","добрий", повітря="чудове", погода="сонячна")Функція повинна повертати багаторядковий рядок (див. нижче), який містить усі аргументи та всі аргументи ключових слів в такій формі:
для виклику функції:
той_хто_вітає_6("Ранок", "добрий", "тихий", повітря="чудове", погода="сонячна")Повернене значення має бути таким:
"Який добрий, тихий ранок!\nПовітря чудовеl.\nПогода сонячна"Протестуйте функцію, викликаючи її кілька разів, щоразу з різною кількістю аргументів та іменованих аргументів. Виводьте повернуте значення кожного виклику функції.
# Задача з розділу "Функція", завдання 9
def той_хто_вітає_6(година_доби="Ранок", *args, **kwargs):
текст = "Який "
#ітератувати по *args
for a in args:
текст += a + ", "
if len(args) > 0:
текст = текст[:-2] + " "
текст +=година_доби + "!\n"
# ітератувати over **kwargs
for ключ,значення in kwargs.items():
текст += ключ + " - " + значення + ".\n"
return текст
print("------ виклик той_хто_вітає_6 ----")
print(той_хто_вітає_6())
print(той_хто_вітає_6("Вечір"))
print (той_хто_вітає_6("Ранок", "сонячний", "теплий", "емоційний",
повітря="чудове", настрій="радісний", майбутне="якраве"))
print(той_хто_вітає_6(повітря="ароматне"))
Завдання до розділу об’єктно-орієнтоване програмування :#
англійська:Tasks for chapter object oriented programming
Завдання 1:#
Напишіть клас з назвою
ГраКлас повинен мати змінну класу з назвою
гравець. Значенням цієї змінної має бути “Bugs Bunny”.Клас повинен мати змінну класу з назвою
рекорд. Значенням цієї змінної має бути1000.Клас повинен мати змінну класу з назвою
кредит. *Значенням * цієї змінної має бути 2.Напишіть код на Python, який виведе всі змінні класу
Грата їхні значення.
Розв’язання:
Натисніть, щоб розгорнути
# solution oop task 1 variant A
# Розв’язання з розділу "ООП" Завдання 1 варіант A
class Гра:
гравець = "Bugs Bunny"
рекорд = 1000
кредит = 2
print("Гра.гравець", Гра.гравець)
print("Гра.рекорд", Гра.рекорд)
print("Гра.кредит", Гра.кредит)
Натисніть, щоб розгорнути
# solution oop task 1 variant B
# Розв’язання з розділу "ООП" Завдання 1 варіант В
class Гра:
гравець = "Bugs Bunny"
рекорд = 1000
кредит = 2
for ключ, значення in Гра.__dict__.items():
if ключ[:2] != "__":
print(ключ, значення)
Напишіть клас з назвою
ІграшкаКлас повинен мати метод
__init__.Напишіть клас так, щоб кожен екземпляр цього класу мав такі атрибути (також звані змінними об’єкта):
ціназі значенням10колярзі значенням"зелений"
Створіть змінну з назвою
teddy.Значенням змінної
teddyповинен бути екземпляр класуІграшкаНапишіть код, який встановлює атрибут
висотаоб’єктаteddyу значення7Напишіть код, який виводить імена та значення всіх атрибутів об’єкта
teddy
Можливі розв’язання:
Натисніть, щоб розгорнути
# solution oop task 2 variant A
# Розв’язання з розділу "ООП" Завдання 2 варіант A
class Іграшка:
def __init__(self):
self.ціна = 10
self.коляр = "зелений"
teddy = Іграшка()
teddy.висота = 7
print("ціна", teddy.ціна)
print("коляр", teddy.коляр)
print("висота", teddy.висота)
Натисніть, щоб розгорнути
# solution oop task 2 variant B
# Розв’язанняа з розділу "ООП" Завдання 2 варіант В
class Іграшка:
def __init__(self):
self.ціна = 10
self.коляр = "зелений"
teddy = Іграшка()
teddy.висота = 7
for ключ, значення in teddy.__dict__.items():
print(ключ, значення)
Завдання 3#
Створіть клас з назвою
Walker.Додайте до цього класу метод з назвою
Walk.Значення що повертається цим методом, повинно бути рядком
"I'm walking"Створіть клас з назвою
Swimmer.Додайте до цього класу метод з назвою
Swim.Значення що повертається цим методом, повинно бути рядком
"I'm swimming"Створіть клас з назвою
Flyer.Додайте до цього класу метод з назвою
Fly.Значення що повертається цим методом, повинно бути рядком
"I'm flying"Створіть клас з назвою
Diver.Додайте до цього класу метод з назвою
Dive.Значення що повертається цим методом, повинно бути рядком
"I'm diving"Створіть класи з назвами та методами відповідно до таблиці нижче. Використайте наслідування від наявних класів для нових класів. Усередині кожного класу напишіть лише команду
pass, НЕ пишіть методи або атрибути.Створіть змінну з назвою
tux. Значення цієї змінної має бути екземпляром класуPenguin.Напишіть код Python, який виводить результат виклику
tux.dive()
назва класу |
|
|
|
|
|---|---|---|---|---|
Falcon |
Yes |
No |
Yes |
No |
Penguin |
Yes |
Yes |
No |
Yes |
Duck |
Yes |
Yes |
Yes |
Yes |
Eurasian_swift |
No |
No |
Yes |
No |
possible solution
Натисніть, щоб розгорнути
# solution oop task 3 variant A
# Розв’язання з розділу "ООП" Завдання 3 варіант A
# parent classesб(укр.:"базовий клас (або батьківський) ")
class Walker:
def walk(self):
return "i'm walking"
class Swimmer:
def swim(self):
return "i'm swimming"
class Flyer:
def fly(self):
return "i'm flying"
class Diver:
def dive(self):
return "i'm diving"
# child classes (укр.:"похідний клас (або дочірній)")
class Falcon(Walker, Flyer):
pass
class Penguin(Walker, Swimmer, Diver):
pass
class Duck(Walker, Swimmer, Flyer, Diver):
pass
class Eurasian_swift(Flyer):
pass
tux = Penguin() # створіть екземпляр класу
print(tux.dive())
Завдання 4#
Наведено такий код:
# chapter oop, question task 4 and 5
# розв’язання з розділу "ООП" Завдання 4 та 5
class Bird:
def __init__(self, name):
self.name = name
self.can_fly = True
self.can_walk = True
self.can_swim = False
self.can_dive = False
def __str__(self):
"""Ця функція викликається під час виведення екземпляра класу."""
return f"i am a {self.__class__.__name__}"
Напишіть код Python для створення змінної з назвою
tux.Значенням цієї змінної повинен бути екземпляр класу
Bird.Атрибут
nameцього екземпляра класу повинен мати значення"Duck".Напишіть новий рядок коду Python, який встановлює атрибут
can_swimоб’єктаtuxу значенніTrue.
Можливі розв’язанняn
Натисніть, щоб розгорнути
# solution chapter oop, task 4
# розв’язання з розділу "ООП" Завдання 4
tux = Bird(name="Duck")
tux.can_swim = True
Завдання 5#
Наведено клас
Birdіз Завдання 4.Напишіть код Python для класу з назвою
Penguin.Цей клас повинен бути дочірнім класом
Bird.Цей клас повинен успадковувати всі методи класу
Bird, включно з методом__init__класуBird.Змініть метод init класу
Penguinтак, щоб атрибутcontinentзавжди мав значення"Antarctic"Змініть метод init класу
Penguinтак, щоб атрибутиcan_swimтаcan_diveбули встановлені вTrue, а атрибутcan_fly- уFalse
Можливі розв’язання
Натисніть, щоб розгорнути
# solution chapter oop Task 5 variant A
# Розв’язання з розділу "ООП" Завдання 5 варіант А
class Penguin(Bird):
def __init__(self, name):
#У разі використання назви батьківського класу потрібно додати
Bird.__init__(self, name)
self.continent = "Antarctic"
self.can_swim = True
self.can_dive = True
self.can_fly = False
Натисніть, щоб розгорнути
# solution chapter oop Task 5 variant B
# Розв’язання з розділу "ООП" Завдання 5 варіант В
class Penguin(Bird):
def __init__(self, name):
# використовуючи super() для звернення до батьківського класу
super().__init__(name) # self не потрібен
self.continent = "Antarctic"
self.can_swim = True
self.can_dive = True
self.can_fly = False
Завдання до розділу введення-виведення Tasks:#
Завдання 1#
Напишіть програму на Python, яка записує рядок
"Привіт,Світ!"у файл з назвою файлуhello.txt.Виведіть текст
Файл було записано на диск
Можливі розв’язання:
Натисніть, щоб розгорнути
# solution chapter IO task 1 variant A
# Розв’язання з розділу "введення-виведення" Завдання 1 варіант А
text = "Привіт,Світ!"
myfile = open("hello.txt", "w") # режим запису
myfile.write(text)
myfile.close()
print("Файл було записано на диск")
Натисніть, щоб розгорнути
# solution chapter IO task 1 variant B
text = "Hello World!"
with open("hello.txt", "w") as myfile:
myfile.write(text)
# закривається автоматично!
print("Файл було записано на диск")
Завдання 2#
Якщо ви не виконали завдання 1: створіть (за допомогою текстового редактора) новий текстовий файл, який містить один рядок тексту. Останнім символом цього рядка тексту повинен бути знак оклику (
!). Збережіть цей текстовий файл під назвоюhello.txt. Якщо ви правильно виконали завдання 1, цей файл уже існує.Напишіть програму на Python, яка змінює наявний текстовий файл з назвою
hello.txtтак, щоб:У кінець наявного тексту було додано два порожні рядки
Після цих двох порожніх рядків було додано ще один рядок тексту (в новому рядку):
Як справи?Текст повинен закінчуватися перенесенням рядка
Напишіть код Python, який виводить на екран слова
Текстовий рядок додано
Можливе розв’язання:
Натисніть, щоб розгорнути
англійський варіант:
# solution chapter IO task 2 variant A
text = "\n\n\nhow do you do?\n"
with open("hello.txt", "a") as myfile:
myfile.write(text)
print("Textline added")
український варіант:
# solution chapter IO task 2 variant A
# розв’язання з розділу "введення-виведення" Завдання 2 варіант А
текст = "\n\n\nЯк справи??\n"
with open("hello.txt", "a") as мій_файл:
мій_файл.write(текст)
print("Текстовий рядок додано")
Завдання 3#
Напишіть програму, яка відкриває наявний текстовий файл з назвою
hello.txt.Програма повинна визначити, скільки рядків тексту (скільки перенесень рядка) міститься в цьому текстовому файлі.
Програма повинна вивести рядок:
знайдено рядків:і вивести кількість текстових рядків.
Можливе розв’язання:
Натисніть, щоб розгорнути
# solution chapter IO task 3 variant A
# Розв’язання з розділу "введення-виведення" Завдання 3 варіант А
with open("hello.txt") as myfile:
lines = myfile.readlines()
print("знайдено рядків:", len(lines))
Завдання до розділу Винятки:#
Завдання 1#
Наведено таку програму на Python:
# question chapter exception task 1
# запитання, розділ «Винятки», завдання 1
print("будь ласка, введіть рік вашого народження у форматі YYYY")
рік_текст = input(">>>")
рік = int(рік_текст)
print("у 2050 році вам буде ", 2050-рік, "років")
Змініть програму так, щоб вона НЕ завершувалася помилкою
ValueError, коли користувач вводить некоректні дані (наприклад, коли користувач вводить літери замість числа). Натомість програма повинна знову запитувати введення доти, доки введене значення не буде числом.
Можливе розв’язання
Натисніть, щоб розгорнути
# solution chapter exception task 2 variant A
# Розв’язання з розділу «Винятки», завдання 2 варіант А
while True:
print("будь ласка, введіть рік вашого народження у форматі YYYY")
рік_текст = input(">>>")
try:
рік = int(рік_текст)
except ValueError:
print("введено не число, будь ласка, спробуйте ще раз")
continue
# введення було правильним
break
print("у 2050 році вам буде ", 2050-рік, "років")
Натисніть, щоб розгорнути
# solution chapter exception task 2 variant B
# розв’язання з розділу «Винятки», завдання 2 варіант B
while True:
print("будь ласка, введіть рік вашого народження у форматі YYYY")
рік_текст = input(">>>")
if рік_текст.isdigit():
рік = int(рік_текст)
break
print("введено не число, будь ласка, спробуйте ще раз")
print("у 2050 році вам буде ", 2050-рік, "років")
Завдання 3#
Наведено таку програму на Python:
# запитання, розділ «Винятки», завдання 3 ( на англійській)
chessboard = [
["white","black","white","black","white","black","white","black"],
["black","white","black","white","black","white","black","white"],
["white","black","white","black","white","black","white","black"],
["black","white","black","white","black","white","black","white"],
["white","black","white","black","white","black","white","black"],
["black","white","black","white","black","white","black","white"],
["white","black","white","black","white","black","white","black"],
["black","white","black","white","black","white","black","white"],
]
def get_color(row, column):
row = int(row)
column = int(column)
return chessboard[row][column]
while True:
r = input("enter row number: (0-7) >>>")
c = input("enter column number (0-7) >>>")
result = get_color(r,c)
print(f"The color the field (row {r} column {c}) is: {result}")
Запитання, розділ «Винятки», завдання 3 (на українській)#
# запитання, розділ «Винятки», завдання 3 ( на англійській)
шахова_дошка = [
["біла","чорна","біла","чорна","біла","чорна","біла","чорна"],
["чорна","біла","чорна","біла","чорна","біла","чорна","біла"],
["біла","чорна","біла","чорна","біла","чорна","біла","чорна"],
["чорна","біла","чорна","біла","чорна","біла","чорна","біла"],
["біла","чорна","біла","чорна","біла","чорна","біла","чорна"],
["чорна","біла","чорна","біла","чорна","біла","чорна","біла"],
["біла","чорна","біла","чорна","біла","чорна","біла","чорна"],
["чорна","біла","чорна","біла","чорна","біла","чорна","біла"],
]
def отримати_колір(рядок, стовпець):
рядок = int(рядок)
стовпець = int(стовпець)
return шахова_дошка[рядок][стовпець]
while True:
r = input("введіть номер рядка (0-7) >>>")
c = input("введіть номер стовпця (0-7) >>>")
результат = отримати_колір(r,c)
print(f"Колір поля (рядок {r} стовпець {c}) є: {результат}")
Змініть код функці
отримати_коліртак, щоб:функція повертала рядок
"введено не числа"колирядокчистовпець(або обидва) не є цілими числами;функція повертала рядок
"некоректний індекс", колирядокчистовпець(або обидва) менші за 0 або більші за 7.
Можливе розв’язання:
Натисніть, щоб розгорнути
# solution chapter exception task 4
# запитання, розділ «Винятки», завдання 4
def отримати_колір(рядок,стовпець):
try:
r=int(рядок)
c=int(cтовпець)
except ValueError:
return "введено не числа"
if (c < 0) or (c>7) or (r<0) or (r>7):
return "некоректний індекс"
return шахова_дошка[r][c]