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

  首先放一下作业要求。

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

#作业一
#!/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. Ubuntu 和 Redhat / Fedora 服务管理命令对比表(附Fedora16新的服务管理工具systemctl )

    以 apache/httpd 服务作为例子 任务 Red Hat / Fedora Ubuntu Ubuntu (with sysv-rc-conf or sysvconfig) 立即启动/停止某服务 ...

  2. position absolute 绝对定位 设置问题

     今天在做布局的时候,用到了绝对定位, 父级元素相对定位,子元素两个,一个元素正常文档流布局并且在前面,另一个元素绝对定位排在后面,但设置了好久,绝对定位的子元素都不会覆盖其上面的兄弟元素,最后,不知 ...

  3. 程序设计入门——C语言 第7周编程练习 2 鞍点(5分)(5分)

    2 鞍点(5分) 题目内容: 给定一个n*n矩阵A.矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数.一个矩阵A也可能没有鞍点. 你的任务是找出A的鞍点. 输入格 ...

  4. 老王讲自制RPC框架.(一.前言与技术选型)

    (#)背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只 ...

  5. iOS开发 获取状态栏的点击事件

    首先我们追踪UIStatusBar的触摸事件,需要在AppDelegate里面加入以下代码 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEve ...

  6. 安装idea开发工具

    1.网上去下载一个安装包,有的是需要注册码的(可以网上搜索注册码) 2.设置快捷键,可以直接选择使用eclipse的快捷键 3.配置maven 4.配置Git 5.配置tomcat

  7. 总结oninput、onchange与onpropertychange事件的用法和区别,onchange

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...

  8. plsql dev

    访问v$session,v$sesstat and v$statname视图的权限 grant create session,resource to chf; grantselectonv_$sess ...

  9. Oracle 11g default profile 默认启用密码过期180天 ORA-28001错误处理

    问题描述:客户反映客户端不能登录应用程序时不能连接.环境:AIX 5.3 + Oracle 11gR2解决:远程Telnet到数据库主机,sqlplus / as sysdba 连接后操作正常,表明数 ...

  10. web前端代码编写体验

    最好是使用HTML5的有意义的标签,并尝试在不同的,老版本的浏览器中也保持一致,不然你会发现,满屏都是div,后期进行代码验证,修改和查找简直是一场大灾难. 而且,编写代码的时候,为了方便以后代码的复 ...