Python · Синтаксис · Начальный уровень
Функции: уровень 3
Упражнения по функциям Python уровня 3: функции с режимами работы, флагами, несколькими условиями, обработкой строк, списков и чисел для развития алгоритмического мышления.
Краткое введение в тему и пояснения перед упражнениями (упражнения ниже):
Паттерны режимов и флагов
#Справочник: режим, флаг, тернарное выражение и параметры по умолчанию
#Упражнения:
Режим double или triple.
#def scale_number(n, mode):
pass
Решение
def scale_number(n, mode):
if mode == "double":
return n * 2
elif mode == "triple":
return n * 3
Флаг верхнего регистра.
#def format_text(text, upper):
pass
Решение
def format_text(text, upper):
if upper:
return text.upper()
else:
return text.lower()
Операция 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
Переворот по условию.
#def conditional_reverse(text, limit):
pass
Решение
def conditional_reverse(text, limit):
if limit > 5:
return text[::-1]
else:
return text
Абсолютное значение по флагу.
#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.
#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]
Сумма или произведение.
#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
Удаление пробелов по флагу.
#def clean_spaces(text, remove):
pass
Решение
def clean_spaces(text, remove):
if not remove:
return text
return text.replace(" ", "")
Режим even или odd.
#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 символа.
#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:]
Большее или меньшее по флагу.
#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.
#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
Квадрат или куб.
#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.
#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.
#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"