python写用’户登录程序‘的过程2
上次写的登陆程序杂乱无章,自己都看不下去了,老师做出的点评如下

由于目前字典还不是太熟悉就先不用了,
然后加入了一个while循环确实好用
但是感觉代码仍然是冗余的多,可读性超级差
对了现在发现一个比较有用的调试方法,就是在每个功能完成的时候加入一段print语句来说明这段代码运行了,或者说明一下实现了怎么样的一个功能
上次的那个代码还有一个超级漏洞就是,当某一个用户名锁定了之后,当你再次输入正确的密码的时候仍然会登陆上,
然后这次被我改正了,下面就是代码
user_name=['a','b','c','d'] #密码和字符串分别保存到两个列表内并对应位置
passward=['1','2','3','4']
error_record=[]
while(1):
error_record = []
input_user_name=input("请输入用户名") #将格式转化为字符串格式
input_passward=input("请输入密码")
if input_user_name in user_name: # 判断用户名是否存在
user_name_position = user_name.index(input_user_name) # 获得用户名在列表中的位置
with open('error_record.txt') as f: # 打开文件并返回对象
for line in f: # 对每一行数据进行循环
rs = line.replace('\n', '') # 替换换行符
error_record.append(rs) # 循环放到列表内
f.close()
print(error_record)
print("用户存在,并写入列表error_record")
if input_user_name in error_record: # 如果列表里有这个用户名
print("用户存在txt记录中")
user_name_position1 = error_record.index(input_user_name) # 找到这个用户名的位置
# if error_record[user_name_position1 + 1] == '3': # 对应用户名位置判断密码是否正确
# print("登录失败,账户已经被锁定")
# elif input_passward == passward[user_name_position]: # 对应用户名位置判断密码是否正确
#
# print("登陆成功")
if error_record[user_name_position1 + 1] == '1':
if input_passward == passward[user_name_position]:
print("登陆成功")
else:
error_record[user_name_position1 + 1] = '2' #
print("登陆失败,还有1次机会")
print(error_record)
with open('error_record.txt', 'w') as f:
f.truncate() # 文档清空
for i in error_record: # 循环写入文档新列表
with open('error_record.txt', 'a') as f:
f.write(i)
f.write('\n')
f.close()
print("写入txt记录中2")
elif error_record[user_name_position1 + 1] == '2':
if input_passward == passward[user_name_position]: # 对应用户名位置判断密码是否正确
print("登陆成功")
else:
print("登陆失败,还有0次机会")
error_record[user_name_position1 + 1] = '3' #
print(error_record)
with open('error_record.txt', 'w') as f:
f.truncate() # 文档清空
for i in error_record: # 循环写入文档新列表
with open('error_record.txt', 'a') as f:
f.write(i)
f.write('\n')
f.close()
print("写入txt记录中3")
elif error_record[user_name_position1 + 1] == '3':
print("登录失败,账户已经被锁定")
else:
if input_passward == passward[user_name_position]: # 对应用户名位置判断密码是否正确
print("登陆成功")
else:
error_record=[]
with open('error_record.txt') as f: # 打开文件并返回对象
for line in f: # 对每一行数据进行循环
rs = line.replace('\n', '') # 替换换行符
error_record.append(rs) # 循环放到列表内
f.close()
print("把文当中有的数据放到列表中")
print(error_record)
error_record.append(input_user_name)
error_record.append('1')
print("没有这个用户的错误记录,加入到error_record列表中")
print(error_record)
with open('error_record.txt', 'w') as f:
f.truncate() # 文档清空
for i in error_record: # 循环写入文档新列表
with open('error_record.txt', 'a') as f:
f.write(i)
f.write('\n')
f.close()
print("密码错误,还有两次机会")
else:
print("请输入正确的用户名")
代码仍然超级烂,我也是知道的,没事我还会改的,

浙公网安备 33010602011771号