Python作业第一课
零基础开始学习,最近周边的同学们都在学习,我也来试试,嘿嘿,都写下来,下次不记得了还能来看看~~
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作业第一课的更多相关文章
- python学习第一课
		第一课: 1.不要使用来路不明的软件 2.下载杀毒软件 3.不懂技术的人在技术人面前会显得愈发无知 4.python无所不能 需要掌握的知识: 1.python基本语法 2.文件处理 3.函数 4.模 ... 
- python学习第一课要点记录
		写在要点之前的一段话,留给将来的自己:第一次参加编程的培训班,很兴奋很激动,之前都是自己在网上找免费的视频来看,然后跟着写一些课程中的代码,都是照着模子写,没有自己过多的思考.感觉这样学不好,除了多写 ... 
- 初学Python(第一课)
		今天整理一下关于Python初学者的基础知识部分的第一课,因为之前学习过C,所以过于基础的知识就不详细记录了. Python相对于C\C++来说,在语法方面已经很简单了:甚至对于JavaScript也 ... 
- 学习Python的第一课(简单的单元测试)
		由于有C#开发基础,感觉学习Python应该不难,主要是一些语法了,再加上现在互联网这么发达. 感觉还是要有思路,否则学什么也只能是什么. 话不多说,简单发下这几天的学习成果吧: 第一次写博客,大家不 ... 
- Python【第一课】 Python简介和基础
		本节内容 Python安装(windows) 第一个程序(windows中的python) 变量 字符编码 注释 用户输入 模块初步认识 数据类型 数据运算 表达式if...else 表达式for l ... 
- Python基础第一课
		Python基础 安装软件并配置环境变量 1.第一句python --初学后缀名可以是任何数 --后期学习需要导入模块时不是py后缀名会报错 2.两种执行方式 Python解释器 py文件路径 Pyt ... 
- python 学习 第一课
		# -*- coding: utf-8 -*- import urllib2 import cookielib url="http://www.baidu.com" print ' ... 
- 老男孩python作业6-选课系统开发
		角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含,周期,价格 ... 
- Python入门第一课——Python的起源、发展与前景!
		我们在做任何一件事情之前,我们都会通过各种渠道去搜集事情的信息,了解事情的来龙去脉,学习一门编程语言也是如此,只有知根知底,我们才能有明确的方向和目标,以及底气去完成这件事情,今天我带大家来看看Pyt ... 
随机推荐
- jsp 假分页的实现
			原本做毕设做了一堆表格需要读出数据.为了以后的数据可能会很多做准备,这里实现一个以基于jsp页面实现的假分页. 假分页:实际上数据库一次过把所有数据读出来,通过对输出展示的控制来实现对数据分页的假象. ... 
- mysql遇见contains nonaggregated column 'information_schema.PROFILING.SEQ'异常
			报错如下:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggrega ... 
- Linux卸载搭建环境
			本章内容 卸载Apache PHP MySQL 卸载Apache 查看apache安装版本 $ apachectl -v 查看安装httpd相关软件包(红色部分) sudo yum list inst ... 
- Linux中ansible批量管理软件部署及剧本编写
			服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29: ... 
- Hive数据倾斜
			数据倾斜是进行大数据计算时最经常遇到的问题之一.当我们在执行HiveQL或者运行MapReduce作业时候,如果遇到一直卡在map100%,reduce99%一般就是遇到了数据倾斜的问题.数据倾斜其实 ... 
- Spark集群的任务提交执行流程
			本文转自:https://www.linuxidc.com/Linux/2018-02/150886.htm 一.Spark on Standalone 1.spark集群启动后,Worker向Mas ... 
- elasticsearch6.7 05. Document APIs(5)Delete By Query API
			4.Delete By Query API _delete_by_query API可以删除某个匹配条件的文档: POST twitter/_delete_by_query { "query ... 
- SVN多项目并行版本管理解决方案
			1.背景 随着公司业务拓展,各业务部门频繁的需求变更,导致系统集成冲突的问题日益突出. 2.现状 基于SVN版本管理模式,多分支版本并行,分支合并主干交付.多分支开发存在依赖关系且有交付的先后顺序, ... 
- asynchronous.js
			// 异步加载js (function(){ var _asyn_js_data = ['index.js','index1.js','index2.js','index3.js'] for(var ... 
- python的四大函数讲解
			Python的四类函数: 1.普通函数 2.默认函数 3.关键字函数 4.收集参数 1.普通函数 a.定义的时候直接定义变量名 b.调用的时候直接把变量或者值放入指定位置 def 函数名(参数1,参数 ... 
