简单的用户管理系统求助
新手小白一枚,求助各位大侠提供一下思路,多谢了!需要实现一个简单的用户管理系统。用户名分别为Jack、Tom、Peter、Steve、Paul、Bill,各用户对应的密码分别为2586、575、106、9043、19482、48637。用户有三次登录机会。登陆成功、不成功、超过登录次数分别有相应的提示。效果如下。
请输入用户名:g
请输入用户密码:456
用户名不存在,还有2次机会,请重新登录
请输入用户名:Jack
请输入用户密码:79001
密码错误登录失败,还有一次机会,请重新登录
请输入用户名:Jack
请输入用户密码:2586
登录成功 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-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() 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() suchocolate 发表于 2020-12-28 22:59
好的,非常感谢! 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]