零基础开始学习,最近周边的同学们都在学习,我也来试试,嘿嘿,都写下来,下次不记得了还能来看看~~

Python作业第一课
1)登陆,三次输入锁定,下次不允许登陆
2)设计一个三级菜单,菜单内容可自行定义,任意一级输入q则退出程序,如果输入b则返回上一级

--以上两个题目涉及几个知识点:文档的读取,文档的写入,列表的操作,循环的使用,字符串的一些操作
首先回顾一下这几个知识点
a)文档的读取,几个常用的
f = open("test.log","w")
这个w是参数,可换成别的参数
w 以写方式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
b)关闭文件
f.close()
c)文件内容操作
f.read()一次性读取全部所有内容,可调整为f.read([size]),读取size个字节的内容
f.readline()读一行数据
f.readlines()一次性读取所有内容按行返回
f.truncate(n)从文件开头截取n个字符,超出的删除
f.seek(n)跳到指定位置n,f.seek(0)是返回文件开始
e.g.
h = open("menu2.log","r")
for line in h.readlines():
if "2" in line:
print(line)
h.close()
f.write(str)写文件
e.g. 是全新创建了一个文件,之前的内容会被清空
h = open("menu2.log","w")
h.write("this is the test line")
h.close()
e.g. 在之前的文件后面追加
h = open("menu2.log","a")
h.write("this is the add line")
h.close()
d)列表的操作(list)
name_list = ["a","b","c","d"]
******************************这里穿插一点东西
我们可以通过dir(name_list)查找可执行的命令[注意前后带_线的没什么用,不需要看]
type(name_list)可返回这个变量的类型
************************************************************
切片:(从0开始,负数是从右边开始,-1是最右边的值)
name_list[1] > b
name_list[-1] > d
name_list[0:2] > a,b 0:2是指的是01两个值并不包括2
name_list[0:3:2] > a,c 0:3:2前面是取abc后面那个2则是指隔2个再切
name_list.append("e") > a,b,c,d,e 向列表最后面增加一个元素
name_list.pop() 删除列表最后的一个元素
name_list.remove("c") 删除叫c的元素
name_list[1] = "ff" 将第二个元素改为ff
name_list.insert(1,"test") 插入一下新元素,索引为1
name_list.count("ff") ff的个数
list2 = ["ee","gg"]
name_list.extend(list2) 把list2合并到name_list
name_list.sort() 将列表排序
e)元组的操作(tuple)
元组跟列表很类似,不同的是一旦初始化后就不能再调整,没有append,insert这样的方法,切片什么的是一样取
f)字符串的格式化操作
name = input("name: ").strip() 输入名字并去除左右的空
print(name) 输出名字
print(name, + "-" + name )
print("Name:%s:\nAge:%s\nJob:%s" %(name,age,job))
g)循环
for i in range(3): 从0-2

while a ==0:
while true: -- 无限循环

break 跳出循环
continue 继续
h)条件判断
if a==0:
elif a==1:
else:

基本的知识点就是这些了,现在进入正题了

1)登陆,三次输入锁定,下次不允许登陆
首先准备了两个文件,一个是用户及密码的,一个是存放写入被锁的用户的,名字分别为:user.log和lockuser.log
user.log中的内容是我事先自己编好放进去的,如下
autumn,autumn123
summer,summer123
angle,angle123
tiffany,tiffany123
fay,fay123
lockuser.log最开始是空的
如果输入用户名正确,密码输入三次错误则写入到lockuser.log,下次再用此用户登陆则会提示该用户被锁

代码如下:

input_name = input("The name is: ").strip()
f = open("lockuser.log","r")
count = 0 #标识帐户是否被锁定
count1 = 0 #标识是否输对帐户 #查看文件,看输入的账户是否被锁定,锁定则退出程序
for line in f.readlines():
if line.strip() == input_name:
print("The account has locked!")
count = 1
break
f.close() #帐户未被锁定的情况
if count == 0:
f1 = open("user.log","r")
for line in f1.readlines():
lineword = line.split(',',2)
if lineword[0] == input_name:
count1 = 1
#帐户输入正确,进入三次输入密码的机会进行输入
for i in range(3):
input_password = input("The password is: ").strip()
if input_password == lineword[1].strip():
print("Welcome to here, have a good nice trip!")
break
if i == 2:
f2 = open("lockuser.log","a")
f2.write("\n")
f2.write(lineword[0])
f2.close()
print("Three times,the account has locked!")
if count1 == 0:
print("The user account is not exits!")
2)设计一个三级菜单,菜单内容可自行定义,任意一级输入q则退出程序,如果输入b则返回上一级

