本帖最后由 临时号 于 2022-6-13 21:44 编辑
首先,你输入了1,调用了register()函数
然后在register()函数中,你调用了encrypt函数
在encrypt函数中,你调用了get_int()函数
在get_int()函数中,你输入了3,跳出了循环,get_int()函数结束,你又回到了调用get_int()函数的地方,也就是encrypt函数中
在encrypt函数中,函数结束,你又回到了调用encrypt函数的地方,也就是register()函数
在register()函数中,函数结束,你又回到了第一次调用register()函数的地方,也就是get_int()函数
在get_int()函数中,由于num变量是局部变量,而你第一次调用get_int()函数时,你输入的是1,所以num=1
又因为程序目前在while循环中,num>0,所以程序又进了while循环,因为num=1,所以又调用了register()函数,又开始了注册
解决的方法有两种:
1.声明num变量为全局变量
- register_dict={'adm':'123'}
- print("欢迎来到鱼C论坛")
- def get_int(): # 获取用户指令函数
- print("""
- ==============
- 1.注册
- 2.登录
- 3.退出
- """)
- global num
- num = int(input("请输入指令: "))
- while num > 0 :
- if num == 1:
- register()
- elif num == 2:
- login()
- elif num == 3:
- break
-
- def login():#登录函数
- pass
-
- def register():# 注册函数
-
- name = input("请输入用户名:")
- password = input("请输入密码:")
-
- encrypt(name,password)
-
-
- def encrypt(x,y):# 存放用户名和密码函数
- #keys = register_dict.keys()
-
- for each in list(register_dict.keys()):
- if each == x:
- print("用户名已经存在:请重新注册")
- register()
- register_dict[x] = y
-
- print("恭喜,注册成功")
- get_int()
- get_int()
复制代码
2.在输入3后不使用break跳出循环,而是使用exit()函数退出程序
- register_dict={'adm':'123'}
- print("欢迎来到鱼C论坛")
- def get_int(): # 获取用户指令函数
- print("""
- ==============
- 1.注册
- 2.登录
- 3.退出
- """)
- num = int(input("请输入指令: "))
- while num > 0 :
- if num == 1:
- register()
- elif num == 2:
- login()
- elif num == 3:
- exit()
-
- def login():#登录函数
- pass
-
- def register():# 注册函数
-
- name = input("请输入用户名:")
- password = input("请输入密码:")
-
- encrypt(name,password)
-
-
- def encrypt(x,y):# 存放用户名和密码函数
- #keys = register_dict.keys()
-
- for each in list(register_dict.keys()):
- if each == x:
- print("用户名已经存在:请重新注册")
- register()
- register_dict[x] = y
-
- print("恭喜,注册成功")
- get_int()
- get_int()
复制代码