首页 > 解决方案 > 我在 Python 中使用自定义函数时遇到了麻烦

问题描述

我用 Python 写了一个关于用户注册和登录系统的简单程序。我使用了许多自定义函数来使代码优雅。这是'choose_page'函数:

def choose_page():
    print('Welcome to the code system!')
    print('****************************\n')
    print('there are the three options:\n'
          '1.sign up\n'
          '2.log in\n'
          '3.quit')
    print('****************************\n')
    option = eval(input('Please input your option:'))
    return option

这是'sign_up'功能:

def sign_up():
    global customer
    # global option
    # global option2
    ..................
    ..................(many codes)
    option2 = eval(input('Now you can log in the main page by inputting 2 or 0 to return the sign_page: '))
    return option2

我还写了'log_in'和'quit'自定义函数,然后我可以像这样随心所欲地使用它们(这一步没有'quit'函数,因为现在没关系了):

if choose_page() == 1:
    sign_up()     
    if sign_up() == 0:
        choose_page()
    elif sign_up() == 2:
        log_in()            
elif choose_page() == 2:
    log_in() 

我运行它但遇到麻烦似乎是逻辑错误:

当我进入'choose_page'并输入1时,它运行到'sign_up',在'sign_up'的末尾,我输入2或0它仍然一次又一次地运行到'sign_up'而没有停止。

当我使用这些自定义函数时,是否有任何逻辑错误?提前感谢您的帮助。

标签: pythonfunction

解决方案


每次你写sign_up()它都会调用它并运行函数。Python 并不聪明。不是说“我们之前已经跑过sign_up()了。我记得答案。不用再跑了!” 它完全按照你说的做。如果你写sign_up(),它调用sign_up()

为避免重复提示,您需要将其结果保存到变量中,并且只调用该函数一次。

if choose_page() == 1:
    sign_up_answer = sign_up()     
    if sign_up_answer == 0:
        choose_page()
    elif sign_up_answer == 2:
        log_in()     

对具有相同问题的任何其他函数重复相同的想法。


推荐阅读