Python · Синтаксис · Початковий рівень
Функції
Базові вправи з функцій Python: створення функцій, параметри, return, перевірки чисел і строк, робота зі списками, кортежами і простими обчисленнями.
Короткий вступ до теми та пояснення перед вправами (вправи нижче):
def, параметри і return
#Три патерни функцій
#Швидкий довідник: функції
#Вправи:
Квадрат числа функцією.
#Напишіть функцію, яка приймає одне число та повертає його квадрат.
def square(n):
pass
result = square(5)
print(result)
result = square(2)
print(result)
result = square(25)
print(result)
Рішення
def square(n):
return n * n
result = square(5)
print(result)
result = square(2)
print(result)
result = square(25)
print(result)
# або
def square(n):
result = n * n
return result
# або
def square(n):
result = n ** 2
return result
# або
def square(n):
return n ** 2
Більше число функцією.
#Напишіть функцію, яка приймає два числа та повертає більше з них. Якщо вони рівні, то повертає друге.
def max_of_two(a, b):
pass
print(max_of_two(10, 7))
Рішення
def max_of_two(a, b):
if a > b:
return a
else:
return b
print(max_of_two(10, 7))
# АБО уважно можна і так, else фактично не потрібен,
# тому що return завершує роботу функції якщо він спрацював в умові або взагалі:
def max_of_two(a, b):
if a > b:
return a
return b
print(max_of_two(10, 7))
# або так можна: спочатку перевірити рівність
def bigger(a, b):
if a == b:
return a
if a > b:
return a
return b
Довжина рядка без len.
#Напишіть функцію, яка приймає рядок та повертає його довжину (нібито функції len немає).
def string_length(text):
pass
print(string_length("python"))
Рішення
def string_length(text):
count = 0
for _ in text:
count += 1
return count
print(string_length("python"))
# або можна назвати лічильник більш явно
def get_length(text):
count = 0
for char in text:
count += 1
return count
Парність через функцію.
#Напишіть функцію, яка приймає число та повертає True , якщо число парне, інакше False .
def is_even(n):
pass
print(is_even(8))
Рішення
def is_even(n):
if n % 2 == 0:
return True
else:
return False
print(is_even(8))
# АБО
def is_even(n):
if n % 2 == 0:
return True
return False
# АБО
def is_even(n):
return n % 2 == 0 # одразу повернемо результат порівняння.
# або так можна через змінну
def is_even(n):
result = n % 2 == 0
return result
Сума двох чисел функцією.
#Напишіть функцію, яка приймає два числа та повертає їх суму.
def add(a, b):
pass
print(add(3, 4))
Рішення
def add(a, b):
return a + b
print(add(3, 4))
Рядок у верхньому регістрі.
#Напишіть функцію, яка приймає рядок та повертає новий рядок, символи у верхньому регістрі.
def to_upper(text):
pass
print(to_upper("hello"))
Рішення
def to_upper(text):
return text.upper()
print(to_upper("hello"))
# або так можна: результат спочатку зберегти
def to_upper(text):
result = text.upper()
return result
Додатне число функцією.
#Напишіть функцію, яка приймає число та повертає True , якщо воно додатне, інакше False .
def is_positive(n):
pass
print(is_positive(-3))
Рішення
def is_positive(n):
if n > 0:
return True
else:
return False
print(is_positive(-3))
# АБО
def is_positive(n):
if n > 0:
return True
return False
# АБО
def is_positive(n):
return n > 0
Піднесення до степеня.
#Напишіть функцію, яка приймає два числа: основу та показник степеня — і повертає результат піднесення основи до степеня.
def power(base, exp):
pass
print(power(2, 3))
Рішення
def power(base, exp):
result = 1
for _ in range(exp):
result *= base
return result
print(power(2, 3))
# АБО
def power(base, exp):
return base ** exp
Добуток чисел кортежу.
#Напишіть функцію, яка приймає кортеж з чисел та повертає їх добуток.
def multiply(sequence):
pass
print(multiply((3, 4, 100, 15)))
Рішення
def multiply(sequence):
result = 1
for n in sequence:
result *= n
return result
print(multiply((3, 4, 100, 15)))
# АБО краще
def multiply(sequence):
if len(sequence) == 0: # <--- прям добре
return 0
result = 1
for n in sequence:
result *= n
return result
Повторення рядка функцією.
#Напишіть функцію, яка приймає рядок і число, та повертає цей рядок, повторений вказану кількість разів.
def repeat_text(text, count):
pass
print(repeat_text(")", 3))
Рішення
def repeat_text(text, count):
result = ""
for _ in range(count): # не круто, нижче є круто.
result += text
return result
print(repeat_text(")", 3))
# АБО
def repeat_text(text, count):
return text * count