目标
这篇文章的目标很简单就是给非程序猿的小伙伴一个因为各种原因入坑编程的小小指南,希望大家能相对无痛跨过入门第一道坎。
在开始前,首先我需要定义下“熟悉”,在这里“熟悉”代表着大家能大致知道一个最简单的 python 程序可以按照什么思路写出来,遇到问题时应该如何问谷歌娘、度娘。
思考路径
首先我想先介绍下写程序的一个思考路径,具体的来说就是在手放在键盘上开始码代码前应该做什么准备。大体可以分为一个分层循环以及一个实现循环。
分层循环是指对当前想要达成的目标进行抽象拆分成子目标,之后重复直到子目标不能再拆分位置。
具体实践起来就是,我们需要脑子里想象或者抽张草纸画个树状图,对当前任务进行拆分,并给每个子任务起个名字(在小 demo 中会发现它将是你函数的名字)并明确任务的输入和输出。这里需要注意的是每一次拆分出的子任务应该是同一个抽象等级的。举个例子,最终目标是出门,我们拆分子任务时不能把 “穿鞋” 和 “做出门准备” 列在同一个层级。
实现循环是指对不能拆分的子目标进行实现时要不停的问自己的几个问题循环。
这部分实践起来就是问自己如下几个问题:
- 自己知不知道在 Python 已知的原生功能解决问题(不知道的话跳到第二个问题)
- 自己知不知道有什么第三方库能能解决这个问题(同上)
- 直接 Google or Baidu 自己想要解决的问题 + Python 作为关键词(这一步主要是看别人是如何解决的,用了什么功能。)
- 别人用了什么 Python 或者第三方库的功能
- 尝试下别人的代码样例(如果解决则停止或者对别人代码进行优化,否则下一步)
- 查看别人使用的 Python 原生功能或第三方库的官方相关 api 文档(如果没解决接着 Google,解决了则到第四步)
- 测试下是否真的解决了我们拆分的子问题。
以上就是写程序时的思路,这样子个人的体验时可以最小化 debug 的时间,代码也会看的舒服一些。其实上述的步骤同样适用于其他编程语言,毕竟编程不论用什么语言思路上都差不多。如果想进阶了解里面的一些思路的话可以参考 《代码简洁之道》这本书。
超级超级入门的基本知识介绍
这部分会非常非常简略的介绍下 Python 相关的知识以及相应的学习思路。如果是仅仅因为一些语法细节不明白的话建议去菜鸟教程这个网站查看对应的内容。
个人觉得刚刚入门熟悉一个语言的话只需要知道以下几个内容:
- 如何设置变量:
变量是你接受外部信号,以及存储运算结果的地方,所以这个是必须的
Python 的相当简单,就是变量名称 = 变量值
就完事了。不同变量的细节的问题可以查看这里。 - 如何输出变量:
我们需要 Debug 啦,所以得能看见结果。Python 的输出很简单print(变量名称)
就可以了。对应的详细样例可以看这里。 - 如何设置函数:
这里很重要,因为可以看到我们上述思考的过程中拆的任务可以对应到这里的函数。可以大致简单的理解为一个目标就是一个函数,同时一个函数会有自己对应的输入输出,格式如下。
def function_name(var1, var2):
# some operations
return var3, var4
result_var3, result_var4 = function_name(var1, var2) # use function
- 条件控制:由于程序是顺序执行的,但是有时候我们需要根据一些条件来控制代码执行的顺序,如跳过一些步骤之类的,这里就是我们常说的 if elif else 。详细的使用可以参考这里。
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
- 循环:如果我们一条写虽然能写,但是有很多重复的操作,这时候我们希望有一个循环的语法来帮助我们减少代码量。这里一般语言都使用 for 和 while 来实现的。详情使用可以看这里。
一个小 demo
好了,知道了上述的一些简单语法以后,接下来我们来从零开始实战一个小 demo。demo 的目标是在一个在线 pdf 文件中找到我想要的相关内容并输出。
Step 01:对问题进行分层
这个是我前阵子自动化我爬股票相关数据中的一小部分功能,这时候我已经能够得到对应的 pdf 的在线的链接,而且我非常清楚 python 可以处理本地 pdf 文件。因此我的问题就拆分为两个:
- 从链接下载 pdf
- 函数名
save_online_pdf(pdf_url_link, pdf_name)
- 下载 pdf 并返回路径
- 函数名
- 用 python 在 pdf 中查找关键字并以某种格式输出结果
- 函数名
find_keywords_output_current_page(pdf_path, keyword, tag)
- 根据单个关键词查找对应的页码,并输出当页图片
至此我的程序主体长这个样子:
- 函数名
def pharse_online_single_pdf(pdf_url_link, find_keywords_list, pdf_name, tag):
pdf_path = save_online_pdf(pdf_url_link, pdf_name)
# 下载 pdf 并返回路径
for keyword in find_keywords_list:
find_keywords_output_current_page(pdf_path, keyword, tag)
# 根据单个关键词查找对应的页码,并输出当页图片
Step 02: 完成 save_online_pdf 函数
由于网页打开就是一个 pdf 文件,所以我猜想可以直接从网页拿到数据直接存储到文件即可。这时候网上简单搜索了下关键词 “python 下载 pdf”,随便翻了下就找到了一个很简单的解决方案。但是美中不足的是我用 python3 执行代码后 urllib 库报错。猜想是 python2 和 python3 的版本问题,所以搜索关键词 “python3 urllib.request” 之后便得到了解决方案。经过尝试最终函数如下:
def save_online_pdf(pdf_url_link, pdf_name):
tempfile.mkdtemp() # 这里 tempfile 只是把下载的文件仍在系统会自动清除的地方
tmp_dir_path = tempfile.gettempdir()
r = urllib.request.urlopen(pdf_url_link)
pdf_path = os.path.join(tmp_dir_path, pdf_name+“.pdf”)
with open(pdf_path, “wb”) as ot_file:
ot_file.write(r.read())
return pdf_path
Step 03: 完成 find_keywords_output_current_page 函数
这个任务在开始做这个目标的时候,我也仅仅是知道有可以完成的 api,因此我得现场搜索和测试。于是依旧是 Google 关键词 “python 处理 pdf”,之后看到了这个文章。初步扫了一眼,觉得内容比较有逻辑,应该可信。就采取了里面 pdfplumber这个第三方库,理由为它可以提取表格,而我恰巧需要的关键词在表格中。于是简单的阅读 pdfplumber 的官方 api 说明,经过反复测试得到了下面的代码。(主要是 pdfplumber 提取的表格格式其实有问题)
```python
def check_name(target_name, name_list):
for name in name_list:
if not isinstance(name, type(None)):
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
如果需要可以点击链接免费领取或者滑到最后扫描二v码
👉[CSDN大礼包:《python学习路线&全套学习资料》免费分享](安全链接,放心点击)
👉Python学习大纲👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉Python实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python书籍和视频合集👈
如果需要可以点击链接免费领取或者滑到最后扫描二v码
👉[CSDN大礼包:《python学习路线&全套学习资料》免费分享](安全链接,放心点击)
👉Python面试刷题👈
👉Python副业兼职路线👈
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以点击链接免费领取或者保存图片到wx扫描二v码免费领取【保证100%免费
】
👉[CSDN大礼包:《python学习路线&全套学习资料》免费分享](安全链接,放心点击)