GP
Помогите пожалуйста начинающему
Задание сформулировано неточно, какая-то каша.
Ты должен знать точно,
что подаётся в функцию. А тут пишут сначала “подаётся имя”, а в примерах приводят “подаётся ”Привет “имя”“”. Сначала разберись, что именно подаётся.
Скорее всего, примеры использования функции сформированы неправильно.
Не надо ничего усложнять в коде, если задание глупо составлено.
>>> def hello(name=None):
... if name is not None and name != '': # условия пишем ясно, не сокращаем до if name:
... return 'Hello, ' + name.title() + '!'
... else:
... return 'Hello, World!' # ветви пишем ясно, не отделяем оператор от if'а
...
>>> hello()
'Hello, World!'
>>> hello('')
'Hello, World!'
>>> hello('john')
'Hello, John!'
>>>
Ещё лучше
>>> def hello(name=None):
... if name is not None and name != '':
... correct_name = name.title()
... return 'Hello, ' + correct_name + '!'
... else:
... return 'Hello, World!'
...
>>> hello()
'Hello, World!'
>>> hello('')
'Hello, World!'
>>> hello('john')
'Hello, John!'
>>>
Всё пишем ясно, никаких загадок и шарад читателю, расчитывая на то, какой он умный, не оставляем. Если задано какое-то условие жёстко, читатель должен о нём быстро прочитать за секунду, а не догадаться за n минут и потом ещё думать “а ставилось это условие в задаче или оно автоматом идёт просто?”.
Также корректировка имени выделена в отдельный оператор, чтобы этот отдельный оператор можно было легко вывести на сторону в новую функцию корректировки имени, которая может проводить более глубокую корректировку и принимать для этой корректировки множество параметров. Таким образом, выделяя этот этап заранее, делаем код легко расширяемым, без необходимости его предварительного разделения для добавления более полной функциональности.