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

  首先放一下作业要求。

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

#作业一
#!/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. iOS runtime 知识点整理

    // ------ 动态创建类, 添加成员变量, 赋值并调用动态添加的方法 ------- @implementation ViewController - (void)viewDidLoad { [ ...

  2. Java学习--内部类(一)

    Java学习--内部类(一) 一. 内部类的定义和特点 class Outer{ privite int num = 5; class Inner{ public void Display(){ Sy ...

  3. 在cwcity空间上安装phpmyadmin

    上传程序后,安装phpMyAdmin-4.1.4-all-languages.3715384168.zip 出现了错误: Warning: realpath() [function.realpath] ...

  4. python——有一种线程池叫做自己写的线程池

    这周的作业是写一个线程池,python的线程一直被称为鸡肋,所以它也没有亲生的线程池,但是竟然被我发现了野生的线程池,简直不能更幸运~~~于是,我开始啃源码,实在是虐心,在啃源码的过程中,我简略的了解 ...

  5. TypeError: coercing to Unicode: need string or buffer, ChatRoom found

    在用django框架中遇到一个错误,是模型编写中出的错误 TypeError: coercing to Unicode: need string or buffer, ChatRoom found 解 ...

  6. js 同for一样效果 (延迟)每秒循环一次 追加

    <script type="text/javascript"> var j = 1;        var timeID = null;        function ...

  7. js实现图片的大小自适应效果

    需求是传过来一个图片,根据外层div的大小自动进行缩放效果. function ShowSecondImg(v) { var rate, newX, newY,newW, newH = 0; //表示 ...

  8. java.lang.NumberFormatException: For input string: "1608020001 " 错误

    错误: java.lang.NumberFormatException: For input string: "1608020001 "    at java.lang.Numbe ...

  9. 【转】PostgreSQL分布式事务配置

    XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos. 如果PostgreSQL参与分布式 ...

  10. 项目实际部署记录(ubuntu)

    服务器为Ubuntu系统 安装JDK版本:jdk-7u79-linux-x64.tar.gz 安装tomcat版本:apache-tomcat-7.0.69.tar.gz 数据库oracle ,已导出 ...