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

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. Unity3D鼠标坐标转世界坐标和局部坐标

    鼠标坐标转世界坐标和局部坐标: Vector3 MousePosition2Local () { mousePosition = Input.mousePosition; //获取屏幕坐标 mouse ...

  2. Spring Boot + Spring Cloud 构建微服务系统(七):API服务网关(Zuul)

    技术背景 前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡,那我们的各种微服务又要如何提供给外部应用调用呢. 当然,因为是REST API接口,外部客户端直接调用各个微服务是没有问 ...

  3. 配置IIS的负载均衡

    在大型Web应用系统中,由于请求的数据量过大以及并发的因素,导致Web系统会出现宕机的现象,解决这一类问题的方法我个人觉得主要在以下几个方面: 1.IIS 负载均衡. 2.数据库 负载均衡. 3.系统 ...

  4. Angular2入门:TypeScript的类型 - 数组解构

  5. Scala构建工具SBT

    SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能. SBT官网上给出各平台的安装方法: MAC: 使用homebrew安装 brew in ...

  6. C#中的Action和Func和Predicate

    一.[action<>]指定那些只有输入参数,没有返回值的委托 用了Action之后呢: 就是相当于省去了定义委托的步骤了. 演示代码: using System; using Syste ...

  7. 如何获得刚刚插入数据的id

    create table tblInsert ( id ,) primary key, name ) ); insert into tblInsert(name) values('张三'); sele ...

  8. Ado.net怎么执行存储过程?

    与ADO.Net执行SQL语句的地方只有两点不同1.使用存储过程名代替sql语句2. 使用查询对象SqlCommand,需配置一个CommandType属性 存储过程的执行语法-> exec 存 ...

  9. Linux常用基本命令:三剑客命令之-awk数组用法

    AWK的数组用法跟javascript类似. 1,定义数组 awk 'BEGIN{a[0]="zhangsan";a[1]="lisi";print a[0]} ...

  10. cors解决跨域问题

    在作前后端分离的时候,我们总是要做跨域处理. 使用 express 框架搭建项目的时候可以设置如下: app.use(function (req, res, next) { res.setHeader ...