用python写登录程序_python写用’户登录程序‘的过程1

本文介绍了使用Python编写用户登录程序的过程,包括基础需求和升级需求。基础需求涉及输入用户名和密码,验证登录,三次错误后退出。升级需求增加了支持多个用户及用户锁定功能。在实现过程中遇到了列表操作、字符串转换、文件读写等问题,作者分享了遇到的困难和解决办法,强调了编程前理清思路的重要性。
摘要由CSDN通过智能技术生成

作业需求:

基础需求:

让用户输入用户名密码

认证成功后显示欢迎信息

输错三次后退出程序

升级需求:

可以支持多个用户登录 (提示,通过列表存多个账户信息)

用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

首先看到这个需求感觉不太难,立刻在脑子里过了一边思路,如下:

1、用两个列表分别保存用户名和密码且保证是一一对应关系用来验证密码是否正确

2、采用在列表中查找位置函数找到用户输入的用户名在列表中的位置,

4、如果密码不正确,将用户名写入文件,并且在下一行跟着输入错误次数

5、每次登录都验证文件里是否存在输入错误密码过的用户名和验证错误次数是否达到3次但是当真正写起来才发现不是想象中的那么容易,遇到的问题超级多首先写出来基本登录程序

user_name=['a','b','c','d'] #密码和字符串分别保存到两个列表内并对应位置

passward=['1','2','3','4']

input_user_name=str(input("请输入用户名")) #将格式转化为字符串格式

input_passward=str(input("请输入密码"))if input_user_name in user_name: #判断用户名是否存在

user_name_position = user_name.index(input_user_name) #获得用户名在列表中的位置

if input_passward == passward[user_name_position]: #对应用户名位置判断密码是否正确

print("登陆成功")

开始就遇到第一个问题,不知道列表的基本使用方法,然后去百度现查的user_name.index(list) 这个方法浪费不少时间

这是查过的列表使用方法的连接

http://www.cnblogs.com/Devilf/p/8039805.html

然后第二个问题就是输入的用户名和密码要转换成字符串格式才能更好的在列表中查找它所在的位置,否则输入数字默认未int型在列表中找不到

ps:要考虑到当用户不存在的时候怎么办

然后要先检索文件中是否有过这个账号的错误记录,没有就新加

后面就该写当用户输入密码错误的时侯然后要先检索文件中是否有过这个账号的错误记录,没有就新加有的话将错误次数写入一个列表然后写入文档

当时我就想那就写呗,没啥大不了的,

然后还是像上个一样网上现找写入文档的操作办法

当然又忽略了一点,每次都要从文件中读取写入列表对列表进行修改然后再写回文档

Python中文件的读取和写入

https://blog.csdn.net/sinat_34474705/article/details/77389258

然后我写不下去了,出的错误太多了,还是回去好好补补我的基础吧,本想着一会就能写完呢,谁知道昨天写了凌晨将近两点,

对了,还有当你不知道怎么命名变量的时候,百度翻译是一个很好的选择

还有下次写程序的时候一定要把思路想清楚,要从头想到尾,否则你不知道一会又出啥问题了,有必要先把流程图画出来

最后附上我的超级超级烂的代码吧,

# input_user_name='a'

user_name=['a','b','c','d'] #密码和字符串分别保存到两个列表内并对应位置

passward=['1','2','3','4']

error_record=[]

def judge():

error_record = []

input_user_name=str(input("请输入用户名")) #将格式转化为字符串格式

input_passward=str(input("请输入密码"))

if input_user_name in user_name: # 判断用户名是否存在

user_name_position = user_name.index(input_user_name) # 获得用户名在列表中的位置

if input_passward == passward[user_name_position]: # 对应用户名位置判断密码是否正确

print("登陆成功")

else:

with open('error_record.txt') as f: # 打开文件并返回对象

for line in f: # 对每一行数据进行循环

rs = line.replace('\n', '') # 替换换行符

error_record.append(rs) # 循环放到列表内

f.close()

print(error_record)

if input_user_name in error_record: # 如果列表里有这个用户名

user_name_position1 = error_record.index(input_user_name) # 找到这个用户名的位置

print(user_name_position1)

if error_record[user_name_position1 + 1] == '1': # 判断输入错误次数

if input_passward == passward[user_name_position]: # 对应用户名位置判断密码是否正确

print("登陆成功")

judge()

else:

error_record[user_name_position1 + 1] = '2' #

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()

judge()

elif error_record[user_name_position1 + 1] == '2':

if input_passward == passward[user_name_position]: # 对应用户名位置判断密码是否正确

print("登陆成功")

judge()

else:

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()

judge()

elif error_record[user_name_position1 + 1] == '3':

print("登录失败,账户已经被锁定")

judge()

else:

error_record.append(input_user_name)

error_record.append('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()

judge()

judge()

然后流程图,待会补吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值