我在Python中使用自定义函数时遇到了麻烦


我写了一个关于用户签名的简单程序;使用Python的log_in系统。我使用了许多自定义函数来使代码变得优雅。以下是"选择页面"功能:
def choose_page():
print('Welcome to the code system!')
print('****************************n')
print('there are the three options:n'
'1.sign upn'
'2.log inn'
'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"one_answers"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_u普"的末尾,我输入2或0,它仍然会一次又一次地运行到"signa_up"中,没有停止。

当我使用这些自定义功能时,是否存在逻辑错误?感谢您提前提供帮助。

每次编写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()     

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

最新更新