既然是学习,作业必不可少,其实在看后面讲思路之前还是感觉自己写的不错,但是和后面一对比,感觉实在是想的太片面太肤浅了,还需要太多太多改进的地方。

  首先放一下作业要求。

  最开始做的时候真的是完全按照字面的要求去做,再回来看看总有一种缺少思考的感觉,现在先把第一遍作业的代码放出来,之后会根据视频讲解进行改进,到时候再对比一下吧。

#作业一
#!/usr/bin/env python
import os #加载模块
name1 = "n" #正确的用户名
pd1 = "qqqqq" #正确的密码
if os.path.exists("suoding.log"): #判断锁定文件是否存在
print("系统锁定")
exit(1) #如果存在则退出
suoding=0 #锁定变量 0为非锁定,1为锁定
cishu = 0 #输入错误的次数
zuidacishu = 3 #错误次数上线
if suoding==0:
for i in range(zuidacishu): #错误次数上线的循环
suoding=0
name = input("请输入用户名:")
pd = input("请输入密码:")
if name == name1 and pd == pd1: #判断账号密码错误
print("认证成功,欢迎进入系统")
break
else:
cishu += 1 #错误次数加一
cishujieguo=zuidacishu-cishu #剩余次数
print("认证失败,您还有%s次机会"%(cishujieguo))
else:
print("系统已被锁定")
exit(1)
if cishu == 3: #判断如果已经错误3次
f=open("suoding.log","w") #创建锁定日志
f.write("")
f.close()
print("系统锁定")
suoding=1
exit(1)

  作业一只是单纯的判断变量的方式判断账号,仔细想想这种方法根本无法用在真实的环境下,真是环境下必然是通过账号文件和屏蔽名单来实现的。这也算是个教训吧,以后做作业的时候尽量考虑到真实环境,而不是单纯的为了作业而做。

  作业一改版,去掉了锁定变量,改为使用文件读取的方式控制账号正确和锁定,把之前的修改全部改作注释进行对比。事先存在两个文件,zhanghao和suoding,用于保存账号和锁定名单,没有在脚本中体现出来。

zhanghao:
aaa:111
bbb:222 suoding
bbb
#作业一改版
#!/usr/bin/env python
#使用两个文件保存用户信息和登录次数,判断是否可以登录
# import os #加载模块
# name1 = "n" #正确的用户名
# pd1 = "qqqqq" #正确的密码
# if os.path.exists("suoding.log"): #判断锁定文件是否存在
# print("系统锁定")
# exit(1) #如果存在则退出
suoding=0 #锁定变量 0为非锁定,1为锁定
cishu = 0 #输入错误的次数
zuidacishu = 3 #错误次数上线
a=open("zhanghao").readline() #读取账号文件
b=open("suoding").readline() #读取锁定账号
name = input("请输入用户名:") #把账号放在前面,避免三次输入不同账号所造成的锁定问题
# if suoding==0:
for i in range(zuidacishu): #错误次数上线的循环
# suoding=0
# name = input("请输入用户名:")
pd = input("请输入密码:")
if "%s"%(name) in b: #判断账号是否在锁定名单,在则退出
print("账号被锁定")
exit(1)
else:
# if name == name1 and pd == pd1: #判断账号密码错误
if "%s:%s"%(name,pd) in a: #判断账号密码是否正确
print("认证成功,欢迎进入系统")
break
else:
cishu += 1 #错误次数加一
cishujieguo=zuidacishu-cishu #剩余次数
print("认证失败,您还有%s次机会"%(cishujieguo))
# else:
# print("系统已被锁定")
# exit(1)
if cishu == 3: #判断如果已经错误3次
if "%s"%(name) in b: #判断账号在是否在锁定名单,在则直接退出
print("系统锁定")
exit(1)
else:
f=open("suoding","a") #否则,讲账号加入到锁定名单中
f.write("%s\n"%(name))
f.close()
print("系统锁定")
# suoding=1
exit(1)

作业二

#作业二
#!/usr/bin/env python
msg='输入下列序号进入相应的省份\n1:北京\n2:上海\n3:四川'
bj='输入下列序号进入相应的省份\n1:海淀\n2:大兴\n3:通州'
sh='输入下列序号进入相应的省份\n1:外滩\n2:鸿口\n3:闵行'
sc='输入下列序号进入相应的省份\n1:重庆\n2:渝北\n3:巴南'
hd='输入下列序号进入相应的省份\n1:海淀1\n2:海淀2\n3:海淀3'
tz='输入下列序号进入相应的省份\n1:通州1\n2:通州2\n3:通州3'
wt='输入下列序号进入相应的省份\n1:外滩1\n2:外滩2\n3:外滩3'
mh='输入下列序号进入相应的省份\n1:闵行1\n2:闵行2\n3:闵行3'
hk='输入下列序号进入相应的省份\n1:鸿口1\n2:鸿口2\n3:鸿口3'
bn='输入下列序号进入相应的省份\n1:巴南1\n2:巴南2\n3:通巴南3'
cq='输入下列序号进入相应的省份\n1:重庆1\n2:重庆2\n3:重庆3'
yb='输入下列序号进入相应的省份\n1:渝北1\n2:渝北2\n3:渝北3'
dx='''
输入下列序号进入相应的省份
1:大兴1
2:大兴2
3:大兴3
'''
print(msg)
nb1=int(input("输入序号:"))
if nb1==1:
print(bj)
nb2=int(input("输入序号:"))
if nb2==1:
print(hd)
elif nb2==2:
print(dx)
elif nb2==3:
print(tz)
else:
print("输入错误")
elif nb1 == 2:
print(sh)
nb2=int(input("输入序号:"))
if nb2==1:
print(wt)
elif nb2==2:
print(hk)
elif nb2==3:
print(mh)
else:
print("输入错误")
elif nb1==3:
print(sc)
nb2=int(input("输入序号:"))
if nb2==1:
print(cq)
elif nb2==2:
print(yb)
elif nb2==3:
print(bn)
else:
print("输入错误")
else:
print("输入错误")

  作业二使用的最简单的方式,比较繁琐,应该有更好的更简便的方法完成目标。作业二的解题思路还没有看,改进之后再进行更新。

