Python · Синтаксис · Початковий рівень
Функції: рівень 3
Вправи щодо функцій Python рівня 3: функції з режимами роботи, флагами, кількома умовами, обробкою строк, списків та чисел для розвитку алгоритмічного мислення.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
Патерни режимів і прапорів
#Довідник: режим, прапор, тернарний вираз та параметри за замовчуванням
#Вправи:
Режим double або triple.
#Напишіть функцію, яка приймає число та рядок-режим: "double" або "triple". Якщо режим "double" — повернути число, помножене на 2, якщо "triple" — помножене на 3.
def scale_number(n, mode):
pass
Рішення
def scale_number(n, mode):
if mode == "double":
return n * 2
elif mode == "triple":
return n * 3
Прапорець верхнього регістру.
#Напишіть функцію, яка приймає рядок та логічне значення. Якщо прапорець upper дорівнює True — повернути рядок у верхньому регістрі, інакше — у нижньому.
def format_text(text, upper):
pass
Рішення
def format_text(text, upper):
if upper:
return text.upper()
else:
return text.lower()
Операція add або sub.
#Напишіть функцію, яка приймає два числа та рядок-операцію: "add" або "sub". Поверніть суму або різницю залежно від операції.
def calculate(a, b, operation):
pass
Рішення
def calculate(a, b, operation):
if operation == "add":
return a + b
elif operation == "sub":
return a - b
Перевертання за умовою.
#Напишіть функцію, яка приймає рядок і число. Якщо число більше 5 — повернути рядок у зворотному порядку, інакше — повернути рядок без змін.
def conditional_reverse(text, limit):
pass
Рішення
def conditional_reverse(text, limit):
if limit > 5:
return text[::-1]
else:
return text
Абсолютне значення за прапорцем.
#Напишіть функцію, яка приймає число та прапорець. Якщо прапорець True — повернути абсолютне значення, якщо False — повернути число як є.
def maybe_abs(n, use_abs):
pass
Рішення
def maybe_abs(n, use_abs):
if use_abs and n < 0:
return -n
return n
# Або так краще:
def maybe_abs(n, use_abs):
if use_abs:
return abs(n)
return n
Режим first або last.
#Напишіть функцію, яка приймає рядок і режим: "first" або "last". Поверніть або перший символ рядка, або останній.
def pick_char(text, mode):
pass
Рішення
def pick_char(text, mode):
if text == "":
return ""
if mode == "first":
return text[0]
elif mode == "last":
return text[-1]
Сума або добуток.
#Напишіть функцію, яка приймає кортеж чисел і режим: "sum" або "product". Поверніть суму або добуток усіх елементів.
def combine_numbers(numbers, mode):
pass
Рішення
def combine_numbers(numbers, mode):
if mode == "sum":
return sum(numbers)
elif mode == "product":
result = 1
for n in numbers:
result *= n
return result
Видалення пробілів за прапорцем.
#Напишіть функцію, яка приймає рядок і прапорець. Якщо прапорець True — видалити всі пробіли, якщо False — повернути рядок без змін.
def clean_spaces(text, remove):
pass
Рішення
def clean_spaces(text, remove):
if not remove:
return text
return text.replace(" ", "")
Режим even або odd.
#Напишіть функцію, яка приймає число і режим: "even" або "odd". Поверніть True, якщо число відповідає режиму.
def check_parity(n, mode):
pass
Рішення
def check_parity(n, mode):
if mode == "even":
return n % 2 == 0
elif mode == "odd":
return n % 2 != 0
Перші або останні 3 символи.
#Напишіть функцію, яка приймає рядок і режим: "short" або "long". Якщо режим "short" — повернути перші 3 символи, якщо "long" — останні 3 символи.
def slice_text(text, mode):
pass
Рішення
def slice_text(text, mode):
if len(text) < 3:
return text
if mode == "short":
return text[:3]
elif mode == "long":
return text[-3:]
Більше або менше за прапорцем.
#Напишіть функцію, яка приймає два числа та прапорець. Якщо прапорець True — повернути більше число, якщо False — менше.
def pick_number(a, b, get_max):
pass
Рішення
def pick_number(a, b, get_max):
if get_max:
return a if a > b else b
else:
return a if a < b else b
Count або length.
#Напишіть функцію, яка приймає рядок і режим: "count" або "length". Якщо режим "count" — повернути кількість букв "a", якщо "length" — довжину рядка.
def analyze_text(text, mode):
pass
Рішення
def analyze_text(text, mode):
if mode == "length":
return len(text)
elif mode == "count":
cnt = 0
for ch in text.lower():
if ch == "a":
cnt += 1
return cnt
Квадрат або куб.
#Напишіть функцію, яка приймає число та прапорець. Якщо прапорець True — повернути квадрат числа, якщо False — куб числа.
def power_by_flag(n, square):
pass
Рішення
def power_by_flag(n, square):
if square:
return n * n
else:
return n * n * n
Обрізка start або end.
#Напишіть функцію, яка приймає рядок і режим: "start" або "end". Якщо "start" — повернути рядок без перших 2 символів, якщо "end" — без останніх 2.
def trim_text(text, mode):
pass
Рішення
def trim_text(text, mode):
if len(text) <= 2:
return ""
if mode == "start":
return text[2:]
elif mode == "end":
return text[:-2]
Sign або abs.
#Напишіть функцію, яка приймає число і режим: "sign" або "abs". Якщо режим "sign" — повернути рядок "positive", "negative" або "zero", якщо "abs" — повернути абсолютне значення числа.
def number_info(n, mode):
pass
Рішення
def number_info(n, mode):
if mode == "abs":
return -n if n < 0 else n
elif mode == "sign":
if n > 0:
return "positive"
elif n < 0:
return "negative"
else:
return "zero"