Python: Необязательные параметры функций
Функции могут принимать параметры. Иногда удобно задать значение сразу в определении функции, чтобы не указывать его при каждом вызове. Такое значение называется значением по умолчанию.
Если аргумент не передан, используется это значение. Если аргумент указан, то оно заменяет умолчание.
Пример: повторение текста
Сделаем функцию, которая повторяет строку несколько раз. По умолчанию пусть будет один раз, но при желании можно указать другое количество.
def repeat(text, times=1):
return text * times
print(repeat("Hi")) # => Hi
print(repeat("Hi", 3)) # => HiHiHiВ этом примере используется операция умножения строки на число. Она работает так: берется исходная строка и повторяется указанное количество раз. Например, "A" * 5 превратится в "AAAAA". Это встроенная возможность Python, которая часто применяется при генерации шаблонов, разделителей и повторяющихся фрагментов текста.
def repeat(text, times=2): ← times имеет значение по умолчанию
...
repeat('go') → times = 2 (по умолчанию)
repeat('go', 5) → times = 5 (явно указано)Необязательные параметры всегда указываются в конце списка параметров. Поэтому в примере сначала идет обязательный параметр text, а уже после него располагается параметр times со значением по умолчанию.
Пример: склейка слов с разделителем
По умолчанию слова соединяются пробелом, но можно указать другой символ.
def join_words(word1, word2, sep=" "):
return word1 + sep + word2
print(join_words("King", "Road")) # => King Road
print(join_words("Dragon", "stone", "-")) # => Dragon-stoneПример: несколько параметров по умолчанию
Функция может содержать более одного параметра со значениями по умолчанию. Например, сделаем функцию, которая строит строку-разделитель. По умолчанию символом является дефис, а длина равна 10.
def make_line(symbol="-", length=10):
return symbol * length
print(make_line()) # => ----------
print(make_line("*")) # => **********
print(make_line("*", 5)) # => *****
print(make_line("#", 3)) # => ###Задание
Реализуйте функцию get_hidden_card(), которая принимает на вход номер кредитки (состоящий из 16 цифр) в виде строки и возвращает его скрытую версию, которая может использоваться на сайте для отображения. Если исходная карта имела номер 2034399002125581, то скрытая версия выглядит так ****5581. Другими словами, функция заменяет первые 12 символов, на звездочки. Количество звездочек регулируется вторым, необязательным, параметром. Значение по умолчанию — 4.
# Кредитка передается внутрь как строка
# Второй параметр не передается, значит звездочек будет 4
get_hidden_card('1234567812345678') # ****5678
get_hidden_card('1234567812345678', 2) # **5678
get_hidden_card('1234567812345678', 3) # ***5678
# Или используя переменные
card_number = '2034399002121100'
get_hidden_card(card_number) # ****1100
get_hidden_card(card_number, 1) # *1100Для выполнения задания вам понадобится механизм повторения строк, который повторяет строку указанное количество раз. Для этого достаточно умножить строку на число повторений:
'+' * 5 # +++++
'o' * 3 # oooPython: Необязательные параметры функций
Функции могут принимать параметры. Иногда удобно задать значение сразу в определении функции, чтобы не указывать его при каждом вызове. Такое значение называется значением по умолчанию.
Если аргумент не передан, используется это значение. Если аргумент указан, то оно заменяет умолчание.
Пример: повторение текста
Сделаем функцию, которая повторяет строку несколько раз. По умолчанию пусть будет один раз, но при желании можно указать другое количество.
def repeat(text, times=1):
return text * times
print(repeat("Hi")) # => Hi
print(repeat("Hi", 3)) # => HiHiHiВ этом примере используется операция умножения строки на число. Она работает так: берется исходная строка и повторяется указанное количество раз. Например, "A" * 5 превратится в "AAAAA". Это встроенная возможность Python, которая часто применяется при генерации шаблонов, разделителей и повторяющихся фрагментов текста.
def repeat(text, times=2): ← times имеет значение по умолчанию
...
repeat('go') → times = 2 (по умолчанию)
repeat('go', 5) → times = 5 (явно указано)Необязательные параметры всегда указываются в конце списка параметров. Поэтому в примере сначала идет обязательный параметр text, а уже после него располагается параметр times со значением по умолчанию.
Пример: склейка слов с разделителем
По умолчанию слова соединяются пробелом, но можно указать другой символ.
def join_words(word1, word2, sep=" "):
return word1 + sep + word2
print(join_words("King", "Road")) # => King Road
print(join_words("Dragon", "stone", "-")) # => Dragon-stoneПример: несколько параметров по умолчанию
Функция может содержать более одного параметра со значениями по умолчанию. Например, сделаем функцию, которая строит строку-разделитель. По умолчанию символом является дефис, а длина равна 10.
def make_line(symbol="-", length=10):
return symbol * length
print(make_line()) # => ----------
print(make_line("*")) # => **********
print(make_line("*", 5)) # => *****
print(make_line("#", 3)) # => ###Задание
Реализуйте функцию get_hidden_card(), которая принимает на вход номер кредитки (состоящий из 16 цифр) в виде строки и возвращает его скрытую версию, которая может использоваться на сайте для отображения. Если исходная карта имела номер 2034399002125581, то скрытая версия выглядит так ****5581. Другими словами, функция заменяет первые 12 символов, на звездочки. Количество звездочек регулируется вторым, необязательным, параметром. Значение по умолчанию — 4.
# Кредитка передается внутрь как строка
# Второй параметр не передается, значит звездочек будет 4
get_hidden_card('1234567812345678') # ****5678
get_hidden_card('1234567812345678', 2) # **5678
get_hidden_card('1234567812345678', 3) # ***5678
# Или используя переменные
card_number = '2034399002121100'
get_hidden_card(card_number) # ****1100
get_hidden_card(card_number, 1) # *1100Для выполнения задания вам понадобится механизм повторения строк, который повторяет строку указанное количество раз. Для этого достаточно умножить строку на число повторений:
'+' * 5 # +++++
'o' * 3 # oooВаше упражнение проверяется по этим тестам
import solution
def test():
assert solution.get_hidden_card("1234123412341234") == "****1234"
assert solution.get_hidden_card("1234123412344321") == "****4321"
assert solution.get_hidden_card("1234123412344321", 3) == "***4321"Решение учителя откроется через:
20:00
