当函数本身在PYTHON内部调用时,从函数返回值

时间:2017-02-07 13:45:31

标签: python return

我有以下问题。我在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_sepa_reason_code = choose_sepa_reason_code()

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

请问您如何更改它以获得最终正确的用户输入? 谢谢你提前。

2 个答案:

答案 0 :(得分:2)

首先你的代码不会运行,因为它不是缩进的,其次你不能在其内部调用一个函数。

这对您的任务来说是更好的方法:

    public List<vertElementerParam> getVertList = new List<vertElementerParam>();

    private void button1_Click(object sender, EventArgs e)
    {
    GetKoord getKoord = new GetKoord(this);
    List<vertElementerParam> testList = new List<vertElementerParam>();

    testList = getKoord.getListvertElementer(getVertList);
    MessageBox.Show(testList.Count.ToString());

    }

答案 1 :(得分:1)

如果你真的想以递归方式调用该函数,请在 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()