#coding = utf-8

importdatetime

today=datetime.date.today() #读取当前日期

password = {} #建立字典

passwd = open('user_file.txt','r') #以只读的模式打开,确保文件存在,不然报错

for f in passwd.readlines(): #读取文件的所有内容

u = f.split('\n')[0] #以回车为分割取出用户名

p = f.split('\n')[0] #以回车为分割取出密码

m = p.split('\n')[0] #以回车为分割符,取出密码的完整内容

password[p] =m#print (password)

passwd.close()

lock={}

user={}

lock_info= open('lock_file.txt','r') #以只读的模式打开

user_info = open('user_file.txt','r') #以只读的模式打开

for i inlock_info.readlines():

k1= i.split('\n')[0]

lock[k1]=k1for u inuser_info.readlines():

n=u.split('\n')[0]

user[n]=n#print (lock)#print (user)

count =0

lock_info.close()

user_info.close()

username= input("请输入您的用户名:")if username inlock.keys():print ("该用户已被锁定,没法正常登陆!")elif username inuser.keys():

pwd= input("请输入您的密码:")if pwd ==password[username]:

welcome="""-----------Welcome info----------

登陆成功!

欢迎您:%s,今天是:%s.

---------------End--------------"""%(username,today)print(welcome)else:while count < 2:

pwd= input("密码错误,请从新输入:")if pwd ==password[username]:

welcome="""-----------Welcome info----------

登陆成功!

欢迎您:%s,今天是:%s.

---------------End--------------"""%(username,today)print(welcome)breakcount+=1

else:

lock_user= open("lock_file.txt",'a') #将被锁定的用户名追加写入lock_file.txt文件中

lock_user.write(username+'\n')

lock_user.close()print ("您的密码输入错误超过三次,用户被锁定!")else:print("无效的用户名,系统退出!")

exit()

导师批注:python

一、写代码必定要多注意代码的书写规范,多参阅pep8规范文档;编程

二、对用户输入的数据,应对首尾空格进行处理;函数

三、文件操做时,应指定字符编码格式(不一样的操做系统,会出现字符编码错误);学习

在作这份做业时,也是刚学的python编程,看老师提供的视频教程,python编程从入门到实践这本书,在遇到老师所讲的或者本身在书上看到的不太明白的知识点时,就本身到网上诸如博客园之类的去寻找帮助,看看别人对于一个方法是怎么去使用,或者为了实现一个功能是用哪一个方法比较好,诸如该如何去实现文件的读写操做,这是在视频教程里还没讲到的内容,但做业里须要用到,那这就要求我必须提早去学习文件的读写操做是如何实现的。编码

在作这份做业时个人重点也全都是放在了该如何去作出做业所要求实现的功能,对于其它如导师所提到的pep8编码规范则是从未据说也从未看到过,在看到导师批注后去认真的把这个pep8编码规范看了一遍,原来并非说咱们写完代码后不报错、能正常运行、能够实现所须要的功能就OK了,原来代码编写的背后还有这么个规范去要求咱们,诸如:spa

空格的使用

整体原则,避免没必要要的空格。

1 各类右括号前不要加空格。

2 逗号、冒号、分号前不要加空格。

3 函数的左括号前不要加空格。如Func(1)。

4 序列的左括号前不要加空格。如list[2]。

5 操做符左右各加一个空格,不要为了对齐增长空格。

6 函数默认参数使用的赋值符左右省略空格。

7 不要将多句语句写在同一行,尽管使用‘;’容许。

8 if/for/while语句中,即便执行语句只有一句,也必须另起一行。操作系统

注释

整体原则,错误的注释不如没有注释。因此当一段代码发生变化时,第一件事就是要修改注释!

注释必须使用英文,最好是完整的句子,首字母大写,句后要有结束符,结束符后跟两个空格,开始下一句。若是是短语,能够省略结束符。

1 块注释,在一段代码前增长的注释。在‘#’后加一空格。code

关于文件的读写操做:视频

使用python来读写文件是很是简单的操做,咱们使用open()函数来打开一个文件,获取到文件句柄,而后经过文件句柄就能够对文件进行各类各样的操做了,根据打开方式的不一样,可以执行的操做也会有相应的差别。blog

打开文件的方式有:r , w , a , r+ , w+ , a+ , rb , wb , ab , r+b , w+b , a+b等,默认使用的是r(只读)模式。

一、只读操做(r、rb)

pd = open('user_file.txt', mode='r', encoding='utf-8')     #  以只读的模式打开,确保文件存在,不然报错

for f in pd.readlines():       # 读取文件的所有内容

u = f.split('\n')[0]        # 以回车为分割取出用户名

