作业需求:

基础需求:

让用户输入用户名密码

认证成功后显示欢迎信息

输错三次后退出程序

升级需求:

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

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

然后流程图,待会补吧

python写用用户名密码程序_python写用’户登录程序‘的过程相关推荐

  1. python写用用户名密码程序_Python创建用户名和密码程序

    我现在只是一个初学者程序员,我正在尝试创建一个用户名/密码程序.这是我的代码如下: username = 'Polly1220' password = 'Bob' userInput = input( ...

  2. 用python编写一个点餐程序_Python写一个自动点餐程序

    原博文 2019-08-09 10:45 − # Python写一个自动点餐程序 ## 为什么要写这个 公司现在用meican作为点餐渠道,每天规定的时间是早7:00-9:40点餐,有时候我经常容易忘 ...

  3. python写一个表白程序带时间_Python 打造最强表白程序

    单身久的我们,好像觉得一个人过也没什么的.但即使非常享受单身生活,大家也要保持"可勾搭"的待机状态,因为促进荷尔蒙分沁有益身心健康.在这个人人都在秀的时候,做为程序员我们也要操作起 ...

  4. python中怎么编写程序_python写完程序怎么运行

    安装并配置完成之后,我们就可以编写第一个python程序.学过其他语言的兄弟姐妹们,都知道语言的入门程序就是hello world.那么,我们这里也以hello world来抛砖引玉,打开python ...

  5. python日历小程序_python写的日历小程序

    查看: 14785|回复: 262 [作品展示] python写的日历小程序 电梯直达 发表于 2013-8-19 21:38:32 | 只看该作者 |倒序浏览 |阅读模式 马上注册,结交更多好友,享 ...

  6. python网络爬虫程序_Python写的网络爬虫程序(很简单)

    Python写的网络爬虫程序(很简单) 这是我的一位同学传给我的一个小的网页爬虫程序,觉得挺有意思的,和大家分享一下.不过有一点需要注意,要用python2.3,如果用python3.4会有些问题出现 ...

  7. python写窗体程序_python写窗口

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 最近在学习 pyqt5 gui 编程,大致路线是找了套网课<撩课-pyth ...

  8. python写采集程序_Python写的简易采集爬虫(蜘蛛)

    #!/usr/bin/python #-*-coding:utf-8-*- # 简易采集爬虫 #    1.采集Yahoo!Answers,parseData函数修改一下,可以采集任何网站 #    ...

  9. python红包程序_Python写随机发红包的原理流程

    首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机浮点数通过下面的图简单看下: ...

最新文章

  1. No modifications are allowed to a locked ParameterMap
  2. django template语法
  3. css--calc()函数
  4. 第十届 蓝桥杯样题 ——代码填空
  5. iOS开发网络资源整理-持续更新
  6. 详解getchar()函数与缓冲区
  7. php post请求后端拿不到值_Ajax 提交POST后,后台php 无法获取$POST值
  8. 2018.9.19.Matlab实验四:Matlab程序设计
  9. 第三章 表单与表单元素
  10. 接口测试文件上传(python+requests)
  11. 2014年12月21号面试
  12. OPPO R9sPlus怎么刷机 OPPO R9sPlus的刷机教程 OPPO R9sPlus完美解除账号锁
  13. namecheap ssr_如何将SSL证书和自定义Namecheap域添加到GitLab Pages站点
  14. 网络营销决胜武器——软文营销实战方法、案例、问题
  15. linux poodle漏洞,SSL POODLE[贵宾犬]漏洞的解决办法
  16. 有哪些值得长期坚持下去的好习惯?
  17. d2i_X509 载入der文件返回为空
  18. Kubernetes Krew简介
  19. EOJ3054-波兰式求值(递归法)
  20. webstorm js中文乱码

热门文章

  1. MacBook 电池管家—— AlDente Pro 使用体验
  2. CentOS7-安装防火墙
  3. 从页面获取form表单提交的数据
  4. VMware运行虚拟机卡慢等解决办法
  5. 网络工程师----成长之路
  6. 通往SDN之路:可编程网络的思想史
  7. 原生JS实现加载进度条
  8. 小布老师oralce讲座笔记(六)
  9. strncpy()函数详解
  10. 怎么撰写一份优秀的数据分析报告(五)