AresFC 发表于 2020-12-21 23:41:37

简单的用户管理系统求助

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

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


请输入用户名:g
请输入用户密码:456
用户名不存在,还有2次机会,请重新登录
请输入用户名:Jack
请输入用户密码:79001
密码错误登录失败,还有一次机会,请重新登录
请输入用户名:Jack
请输入用户密码:2586
登录成功

suchocolate 发表于 2020-12-22 13:51:32

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:
            ck_zero(counter)
            print(f'你输入的密码不正确,还有{counter}次机会,请重新登录。')
            continue
      else:
            print('登录成功')


if __name__ == '__main__':
    main()

AresFC 发表于 2020-12-28 22:46:27

suchocolate 发表于 2020-12-22 13:51


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

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:   #这里是以键查值吗?
    ··       ck_zero(counter)#同问
            print(f'你输入的密码不正确,还有{counter}次机会,请重新登录。')
            continue
      else:
            print('登录成功')


if __name__ == '__main__':#这里代表什么?
    main()

suchocolate 发表于 2020-12-28 22:59:25

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

def ck_zero(ct): ...

def ck_zero(ct):   # 检查剩余尝试次数是否为0,为0的话打印提示,账号锁定,如果不为0,什么都不做。
    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:    # np使用用户名做字典的key,用对应的密码作value。np就是用key取值,判断是否等于输入的密码。
            ck_zero(counter)
            print(f'你输入的密码不正确,还有{counter}次机会,请重新登录。')
            continue
      else:
            print('登录成功')


if __name__ == '__main__':    # 只有本脚本作为主程序运行时才会调用main函数,防止被其他脚本错误调用,这是py习惯写法,详细的知识你可以买本小甲鱼的书,这些基本知识讲的很清楚。
    main()

AresFC 发表于 2020-12-28 23:19:59

suchocolate 发表于 2020-12-28 22:59


好的,非常感谢!

傻眼貓咪 发表于 2021-9-7 14:25:39

class UserNameException(Exception):
    def __init__(self, count):
      self.count = count
    def showError(self):
      if self.count:
            print(f"用户名不存在,还有{self.count}次机会,请重新登录")
      else:
            print("机会用完,账号锁定")

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

def main():
    users = {'Jack': 2586, 'Tom': 575, 'Peter': 106, 'Steve': 9043, 'Paul': 19482, 'Bill': 48637}
    count = 3
    while count:
      count -= 1
      try:
            name = input("请输入用户名:")
            password = int(input("请输入用户密码:"))
            if not(name in users.keys()):
                raise UserNameException(count)
            elif users != password:
                raise PasswordsException(count)
            else:
                print("登录成功")
                break
      except UserNameException as e:
            e.showError()
            continue
      except PasswordsException:
            e.showError()
            continue

if __name__ == "__main__":
    main()
页: [1]
查看完整版本: 简单的用户管理系统求助