鱼C论坛

 找回密码
 立即注册
查看: 2186|回复: 5

[已解决]简单的用户管理系统求助

[复制链接]
发表于 2020-12-21 23:41:37 | 显示全部楼层 |阅读模式

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

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

x
新手小白一枚,求助各位大侠提供一下思路,多谢了!

需要实现一个简单的用户管理系统。用户名分别为Jack、Tom、Peter、Steve、Paul、Bill,各用户对应的密码分别为2586、575、106、9043、19482、48637。用户有三次登录机会。登陆成功、不成功、超过登录次数分别有相应的提示。效果如下。


请输入用户名:g
请输入用户密码:456
用户名不存在,还有2次机会,请重新登录
请输入用户名:Jack
请输入用户密码:79001
密码错误登录失败,还有一次机会,请重新登录
请输入用户名:Jack
请输入用户密码:2586
登录成功
最佳答案
2020-12-22 13:51:32
  1. def ck_zero(ct):
  2.     if ct == 0:
  3.         print('机会用完,账号锁定。')
  4.         exit(0)


  5. def main():
  6.     np = {'Jack': '2586', 'Tom': '575', 'Peter': '106', 'Steve': '9043', 'Paul': '19482', 'Bill': '48637'}
  7.     counter = 3
  8.     while counter > 0:
  9.         un = input('请输入用户名:')
  10.         pw = input('请输入用户密码:')
  11.         counter -= 1
  12.         if un not in np.keys():
  13.             ck_zero(counter)
  14.             print(f'用户名不存了,还有{counter}次机会,请重新登录。')
  15.             continue
  16.         if pw != np[un]:
  17.             ck_zero(counter)
  18.             print(f'你输入的密码不正确,还有{counter}次机会,请重新登录。')
  19.             continue
  20.         else:
  21.             print('登录成功')


  22. if __name__ == '__main__':
  23.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-22 13:51:32 | 显示全部楼层    本楼为最佳答案   
  1. def ck_zero(ct):
  2.     if ct == 0:
  3.         print('机会用完,账号锁定。')
  4.         exit(0)


  5. def main():
  6.     np = {'Jack': '2586', 'Tom': '575', 'Peter': '106', 'Steve': '9043', 'Paul': '19482', 'Bill': '48637'}
  7.     counter = 3
  8.     while counter > 0:
  9.         un = input('请输入用户名:')
  10.         pw = input('请输入用户密码:')
  11.         counter -= 1
  12.         if un not in np.keys():
  13.             ck_zero(counter)
  14.             print(f'用户名不存了,还有{counter}次机会,请重新登录。')
  15.             continue
  16.         if pw != np[un]:
  17.             ck_zero(counter)
  18.             print(f'你输入的密码不正确,还有{counter}次机会,请重新登录。')
  19.             continue
  20.         else:
  21.             print('登录成功')


  22. if __name__ == '__main__':
  23.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-28 22:46:27 | 显示全部楼层

谢谢解答!刚刚上手有一点看不太懂,有疑问的地方我写了注释,可以麻烦解释一下吗?

def ck_zero(ct):
    if ct == 0:
        print('机会用完,账号锁定。')
        exit(0)


def main():
    np = {'Jack': '2586', 'Tom': '575', 'Peter': '106', 'Steve': '9043', 'Paul': '19482', 'Bill': '48637'}
    counter = 3
    while counter > 0:
        un = input('请输入用户名:')
        pw = input('请输入用户密码:')
        counter -= 1
        if un not in np.keys():
    ··      ck_zero(counter)    #这里是什么意思?
            print(f'用户名不存了,还有{counter}次机会,请重新登录。')
            continue
    ···    if pw != np[un]:   #这里是以键查值吗?
    ··       ck_zero(counter)  #同问
            print(f'你输入的密码不正确,还有{counter}次机会,请重新登录。')
            continue
        else:
            print('登录成功')


if __name__ == '__main__':  #这里代表什么?
    main()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-28 22:59:25 | 显示全部楼层
AresFC 发表于 2020-12-28 22:46
谢谢解答!刚刚上手有一点看不太懂,有疑问的地方我写了注释,可以麻烦解释一下吗?

def ck_zero(ct): ...
  1. def ck_zero(ct):   # 检查剩余尝试次数是否为0,为0的话打印提示,账号锁定,如果不为0,什么都不做。
  2.     if ct == 0:
  3.         print('机会用完,账号锁定。')
  4.         exit(0)


  5. def main():
  6.     np = {'Jack': '2586', 'Tom': '575', 'Peter': '106', 'Steve': '9043', 'Paul': '19482', 'Bill': '48637'}
  7.     counter = 3
  8.     while counter > 0:
  9.         un = input('请输入用户名:')
  10.         pw = input('请输入用户密码:')
  11.         counter -= 1
  12.         if un not in np.keys():
  13.             ck_zero(counter)
  14.             print(f'用户名不存了,还有{counter}次机会,请重新登录。')
  15.             continue
  16.         if pw != np[un]:    # np使用用户名做字典的key,用对应的密码作value。np[un]就是用key取值,判断是否等于输入的密码。
  17.             ck_zero(counter)
  18.             print(f'你输入的密码不正确,还有{counter}次机会,请重新登录。')
  19.             continue
  20.         else:
  21.             print('登录成功')


  22. if __name__ == '__main__':    # 只有本脚本作为主程序运行时才会调用main函数,防止被其他脚本错误调用,这是py习惯写法,详细的知识你可以买本小甲鱼的书,这些基本知识讲的很清楚。
  23.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-28 23:19:59 | 显示全部楼层

好的,非常感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-7 14:25:39 | 显示全部楼层
  1. class UserNameException(Exception):
  2.     def __init__(self, count):
  3.         self.count = count
  4.     def showError(self):
  5.         if self.count:
  6.             print(f"用户名不存在,还有{self.count}次机会,请重新登录")
  7.         else:
  8.             print("机会用完,账号锁定")

  9. class PasswordsException(Exception):
  10.     def __init__(self, count):
  11.         self.count = count
  12.     def showError(self):
  13.         if self.count:
  14.             print(f"密码错误登录失败,还有{self.count}次机会,请重新登录")
  15.         else:
  16.             print("机会用完,账号锁定")

  17. def main():
  18.     users = {'Jack': 2586, 'Tom': 575, 'Peter': 106, 'Steve': 9043, 'Paul': 19482, 'Bill': 48637}
  19.     count = 3
  20.     while count:
  21.         count -= 1
  22.         try:
  23.             name = input("请输入用户名:")
  24.             password = int(input("请输入用户密码:"))
  25.             if not(name in users.keys()):
  26.                 raise UserNameException(count)
  27.             elif users[name] != password:
  28.                 raise PasswordsException(count)
  29.             else:
  30.                 print("登录成功")
  31.                 break
  32.         except UserNameException as e:
  33.             e.showError()
  34.             continue
  35.         except PasswordsException:
  36.             e.showError()
  37.             continue

  38. if __name__ == "__main__":
  39.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 23:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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