Запись в строку, определенную в другой функции - PullRequest
0 голосов
/ 09 апреля 2020

Напишите функцию get_knights_greeting (name, answer = 'Ni'), которая возвращает «Я из рыцарей, которые говорят». Затем напишите другую функцию get_new_knights_greeting без входных параметров, которая вызывает предыдущую функцию, которая возвращает «Я Джон рыцарей, которые говорят:« Экке, Экке, Экке, Экке, Птанг, Зоопарк, Боинг! »

Я не смог найти другой ответ, кроме приведенного ниже. Мой вопрос заключается в том, как я могу написать Джона между заданной строкой в ​​функции get_knights_greeting (), когда я нахожусь в функции get_new_knights_greeting ()?

Мой ожидаемый результат - «Я - Джон Рыцарей, которые говорят: Ekke Ekke Ekke Ekke Ekke» Ptang Zoo Boing! '

Как я могу получить этот результат, используя первую функцию, вложенную во вторую функцию?

def get_knights_greeting(name, answer='Ni') :
    return  'I am of the Knights who say'


def get_new_knights_greeting():


    return get_knights_greeting('John')+' Ekke Ekke Ekke Ekke Ptang Zoo Boing!'

Вывод, который я получил: «Я из рыцарей, которые говорят Экке Ekke Ekke Ekke Ptang Zoo Boing! '

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Интересно, точно ли вы расшифровали исходный вопрос? Конечно, функция get_knights_greeting должна выводить свои переданные параметры. Это можно сделать несколькими способами:

  1. return 'I am %s of the Knights who say %s' % (name, answer)'
  2. return 'I am {} of the Knights who say {}'.format(name, answer)
  3. return 'I am {name} of the Knights who say {answer}'.format(answer=answer, name=name)
  4. return f'I am {name} of the Knights who say {answer}' # Python 3 только

А затем:

def get_new_knights_greeting():
    return get_knights_greeting('John', answer='Ekke Ekke Ekke Ekke Ptang Zoo Boing!')
0 голосов
/ 09 апреля 2020

Как я понимаю, ваша проблема. Есть два способа сделать это следующим образом:

def get_knights_greeting(name='', answer='Ni') :
    return  'I am {} of the Knights who say'.format(name)

def get_new_knights_greeting():
    return get_knights_greeting('John')+' Ekke Ekke Ekke Ekke Ptang Zoo Boing!'

Python также поддерживает внутренние функции, поэтому вы также можете сделать это как

def get_new_knights_greeting():

    def get_knights_greeting(name='', answer='Ni') :
        return  'I am {} of the Knights who say'.format(name)

    return get_knights_greeting('John')+' Ekke Ekke Ekke Ekke Ptang Zoo Boing!'


>> I am John of the Knights who say Ekke Ekke Ekke Ekke Ptang Zoo Boing!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...