首先一级菜单我是用常量写SHI在代码里的,二级菜单和三级菜单分别放在了两个文件中,名字分别为:menu2.log和menu3.log,当然其实一级菜单也可以写到文件里,去读文件来实现
这段代码的重点其实是在几层循环里都代入了一个记数的变量来跳出最外层的循环(输入q时)

所有输入正常的时候程序最后会输出你选择过的三个选项如:北京-朝阳-三里屯街道
代码如下:

count1 = 0
count2 = 0
count3 = 0
input_name1 = ""
input_name2 = ""
input_name3 = ""
value1 = ""
value2 = ""
value3 = ""
print("Choose the favorite place!") while count1 == 0:
#选择第一级的菜单
print("**************************************************")
print("1 北京 ")
print("2 上海 ")
print("3 广州 ")
print("4 深圳 ")
print("**************************************************")
input_name = input("Please chose the fire level: ").strip()
if input_name == "":
value1 = "北京"
elif input_name == "":
value1 = "上海"
elif input_name == "":
value1 = "广州"
elif input_name == "":
value1 = "深圳"
#根据第一级菜单的选择项读取文件展示第二级菜单,存在则展示二级菜单,提示选择二级菜单
if input_name in ('','','',''):
f = open("menu2.log","r",encoding= 'utf-8')
for line in f.readlines():
if input_name in line:
lineword = line.split(',',4)
for i in range(len(lineword)):
if i > 0 :
print(str(i) + " " + lineword[i])
f.close()
print("**************************************************")
#print(value1)
input_name2 = input("Please chose the second level:").strip()
input_name1 = input_name + input_name2
#如果输入b则返回上一级菜单
elif input_name == "b":
continue
#如果畭q则退出整个程序
elif input_name == "q":
print("See you next time!")
break
#输入其它字符也退出同时提示无效的输入
else:
print("Valid input! Please try again !")
continue
while count2 == 0:
#根据第一二级菜单展示第三级菜单
#如果输入的菜单在有效范围内去读取第三级的菜单
if input_name2 in ('','',''):
value2 = lineword[int(input_name2)]
#print(value2)
g = open("menu3.log","r",encoding="utf-8")
for line in g.readlines():
if input_name1 in line:
lineword = line.split(',',4)
for i in range(len(lineword)):
if i > 0:
print(str(i) + " " + lineword[i])
g.close()
print("**************************************************")
input_name3 = input("Please chose the third level:").strip()
#如果输入b退出此次循环,返回上一级菜单
elif input_name2 == "b":
break
#如果输入q则退出整个循环
elif input_name2 == "q":
count1 = 1
print("See you next time!")
break
#输入其它字符也退出同时提示无效的输入
else:
print("Valid input! Please try again!")
break
#第三次輸入的判斷
while count3 == 0:
if input_name3 == "q":
count1 = 1
count2 = 1
print("See you next time!")
break
elif input_name3 == "b":
break
elif input_name3 in ('','',''):
value3 = lineword[int(input_name3)]
print("Your favorite place is :" + value1 + "-" + value2 + "-" + value3 )
count1 = 1
count2 = 1
break
else:
print("Valid input! Please try again!")
break

流程图没有画,下次我会画一下流程图,大概就是这么多东西,明天接着继续学习,加涅个油啊!!!