p = f.split('\n')[0]        # 以回车为分割取出密码

m = p.split('\n')[0]     # 以回车为分割符,取出密码的完整内容

password[p] = m

pd.close()

须要注意的是:文件操做时,应指定字符编码格式(不一样的操做系统,会出现字符编码错误),encoding表示编码集,根据文件的实际保存编码进行获取数据,对于咱们而言,更多的是utf-8。

rb读取出来的数据是bytes类型,在rb模式下,不能选择encoding字符集。rb更多的是使用在读取非文本文件的时候,诸如读取MP三、图像‘视频等信息的时候就须要用到rb,由于这种数据是没有办法直接显示出来的,在实现文件的上传下载时也会用到rb。

f.readline() 是一行一行的读取数据,可是在读取出来的数据结尾处会有一个\n,这时就须要咱们调用strip()方法将其去掉。

循环读取数据这种方式是很好的,每次只读取出一行内容,从而就避免了产生内存溢出的问题。

注意:读取完的文件句柄必定要关掉,使用pd.close()。

二、写模式(w、wb、a)

写的时候要注意,若是没有文件,则会自动建立文件,若是文件已经存在,则会将原文件中的内容所有删除后再将新内容写入到文件中:

lock_user = open("lock_file.txt", mode='a', encoding='utf-8')   #  将被锁定的用户名追加写入lock_file.txt文件中

lock_user.write(username+'\n')

lock_user.close()

print("您的密码输入错误超过三次,用户被锁定!")

wb模式下,能够不指定打开文件的编码集,可是在写文件的时候必须将字符串转化成utf-8的bytes数据。

a 追加模式下, 写入的内容会加在结尾。

修改完后代码以下:

1 #coding = utf-8

2 importdatetime3 importos4 today = datetime.date.today() #读取当前日期

5 password = {} #建立字典

6 pd = open('user_file.txt', mode='r', encoding='utf-8') #以只读的模式打开,确保文件存在,不然报错

7 for f in pd.readlines(): #读取文件的所有内容

8 u = f.split('\n')[0] #以回车为分割取出用户名

9 p = f.split('\n')[0] #以回车为分割取出密码

10 m = p.split('\n')[0] #以回车为分割符,取出密码的完整内容

11 password[p] =m12 pd.close()13 lock ={}14 user ={}15 lock_info = open('lock_file.txt', mode='r', encoding='utf-8') #以只读的模式打开

16 user_info = open('user_file.txt', mode='r', encoding='utf-8') #以只读的模式打开

17 for i inlock_info.readlines():18 k1 = i.split('\n')[0]19 lock[k1] =k120 for u inuser_info.readlines():21 n = u.split('\n')[0]22 user[n] =n23 count =024 lock_info.close()25 user_info.close()26 username = input("请输入您的用户名:").strip()27 if username inlock.keys():28 print("该用户已被锁定,没法正常登陆!")29 elif username inuser.keys():30 pwd = input("请输入您的密码:").strip()31 if pwd ==password[username]:32 welcome = """

33 -----------Welcome info----------34 登陆成功!35 欢迎您:%s,今天是:%s.36 ---------------End--------------37 """ %(username, today)38 print(welcome)39 else:40 while count < 2:41 pwd = input("密码错误,请从新输入:").strip()42 if pwd ==password[username]:43 welcome = """

44 -----------Welcome info----------45 登陆成功!46 欢迎您:%s,今天是:%s.47 ---------------End--------------48 """ %(username, today)49 print(welcome)50 break

51 count += 1

52 else:53 lock_user = open("lock_file.txt", mode='a', encoding='utf-8') #将被锁定的用户名追加写入lock_file.txt文件中

54 lock_user.write(username+'\n')55 lock_user.close()56 print("您的密码输入错误超过三次,用户被锁定!")57 else:58 print("无效的用户名,系统退出!")59 exit()

