鱼C论坛

 找回密码
 立即注册
查看: 1954|回复: 6

[已解决]关于python第41课后作业再次向各位老师求助

[复制链接]
发表于 2022-6-15 19:41:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 caeser 于 2022-6-15 19:40 编辑

各位老师,再次求助:
登陆时如果输入密码错误,再次输入成功后,可以正常退出。如图:
1.png

但登陆时,如果没有密码输错,退出时,反而成了死循环了,一直出现登陆界面,如下图:
2.png




  1. register_dict={'adm':'123'}

  2. print("欢迎来到鱼C论坛")


  3. def get_int(): # 获取用户指令函数
  4.     print("""
  5. ==============
  6. 1.注册
  7. 2.登录
  8. 3.退出
  9.              """)

  10.     global num
  11.     num = int(input("请输入指令: "))
  12.     while num > 0 :
  13.         if num == 1:
  14.             register()
  15.         elif num == 2:
  16.             login()
  17.         elif num == 3:
  18.             break
  19.    


  20. def login():#登录函数
  21.     login_name = input("请输入用户名:")
  22.     n=0
  23.     while n ==0:
  24.         for each_n in list(register_dict.keys()):
  25.                 n=0
  26.                 if login_name ==  each_n:
  27.                     n = 1
  28.         if n != 1:
  29.              print("该用户名不存在。","\n")
  30.              login_name = input("请重新输入用户名:")
  31.             
  32.     login_password = input("请输入密码:")

  33.    

  34.     p = 0
  35.     while p == 0:
  36.         for  each_p in register_dict:
  37.             v = register_dict.get(each_p)
  38.             
  39.             if v == login_password:
  40.                 print("恭喜,登录成功~")
  41.                 get_int()
  42.             else:
  43.                 p = 1
  44.                 print("密码错误")
  45.                 login_password = input("请重新输入密码:")
  46.    
  47.            
  48.         
  49.    
  50.    

  51. def register():# 注册函数
  52.    
  53.     name = input("请输入用户名:")
  54.     password = input("请输入密码:")
  55.    
  56.     encrypt(name,password)
  57.    
  58.    

  59. def encrypt(x,y):# 存放用户名和密码函数
  60.     #keys = register_dict.keys()
  61.    
  62.     for each in list(register_dict.keys()):
  63.         if each == x:
  64.             print("用户名已经存在:请重新注册")
  65.             register()
  66.     register_dict[x] = y
  67.    
  68.     print("恭喜,注册成功")
  69.     get_int()

  70. get_int()

  71.    

复制代码
最佳答案
2022-6-16 14:05:47
    while p == 0:
        for  each_p in register_dict:
            v = register_dict.get(each_p)
            if v == login_password:
                print("恭喜,登录成功~")
                get_int()
                return #加个结束语
            else:
                p = 1
                print("密码错误")
                login_password = input("请重新输入密码:")
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-6-15 21:21:34 | 显示全部楼层
本帖最后由 jackz007 于 2022-6-15 21:23 编辑
  1. register_dict = {'adm':'123'}

  2. def login():
  3.     count = 3
  4.     while count:
  5.         name = input("请输入用户名:") . strip()
  6.         if name in register_dict . keys():
  7.             passwd = input("请输入密码:") . strip()
  8.             if register_dict[name] == passwd:
  9.                 print('用户 [' , name , '] 成功登录')
  10.                 break
  11.             else:
  12.                 print('密码错误')
  13.         else:
  14.             print('用户 [' , name , '] 不存在\n')
  15.         count -= 1

  16. def register():
  17.     r = True
  18.     while r:
  19.         name = input("请输入用户名:") . strip()
  20.         if name and not name in register_dict . keys():
  21.              while r:
  22.                  passwd = input("请输入密码:") . strip()
  23.                  if passwd:
  24.                      register_dict[name] = passwd
  25.                      print('成功创建用户 [' , name , ']\n')
  26.                      r = False
  27.                  else:
  28.                      print('密码不可以为空\n')
  29.         else:
  30.             print('用户 [' , name , '] 已经存在\n')
  31.             r = False

  32. def menu(): # 获取用户指令函数
  33.     while True:
  34.         print("""
  35. ==============
  36. 1.注册
  37. 2.登录
  38. 3.退出
  39.              """)
  40.         
  41.         num = int(input("请输入指令: "))
  42.         if num == 1:
  43.             register()
  44.         elif num == 2:
  45.             login()
  46.         elif num == 3:
  47.             break

  48. print("欢迎来到鱼C论坛")   
  49. menu()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-16 01:21:50 | 显示全部楼层
用exit()不好吗?
  1. register_dict={'adm':'123'}

  2. print("欢迎来到鱼C论坛")


  3. def get_int(): # 获取用户指令函数
  4.     print("""
  5. ==============
  6. 1.注册
  7. 2.登录
  8. 3.退出
  9.              """)

  10.     num = int(input("请输入指令: "))
  11.     while num > 0 :
  12.         if num == 1:
  13.             register()
  14.         elif num == 2:
  15.             login()
  16.         elif num == 3:
  17.             exit()
  18.    


  19. def login():#登录函数
  20.     login_name = input("请输入用户名:")
  21.     n=0
  22.     while n ==0:
  23.         for each_n in list(register_dict.keys()):
  24.                 n=0
  25.                 if login_name ==  each_n:
  26.                     n = 1
  27.         if n != 1:
  28.              print("该用户名不存在。","\n")
  29.              login_name = input("请重新输入用户名:")
  30.             
  31.     login_password = input("请输入密码:")

  32.    

  33.     p = 0
  34.     while p == 0:
  35.         for  each_p in register_dict:
  36.             v = register_dict.get(each_p)
  37.             
  38.             if v == login_password:
  39.                 print("恭喜,登录成功~")
  40.                 get_int()
  41.             else:
  42.                 p = 1
  43.                 print("密码错误")
  44.                 login_password = input("请重新输入密码:")
  45.    
  46.            
  47.         
  48.    
  49.    

  50. def register():# 注册函数
  51.    
  52.     name = input("请输入用户名:")
  53.     password = input("请输入密码:")
  54.    
  55.     encrypt(name,password)
  56.    
  57.    

  58. def encrypt(x,y):# 存放用户名和密码函数
  59.     #keys = register_dict.keys()
  60.    
  61.     for each in list(register_dict.keys()):
  62.         if each == x:
  63.             print("用户名已经存在:请重新注册")
  64.             register()
  65.     register_dict[x] = y
  66.    
  67.     print("恭喜,注册成功")
  68.     get_int()

  69. get_int()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-16 08:48:40 | 显示全部楼层
还在学习中,还看不懂那么多函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-16 14:05:47 | 显示全部楼层    本楼为最佳答案   
    while p == 0:
        for  each_p in register_dict:
            v = register_dict.get(each_p)
            if v == login_password:
                print("恭喜,登录成功~")
                get_int()
                return #加个结束语
            else:
                p = 1
                print("密码错误")
                login_password = input("请重新输入密码:")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-17 13:45:11 | 显示全部楼层

非常感谢老师的付出,您写的代码比我精炼多了。但我想要的是我的代码到底哪里出错了,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-17 13:46:06 | 显示全部楼层

用exit(),退出的时候老是有一个提示,所以就么有用,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 19:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表