Python作业第一课的更多相关文章

  1. python学习第一课

    第一课: 1.不要使用来路不明的软件 2.下载杀毒软件 3.不懂技术的人在技术人面前会显得愈发无知 4.python无所不能 需要掌握的知识: 1.python基本语法 2.文件处理 3.函数 4.模 ...

  2. python学习第一课要点记录

    写在要点之前的一段话,留给将来的自己:第一次参加编程的培训班,很兴奋很激动,之前都是自己在网上找免费的视频来看,然后跟着写一些课程中的代码,都是照着模子写,没有自己过多的思考.感觉这样学不好,除了多写 ...

  3. 初学Python(第一课)

    今天整理一下关于Python初学者的基础知识部分的第一课,因为之前学习过C,所以过于基础的知识就不详细记录了. Python相对于C\C++来说,在语法方面已经很简单了:甚至对于JavaScript也 ...

  4. 学习Python的第一课(简单的单元测试)

    由于有C#开发基础,感觉学习Python应该不难,主要是一些语法了,再加上现在互联网这么发达. 感觉还是要有思路,否则学什么也只能是什么. 话不多说,简单发下这几天的学习成果吧: 第一次写博客,大家不 ...

  5. Python【第一课】 Python简介和基础

    本节内容 Python安装(windows) 第一个程序(windows中的python) 变量 字符编码 注释 用户输入 模块初步认识 数据类型 数据运算 表达式if...else 表达式for l ...

  6. Python基础第一课

    Python基础 安装软件并配置环境变量 1.第一句python --初学后缀名可以是任何数 --后期学习需要导入模块时不是py后缀名会报错 2.两种执行方式 Python解释器 py文件路径 Pyt ...

  7. python 学习 第一课

    # -*- coding: utf-8 -*- import urllib2 import cookielib url="http://www.baidu.com" print ' ...

  8. 老男孩python作业6-选课系统开发

    角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含,周期,价格 ...

  9. Python入门第一课——Python的起源、发展与前景!

    我们在做任何一件事情之前,我们都会通过各种渠道去搜集事情的信息,了解事情的来龙去脉,学习一门编程语言也是如此,只有知根知底,我们才能有明确的方向和目标,以及底气去完成这件事情,今天我带大家来看看Pyt ...

随机推荐

  1. 从零开始学 Web 之 Ajax(七)跨域

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. MongoDB 日志切割三种方式

    MongoDB 日志切割 ​ MongoDB 默认是不会进行切割日志的,除非我们配置了 logRotate = rename,并且重启 MongoDB 服务,才会进行切割日志的,那么为了避免实际中我们 ...

  3. ajaxFileUpload带参数提交(亲测可用)

    使用ajaxFileUpload上传文件时,有时需要带参数提交,网上有很多资料说使用data,但其实要使用data带参数是需要修改的,否则后台是获取不到的. 分析原因: ajaxFileUpload为 ...

  4. window7环境下ZooKeeper的安装运行及监控查看

    原文:http://www.cnblogs.com/RainAndWind/p/4668427.html ZooKeeper是一个分布式开源框架,供了协调分布式应用的基本服务.这些天在使用DUBBO, ...

  5. PHP正则表达式修饰符的种类及介绍

    ◆i :如果在修饰符中加上"i",则正则将会取消大小写敏感性,即"a"和"A" 是一样的.◆m:默认的正则开始"^"和结 ...

  6. Vue之项目搭建

    一.Vue自动化工具的安装 nvm:nodejs 版本管理工具. 也就是说:一个 nvm 可以管理很多 node 版本和 npm 版本. nodejs:在项目开发时的所需要的代码库 npm:nodej ...

  7. 部署DTCMS到Jexus遇到的问题及解决思路--验证码

    上一篇博客我们已经基本完成了部署工作,目前发现了验证码出现500错误,分析其代码,我们可以看到验证码使用的是System.Drawing命名空间下的类库, GDI+ 位图,这个在肯定是平台相关的,所以 ...

  8. C#基础 数据类型 类型转换

    本节主要讲解数据类型和各类型之间的转换,两点都是重点,难点在于各种转换的活学活用. 一   数据类型 (一)基本数据类型 1  值类型 (1)整形         int                ...

  9. [android] 手机卫士手机实现短信指令获取位置

    获取位置  新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreate()方法,服务创建的时候回调 重写onDestroy()方法, ...

  10. JPA与EJB3的关系

    JPA是基于Java持久化的解决方案,主要是为了解决ORM框架的差异,它的出现在某种程度上能够解决目前ORM框架之间不能够兼容的问题,对开发人员来说,能够更好的在JPA规范下进行系统开发. JPA全称 ...