Python3 Day02
笔记:
1.递归的特性
2.格式化输出
当需要打印出来的内容是要需要根据变来变化的时候就需要使用,在字符串中加入%s,%d等。
>>>>find_1 = "robby"
>>>>salary = 3000
>>>>print("%s的工资是:%s" % (find_1, salary))
robby的工资是:3000
3.判断内容是否在字符串内
直接使用in方法
>>>>a = "test"
>>>>b = "123 test 456"
>>>>a in b
True
4.简单进度条
import sys,time
for i in range(50):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(0.5)
作业过程:工资管理系统
首先上一张脚本流程图(看的过去就行)
在学习了python基础操作后,这个其实就很容易实现,例如简单的文件内容的替换。
对于我来说,这里比较难的是判断用户的输入。
在开始时,要判断用户是否输入的1-4数字,这个还比较好解决,做了2次判断:
第一次判断用户是否是否输入的数字,使用str.isdigit()来判断,
然后直接一路if,elfi和else,判断是否是1-4的选项,并进入相应的选项继续执行下去。
while True:
select = input("请选择>>")
select = inputcheck(select)
if (select.isdigit()):
if int(select) == 1:...
elif int(select) == 2:...
elif int(select) == 3:...
elif int(select) == 4:...
else:...
else:...
比较难的是判断用户输入账户名和工资,目前判断并不完善,会有一些漏洞。例如用户在输入账户名时输入的是数字,在输入框输入了多个空格,我都暂时无法判断。
目前是分3次判断,而且是比较配合的用户输入。
首选判断是否有空格,不论有多少个空格,必须要有一个空格。
然后以空格拆分成列表,取最后一个值,判断是否为数字。这里的漏洞就是无法判断用户是否输入了多个值,例如find_2 = "Alex 200 Robby 300"
接下来判断列表中最后一个值是否为数字,上面的内容就能通过。。。
如果是修改文件,就需要打开文件判断判断账户名是否在文件中,同样,上面的内容能通过,但会导致修改后的文件不正确。
find_2 = "Alex 200"
if " " in find_2:
salary = find_2.split(" ")[-1]
if salary.isdigit():
with open("info.txt", 'r', encoding="utf-8") as f_2:
for line in f_2:
if find_2.split(" ")[0] in line:
True
错题集:
在写脚本中,误用break导致程序直接退出,
原因是,前面一个break是在for循环里,所以break会退到while这个循环。而红框中的break只是在if里,并没有在循环中,所以,break后直接退出了while。所以这里不需要用任何代码,循环会继续执行,因为下面的elif条件是不满足的。
上一篇: 【设计模式】建造者模式 Builder Pattern
下一篇: 设计模式之抽象工厂模式