Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2020 17:01:39

GP
Зарегистрирован: 2020-03-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь в решении.

Помогите пожалуйста начинающему
Задача:
Определите метод hello, который возвращает “Hello, Name!- на заданное имя, или говорит Привет, Мир! если имя не задано (или передано как пустая строка).
Предположим, что имя является строкой, и он проверяет наличие пользовательских опечаток, чтобы вернуть имя с первой заглавной буквы (Xxxx).

Примеры:
Привет ”Джон“ = > ” Привет, Джон!“
привет ”алиса“ = > ” Привет, Алиса!“
Привет = > ” Привет, Мир!“# имя не дано
Привет ”= > “ Привет, Мир!”# имя является пустой строкой

Моё решение:

   
def hello (name, x = "Hello, ", y = "!"):
    return x + name.title() + y  
    if name == (""):
        return "Hello, World!"
не пойму как сделать третье подзадание где при пустом аргументе name выводится “Hello, World!”.

Отредактировано FishHook (Сен. 9, 2020 17:15:38)

Офлайн

#2 Сен. 9, 2020 17:17:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нужна помощь в решении.

GP
Ваш код не имеет смысла, потому что после строки

 return x + name.title() + y  
ничего больше никогда не выполнится
 def hello (name, x = "Hello, ", y = "!"):
    if name == (""):
        return "Hello, World!"
    return x + name.title() + y  



Офлайн

#3 Сен. 9, 2020 17:24:01

GP
Зарегистрирован: 2020-03-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь в решении.

FishHook
GPВаш код не имеет смысла, потому что после строки
Большое спасибо.
сам протупил) написал вне тела функции

Офлайн

#4 Сен. 9, 2020 17:28:48

GP
Зарегистрирован: 2020-03-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь в решении.

FishHook
def hello (name, x = “Hello, ”, y = “!”):
if name == (“”):
return “Hello, World!”
return x + name.title() + y

хотя сейчас выдаёт вот это:

TypeError: hello() missing 1 required positional argument: ‘name’
TypeError: hello () отсутствует 1 обязательный позиционный аргумент: ‘name’

Офлайн

#5 Сен. 10, 2020 00:08:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

Нужна помощь в решении.

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 минут и потом ещё думать “а ставилось это условие в задаче или оно автоматом идёт просто?”.

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



Отредактировано py.user.next (Сен. 10, 2020 00:23:02)

Офлайн

#6 Сен. 10, 2020 02:54:14

GP
Зарегистрирован: 2020-03-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь в решении.

py.user.next
Большое спасибо за помощь, в освоении этой не лёгкой но очень увлекательной науки!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version