在PYTHON中调用函数本身时从函数返回值

2024-06-01 23:16:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下问题。我在python中的函数如下所示:

def choose_sepa_reason_code():
# This method is for providing proper sepa reason code

sepa_reason_code = input("\nPlease provide SEPA reason code to reject the payment: ")

if sepa_reason_code in sepa_reason_codes:
    return sepa_reason_code
else:
    print("Your reason codes doesnt match the list:\n")
    pprint(sepa_reason_codes)
    choose_sepa_reason_code()

provided\u sepa\u reason\u code=选择\u sepa\u reason\u code()

所以'if'语句是为了确保用户提供正确的代码…..但是如果他第一次出错,我的函数稍后会返回'None'。你知道吗

您能告诉我如何更改它以获得最终正确的用户输入吗? 提前谢谢。你知道吗


Tags: the函数用户forifisdefcode
2条回答

首先你的代码不会运行,因为它没有缩进,其次你不能调用一个函数本身。你知道吗

这将是完成任务的更好方法:

def choose_sepa_reason_code():
# This method is for providing proper sepa reason code
    while True: #will provide permanent loop
        sepa_reason_code = input("\nPlease provide SEPA reason code to reject the payment: ")

        if sepa_reason_code in sepa_reason_codes:
            return sepa_reason_code #stops loop and returns the reason code
        else:
            print("Your reason codes doesnt match the list:\n")
            print(sepa_reason_codes)

如果确实要递归调用函数,请在else语句中调用choose_sepa_reason_code()作为返回值:

sepa_reason_code = input("\nPlease provide SEPA reason code to reject the payment: ")

if sepa_reason_code in sepa_reason_codes:
    return sepa_reason_code
else:
    print("Your reason codes doesnt match the list:\n")
    print(sepa_reason_codes)
    return choose_sepa_reason_code()

相关问题 更多 >