目录
壹:问题回溯
贰:思路分析
叁:代码实现
肆:对代码的分析
伍:运行截图
陆:写在最后的话
壹:问题回溯
“在日常生活中,大家有没有遇到过这样的问题呢——考勤时,总有几位同学不在,但是我们不知道他们是谁(抓狂)。Emm……这确实是个令人伤脑经的问题,不过,我相信,在你看完这篇博文后,你会有所启发。”
贰:思路分析
好的,接下来让我们来分析一下怎么解决这个问题。
- 问题场景:考勤。“那么,自然而然地,会有花名册与签到表;通过比对考勤表与签到表,我们得知是谁缺勤。”
- 那么,我们如何通过编写代码来实现我们的上述思路呢?
- 将花名册与签到表存放到指定文件夹;将花名册与签到表导入到代码中(此处,思考一下代码复用的问题);比对两个文本中的内容;输出结果。
大概的思路就是这样。
但是啊,我们不能仅仅满足于解决问题,我们更应该思考如何更好地解决问题。
叁:代码实现
我们先来浏览一下代码。
# -*- coding: utf-8 -*-
# Created by Violet. All rights reserved!
'''
说明:
1 相关文件直接存放在D盘('D:')。
2 用 ".txt格式" 存放数据,一行存放一个名字。
3 先导入 "花名册",再导入 "签到表"(文件名可 DIY)。
'''
#%%
# 调用函数库。
import os
#%%
# 定义,导入文本的函数。
def get():
file_name = input("导入,花名册/签到表:")
path = os.path.join('D:/', file_name + ".txt")
Lis = list()
with open(path, encoding = 'utf-8') as Nam:
for line in Nam:
Lis.append(line)
return Lis
#%%
# Body.
Lis1 = get(); Lis2 = get()
whos = []
for x in Lis1:
if x in Lis2:
pass
else:
whos.append(x)
else:
for y in whos:
print('')
print(y, end = '')
#%%
# To be continued.
肆:对代码的分析
来,让我们分析一下这段代码。
- 细心的你想必已经发现,在代码的书写开始前,我们有一段“说明”。在代码的编写过程中,附上说明,好处是有很多的哦——提高代码的可读性,使读者能更好地理解代码的逻辑架构;一定程度上,方便我们简化代码(面面俱到,是一种解决方案;“精确制导”,也是哦);方便我们后期对代码进行维护(毕竟,有时候,自己之前写的代码,我们,,Emm…不一定能认出来)。
- 然后,在代码的编写过程中,我们发现:“导入,花名册文本,与,签到表文本,的代码很类似(不能说完全相同吧,只能说是一模一样了)。”然后啊,我们就想,能不能偷懒呢?将这一段代码封装成函数,然后,就可以偷懒了。“但,如果封装成函数,我们怎么解决调用函数时,存在的差异性问题(什么时候该输入什么)呢?”哎哎,在说明里提示读者操作步骤就好啦(懒惰)。
- 编写调用文本的代码时,我们推荐使用“with open() as Nam:”的方法,为什么呢?因为啊,该语句会在合适的时候自己关掉我们打开的文件(如果不关掉文件,可能会有些意料之外的情况发生),这贴心的设计对懒人直接不要太友好。
- 但是啊,使用“with open() as Nam:”这一语句,我们需要在括号里键入完整的文件地址(如,“D:files花名册.ttf”),这很麻烦,不是吗?所以,我们用"path"来表示路径,然后,在"os库"的一个小功能“os.path.join()”与“input()”的组合使用下,实现了文件路径的键入。
- 接下来到了比对花名册与签到表的环节,注意,我们要用花名册里的数据去遍历(意思是,我们对签到表里数据的“for循环遍历”要放在最里层),这样我们才能筛选出缺勤人员的名单(Emm…或者你可以想想,如果我们反过来遍历,会出现什么情况呢?)。
- 最后,输出缺勤人员名单。
伍:运行截图
陆:写在最后的话
……
《“第一顺位”理论》
1 要做的事情有很多,手足无措了。这样吗?“让我们一件事一件事来做,可好?”
2 来,我们先把要做的事情一件一件地列在便利贴上,然后,确定这些待办事项的优先级。
3 然后:“一段时间里,心无旁骛地做一件事。”
4 告诉自己——罗马城不是一天建成的。为自己打气。
5 嗯?乏了吗?给自己一个微笑吧。“微笑是疲惫者的休息,是沮丧者的白天,是悲伤者的阳光,是大自然的最佳营养。”
6 告诉自己:“我虽然走得慢,但是我不往回走。”
……
《了不起的小狐狸:用力生活,用力爱》:“你很棒!你很聪明!你一定可以做好这件事的!”
……



