Как связать функции с определенной c функцией - PullRequest
0 голосов
/ 13 марта 2020

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

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

def name():
    name = str(input("please enter your name: "))
    while name not in (""," "):
        return name
    def greeting():
        message = "hello {}, welcome".format(name)
        print(message)
        return message
    def happy():
        mood = str(input("hello {},this is to check if you are happy, kindly answer 'yes' or 'no': ".format(name))
        if mood == "yes":
            reply = "that's good"
        else:
            reply = "oh dear, cheer up"
        print(reply)
    else:
        break

info = name()
print(info)

Этот код должен запускать функцию приветствия и вызывать функцию happy только в том случае, если функция имени выполняется успешно, а также не следует вызывать функцию приветствия или happy без функции name.

Но он не выполняется так, как хотелось бы. Возвращает только имя.

Заранее спасибо

1 Ответ

0 голосов
/ 13 марта 2020

Нет необходимости определять другие функции в функции name(). Я бы предложил определить функции отдельно, а затем вызвать их соответственно через некоторое время l oop ниже.

def name():
    name = str(input("please enter your name: "))
    if name not in (""," "):
        return name
    return None

def greeting(name):
    message = "hello {}, welcome".format(name)
    print(message)

def happy(name):
    mood = input("hello {},this is to check if you are happy, kindly answer 'yes' or 'no': ".format(name))
    if mood == "yes":
        reply = "that's good"
    else:
        reply = "oh dear, cheer up"
    print(reply)

while True:
    info = name()
    if info:
        greeting(info)
        happy(info)
        break

Редактировать: Я понимаю, что вы не хотите, чтобы другие функции были доступны за пределами функции name. Это тоже можно сделать (хотя и довольно странно).

def name():
    name_ = str(input("please enter your name: "))
    if name_ not in (""," "):
        def greeting(name):
            message = "hello {}, welcome".format(name)
            print(message)

        def happy(name):
            mood = input("hello {},this is to check if you are happy, kindly answer 'yes' or 'no': ".format(name))
            if mood == "yes":
                reply = "that's good"
            else:
                reply = "oh dear, cheer up"
            print(reply)
            return mood

        greeting(name_)
        return name_, happy(name_)

    return name()

info = name()
print(info)
...