python - 我在 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'而没有停止。
当我使用这些自定义函数时,是否有任何逻辑错误?提前感谢您的帮助。
解决方案
每次你写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()
对具有相同问题的任何其他函数重复相同的想法。
推荐阅读
- node.js - NodeJs 和 Postman
- javascript - 如何在一个组件中有一个按钮来呈现另一个单独的组件?
- python - 作者的 Django 博客文章
- delphi - 为什么我的 MDIChild 表单每次都没有以 wsMaximized 状态打开?
- javascript - 从 office excel 插件 TaskPane 中访问 manifest.xml 数据
- php - PHP矩阵函数
- python - Pandas 中没有年份的日期
- javascript - HTML JAVASCRIPT:向表单中的元素数量添加随机值
- c# - 子属性c#中的可见性较低
- angular - 角 - 节省地创建和处置内联网络工作者