Проблемы со строками в функции. (Подробнее в вопросе)

Наша функция будет возвращать строку с полным именем 'first_name middle_name last_name', если же middle_name отсутствует, то возвращаемая строка должна быть 'first_name last_name'.

И вот код:

def get_fullname (first_name, last_name,  middle_name ):
    return (f'{first_name}  {last_name} {middle_name}')

В чем проблема?


Ответы (4 шт):

Автор решения: Bol4onok

Если вы хотите сделать так, чтобы аргумент в функции можно было не передавать, то ему надо дать аргумент по умолчанию. Тогда ваш код будет выглядеть вот так:

def get_fullname(first_name, last_name, middle_name=' '):
    return (f"{first_name}{middle_name if ' ' == middle_name else f' {middle_name} '}{last_name}")

def get_fullname_second(first_name, last_name, middle_name=''):
    return ' '.join(filter(lambda ele: ele != '', (first_name, middle_name, last_name)))

print(get_fullname('Test', 'Test1', 'Test2'))
print(get_fullname('Test', 'Test1'))

Вывод

Test Test2 Test1
Test Test1
→ Ссылка
Автор решения: not_alex
def get_fullname (first_name, last_name,  middle_name='' ):
    return (f'{first_name} {last_name} {middle_name}').strip()

Воспользуйтесь значением по умолчанию для переменной middle_name и strip для удаления лишнего пробела.

→ Ссылка
Автор решения: 4500zenja

Переменную middle_name можно сделать аргументом по умолчанию, подставив в качестве запасного варианта пустую строку ''. Таким образом, даже не вводя middle_name, функция будет получать пустую строку в данную переменную.

Тогда ещё нужно изменить порядок вывода переменных в строке:

def get_fullname (first_name, last_name,  middle_name=''):
    return (f'{first_name} {middle_name} {last_name}')
→ Ссылка
Автор решения: Namerek
def get_fullname(first_name, /, last_name=None, middle_name=None):
    return ' '.join(filter(None, [first_name, middle_name, last_name]))

print(get_fullname('Vjacheslav', 'Fetisov', 'Aleksandrovich'))
print(get_fullname('Vjacheslav', 'Fetisov'))

# Vjacheslav Aleksandrovich Fetisov
# Vjacheslav Fetisov
→ Ссылка