初学者的python学习笔记1——作业篇的更多相关文章

  1. 初学者的python学习笔记2——作业篇

    这次的作业是商城展示,最开始的确是一脸懵逼,后来研究了一下网上的例子,总算是搞出来了一个(其实算是网上列子的简化版?). 最开始是想要使用字典去做,发现显示列表的时候怎么也无法实现序号和名称对应,原因 ...

  2. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

  3. 初学者的python学习笔记1

    推荐一段时间闲的蛋疼,总觉得再堕落下去不太好,便捡起了之前一直想学而没有学的python,以此记录一下学习笔记,同时亦是督促和复习. 学习51cto上的<2016最新Python开发基础课程-2 ...

  4. 初学者的python学习笔记2

    本来想是先把作业二搞定的,结果发现作业二用的字典,一脸懵逼,还是先搞定第二课吧.其实第二课和第一课内容差不多,据说是第一课的老师去美国了……不管怎么样先整理一下吧. ----------------- ...

  5. Python学习笔记【第一篇】:认识python和基础知识

    我的笔记里的python代码运行环境都是在pycharm软件中运行,所以不去记录如何配置环境变量呀什么的. python种类 Cpython: Python的官方版本,使用C语言实现,使用最为广泛,C ...

  6. Python学习笔记【第九篇】:Python面向对象基础

    Python语言中一切皆对象(类.属性.方法.........) 概念 面向对象编程:Object Oriented Programming 简称OOP 面向对象程序设计 面向对象和面向过程都是解决问 ...

  7. Python学习笔记(Django篇)——3、创建第一个数据库模型

    Django里面集成了SQLite的数据库,对于初期研究来说,可以用这个学习.   第一步,创建数据库就涉及到建表等一系列的工作,在此之前,要先在cmd执行一个命令: python manage.py ...

  8. Python 学习笔记(基础篇)

    背景:今年开始搞 Data science ,学了 python 小半年,但一直没时间整理整理.这篇文章很基础,就是根据廖雪峰的 python 教程 整理了一下基础知识,再加上自己的一些拓展,方便自己 ...

  9. Python学习笔记之基础篇(二)python入门

    一.pycharm 的下载与安装: 使用教程:https://www.cnblogs.com/jin-xin/articles/9811379.html 破解的方法:http://xianchang. ...

随机推荐

  1. 你的指纹还安全吗? - BlackHat 2015 黑帽大会总结 day 2

    你的指纹还安全吗?  0x03 FINGERPRINTS ON MOBILE DEVICES: ABUSING AND LEAKING speaker是来自FireEye的Wei Tao和Zhang ...

  2. An entity object cannot be referenced by multiple instances of IEntityChangeTracker.

    如果你和我一样遇到了这个问题,那么你就要检查你要操作的Model对象查询,更新操作的数据库上下文也就是DBContext是否一致.如果不一致也就是说你用AContext去查如AContext.SET& ...

  3. org.dbunit.database.ambiguoustablenameexception

    对于一个数据库下面多个shema的情况,如果使用DBUNIT配置会出现,上面的错误,不清楚的表名,解决如下 增加红色的shema指定 参考:http://stackoverflow.com/quest ...

  4. zend studio 10破解/汉化

    http://blog.csdn.net/qq1355541448/article/details/16807429

  5. Deep Learning 26:读论文“Maxout Networks”——ICML 2013

    论文Maxout Networks实际上非常简单,只是发现一种新的激活函数(叫maxout)而已,跟relu有点类似,relu使用的max(x,0)是对每个通道的特征图的每一个单元执行的与0比较最大化 ...

  6. NotePad++常用快捷键。——Arvin

    Ctrl+单键 Ctrl+C 复制 Ctrl+X 剪切 Ctrl+V 粘贴 Ctrl+Z 撤消 Ctrl+Y 恢复 Ctrl+A 全选 Ctrl+F 键查找对话框启动 Ctrl+H 查找/替换对话框 ...

  7. Tomcat7.0安装配置

    很久没有通过博客对学习所得进行记录了. 现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘.如果有朋友看到,也请不吝赐教. 首先,我个人使用的是apache-tomcat-7.0.27你可 ...

  8. Web开发的发展历史

    了解一下Web开发相关的历史,相关技术的演进历程,知其前世今生,非常有助于加深Web开发相关技术的理解和认识. 下面是对网上几篇相关文章的总结和摘要: 1. Web开发的发展史 对过去的15年来,We ...

  9. startActivity跳转失败而且没有异常信息

    startActivity跳转不能显示目标activity的布局(显示空白页),而且没有异常信息 onCreate()方法重写错误 应该重写的是onCreate(Bundle savedInstanc ...

  10. 一个servlet处理多个功能

    servlet中: String servletPath = request.getServletPath(); String methodName = servletPath.substring(1 ...