路飞学城python电子书闲鱼_路飞学城-python开发集训-第一章之用户登陆做业相关推荐

  1. 路飞学城python电子书闲鱼_路飞学城Python-Day21(practise)

    '''有bug未及时调整 登出函数有问题''' importjsonimporttimedefinit_info(): user_if={"egon":{"passwor ...

  2. 路飞学城python电子书_路飞学城-Python开发集训-第一章

    路飞学城-Python开发集训-第一章 1.本章学习心得.体会 我: 间接性勤奋. 我: 学习方法论:输入--输出---纠正 我: 对对对 走出舒适区, 换圈子, 转思路,投资自我加筹码. 我: 圈子 ...

  3. python绘制路飞_路飞学城-Python开发集训-第一章

    一.学习体会 学习本章的最大体会是终于搞明白,高级语言中编译型与解释型的区别和含义,因为之前看过一些视频,对基础知识还是比较熟悉,所以学起来不费什么力,不过金角大王说越往下内容越多,一定要加油学完8章 ...

  4. 开店必看!带你用Python分析闲鱼的爆款商品

    开店必看!带你用Python分析闲鱼的爆款商品 分享 Python 自动化及爬虫.数据分析实战干货,欢迎关注. 1 目 标 场 景 经常看到有朋友在闲鱼卖些小东西又或是自己擅长的一些技能,都能为他们带 ...

  5. 不完全性定理 元数学和自然数_开读哥德尔原著第一章——哥德尔读后之十

    不完全性定理 元数学和自然数_开读哥德尔原著第一章--哥德尔读后之十 把R.B.B的导论弄完,终于轮到读哥德尔原著的英译文本了,今天开读原著的第一章.R.B.B的导言给了人很多哥德尔定理的背景知识,但 ...

  6. python写闲鱼脚本_自动化篇 | 你想要的闲鱼日常操作,Python 给你实现了

    1 目 标 场 景 前篇文章讲了如何在 iOS 端使用 Airtest 实现自动化的操作,本篇将继续带大家做 iOS 端的自动化项目. 如果你经常用闲鱼,应该每天都要进行下面操作,App 签到.鱼塘签 ...

  7. python写闲鱼脚本_你想要的闲鱼日常操作,Python 给你实现了

    1 目 标 场 景 前篇文章讲了如何在 iOS 端使用 Airtest 实现自动化的操作,本篇将继续带大家做 iOS 端的自动化项目. 如果你经常用闲鱼,应该每天都要进行下面操作,App 签到.鱼塘签 ...

  8. python写闲鱼脚本_自动化篇 - 躺着收钱!闲鱼自动发货机器人来啦~

    1 目 标 场 景 闲鱼上,很多卖家选择在平台上卖虚拟商品,大部分虚拟商品的交易方式都是通过网盘链接来完成交易. 在很多时候,商品被买家拍下并付款后,都需要一段时间的等待,一直到卖家看到消息后才能完成 ...

  9. 路飞学城-Python爬虫集训-第一章

    自学Python的时候看了不少老男孩的视频,一直欠老男孩一个会员,现在99元爬虫集训果断参与. 非常喜欢Alex和武Sir的课,技术能力超强,当然讲着讲着就开起车来也说明他俩开车的技术也超级强! 以上 ...

  10. python 使用socks 爬虫_小白学 Python 爬虫(17):Requests 基础使用

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

最新文章

  1. Android关联启动查询数据库,VIVO X9怎么查看关联启动记录 VIVO X9查看关联启动记录教程...
  2. Vue_VueResource
  3. CF1444C Team-Building(可持久化并查集)(二分图)
  4. 洛谷2619/bzoj2654 Tree(凸优化+MST)
  5. 聊透分布式系统一致性
  6. Alibaba Sentinel规则持久化-推模式-手把手教程【基于Nacos】
  7. 八月计算机考试试题,职称计算机考试题库和答案
  8. CSS3中的3D变换与简易立方体的制作
  9. pandas AttributeError: ‘Styler‘ object has no attribute ‘style‘解决方法
  10. 用户体验设计和精益设计的平衡之道
  11. Android自定义processor实现bindView功能
  12. Unity 之 贝塞尔曲线介绍和实际使用
  13. 你不会还不知道数组里面有这些好用的方法吧!(JavaScript)
  14. 查找网站的IP地址的两种方法
  15. 给AWStats关键词统计增加去百度,谷歌等搜索引擎的站内查询链接
  16. 手把手教你BCGControlBar MFC界面控件“起航”技巧(文章转载自:慧都控件网)
  17. matplotlib画图使用python可视化colorbar工具自定义颜色
  18. 如何成功实现“从经理到总监”的跨越?
  19. 基于分布式CPU计算的Deeplearning4j迁移学习应用实例
  20. JTAG, TTL, CFE

热门文章

  1. 计算机网络有个红叉怎么办,笔记本电脑右下角网络出现红叉的解决办法
  2. Nginx 重定向所有子域名到www
  3. flutter2.x报错解决type (RouteSettings) => Route<dynamic> is not a subtype of type (RouteSettings) => Rou
  4. java 连接163邮箱_java调用163邮箱发送邮件
  5. 【应用】Android平台最佳健身
  6. 深度学习图像分类数据集制作
  7. @click.prevent.native作用
  8. 华氏温度转摄氏温度c语言作业,c语言摄氏度与华氏温度如何转换
  9. win的名词_英语语法系列:名词性从句
  10. C语言的结构化程序设计