问题描述:
用户登陆系统时需要首先输入账号,如果账号不存在,输出“Wrong User”并结束程序;账号正确时,再输入密码,验证账号密码与已给定的账号密码是否一致,如果一致,输出“Success”,否则输出“Fail”以及剩余尝试次数。总尝试次数为3次,如果3次均输入错误,输出“Login Denied”。
原因分析:
代码一由于键对应的值是一个一维列表,数据处理起来比较复杂,
可以用keys()获取键,用values()获取值,但是要转换为列表,方便使用
因为他们返回的不是列表
dic = {"aaa": ["123456", 10000], "bbb": ["888888", 5000], "ccc": ["333333", 3000]} dic.keys() print(dic.keys()) print(dic.values()) print(list(dic.keys())) print(list(dic.values()))
代码二,由于键值只用了一个所以我们建立字典的时候只使用一个就行了,这样编程就变得很简单了。
解决方案:
代码一:
dic = {"aaa": ["123456", 10000], "bbb": ["888888", 5000], "ccc": ["333333", 3000]} flag = 3 account = input() if account in dic: while(flag > 0): # 用户1 if account == list(dic.keys())[0]: mima = input() if mima == list(dic.values())[0][0]: print("Success") break else: flag = flag - 1 if flag > 0: print("Fail,{} Times Left".format(flag)) # 用户2 elif account == list(dic.keys())[1]: mima = input() if mima == list(dic.values())[1][0]: print("Success") break else: flag = flag - 1 if flag > 0: print("Fail,{} Times Left".format(flag)) # 用户3 elif account == list(dic.keys())[2]: mima = input() if mima == list(dic.values())[2][0]: print("Success") break else: flag = flag - 1 if flag > 0: print("Fail,{} Times Left".format(flag)) else: print("Wrong User") break if flag == 0: print("Login Denied")
代码二
dic={"aaa":'123456',"bbb":'888888',"ccc":'333333'} x=3 n=input() if n in dic: while x>0: a=input() if a==dic[n]: print("Success") break else: x-=1 if x>0: print("Fail,{} Times Left".format(x)) if x==0: print("Login Denied") else: print("Wrong User")
知识点:
keys()和values()函数
dic = {"aaa": ["123456", 10000], "bbb": ["888888", 5000], "ccc": ["333333", 3000]} dic.keys() print(dic.keys()) print(dic.values()) print(list(dic.keys())) print(list(dic.values()))