zoukankan      html  css  js  c++  java
  • 为什么学习的时候写了很多代码,但是自己写项目却写不出来?

    Python 技术已经一岁多了,持续不断地推出新知识、新技术、新技巧,不过很多童鞋存在一个疑问:学这么多编程知识、技术、技巧到底有什么用?对呀,技术日新月异,层出不穷,解决方案如雨后春笋,对于我们普通人来说,编程到底有什么用,今天我来谈谈这个问题,期望对你有所启发。

    先看三个故事

    1 原来可以这么玩

    每月发工资前需要给员工计算工资表,需要个人的社保扣除金额、考勤金额,然后,财务将每个人的基本工资减去扣除部分,最后形成员工的实际工资。

    看似简单,实际上手工处理起来比较麻烦,小小的屏幕,被打开的 Excel 挤满了,不同报表上信息格式、顺序还不一致,加上人员变动以及考勤情况,不得不说,这是个艰巨的任务,因此每月核算前夕,会计童鞋不得不加班加点

    上月,部门的会计的同学请假了,无法及时处理核算工资,委托我来帮忙处理,前后沟通了好几次,反复叮嘱,可能担心我慢,耽误进度。

    不过我并不打算手工处理,而是用程序,于是利用下班时间(毕竟是额外工作)写了一个 Python 脚本,并且提前完成任务,处理过程大概是这样:

    • 分析了这些报表,从中找到数据直接的关联(比如员工姓名+员工编号 可以作为不同报表直接的数据关联依据)
    • 整理了核算字段(就是核算项目,例如 医保、公积金等)
    • 设计了处理规则(比如,从哪个报表开始,处理报表的顺序是什么)
    • 用 Python 实现处理过程,其中 Excel 处理使用了 OpenPyXl(参见 《Excel 神器 —— OpenPyXl》)

    等会计回来,惊喜不已,这下可以帮他省下很多功夫了,不禁问:“怎么才能学会 Python ……”

    2 五十岁学 Python

    今年(2020年)五月,地产大佬,潘石屹以 99 分的成绩,高分通过了 Python 编程能力等级测试:

    对于为什么学习编程,他在微博中这样描述:

    在农业社会时,我们要学习驾驭马、驴、牛,让它们为我们出力、干活。

    在工业社会时,我们要学会驾驭各种机器、火车、轮船、飞机、机床等等。

    今天,我们要让机器听我们的指挥,我们就要学习机器能听懂的语言

    为了学习 Python,潘石屹不断地练习,并且在微博上不断地发布学习感想和心得,一致于他的很多朋友都误以为他的微博被盗号了~

    一次采访中他谈到,现在是个人工智能的时代,需要学习和机器打交道的工具,目前最好的工具就是 Python 编程语言

    潘石屹采访

    3 编程改变思考方式

    币圈大佬李笑来在写某本书时,想说明 即便是结论正确,论证过程乱七八糟也不行! 这个观点,需要找一个例证。

    某次找到了这样一个说法:

    如果把字母 a 计为 1、b 计为 2、c 计为 3 …… z 计为 26,那么:

    knowledge = 96

    hardwork = 98

    attitude = 100

    所以结论是:

    知识(knowledge)与勤奋(hardwork)固然都很重要;

    但是,决定成败的却是态度(attitude)!

    虽然结论很对,但是证明过程太过牵强了,如何证明这个证明过程是荒谬的呢?

    只要能找到按照规则得分为 100,且具有负面含义的单词就可以了

    但是英文单词有 几十万个,凭直觉一个手工计算,一定会被累死,于是面对如此荒谬的证明过程,却 “无话可说” 了

    好在李笑来会编程,通过编程,很快找到了三千多个 “满分”单词,其中包括:

    • connivance(纵容)
    • coyness(羞怯)
    • flurry(慌张)
    • impotence(阳痿)
    • stress(压力)
    • tuppence(微不足道的东西)
    • ……

    看到这样的结果,那个结论推导过程的荒谬显而易见了

    如果你来实现,该怎么做呢?可以加入我自己建的Python开发学习群:1156465813,可以获取参考代码

    以语言的学习过程为实例,阐述自学的过程,其中以Python语言的学习过程为实例,阐述自学的过程,其中

    在李笑来的另一本《自学是门手艺》中,有很多说明观点的图表,值得称赞的是,图表不是图片引用,而是通过 Python 代码,将原始数据做成图表展示的,例如关于中国人预期寿命的数据说明:

    我们一般看到图表之后,只是看一眼,至于数据是否对,现象是否合理不会多做思考,而借助编程工具,就能更好的更可靠的对结论或者现象做出判断

    《自学是门手艺》以 Python 语言的学习过程为实例,阐述自学过程的,可以作为 Python 学习的教程,推荐阅读

    程序到底是什么

    三个故事从不同角度上说明了编程的重要性,但对应实践而言,可能还是不知道如何应用,或者说解决实际问题

    其中一个重要原因是:没有建立其现实世界与程序世界的联系

    程序世界里是数字,或者说处理的是由数字组成的信息,而现实世界中存在是具体的物体,或者抽象概念的实物,数字与实物之间并不存在必然关联。

    程序的结构

    现在的计算机是建立在图灵机模型的基础上的

    主要由三部分组成:

    • 输入
    • 处理
    • 输出

    对于计算机来说,输入的是数据,通过处理器的计算,最后输出处理后的数据

    而程序就是指导计算机如何处理数据的,可以将其想象成一个个处理单元,那么每个单元也应该具有自己的输入、处理和输出

    输入

    而对一个能解决实际问题的应用来说,也是一样的,那么让程序与实际之间的联系在于如何将实际问题数据化

    这里就是具有挑战的地方,有些东西容易数据化,比如学生的考试成绩,有些不容易数据化,比如人们的性格

    除了数据化的挑战,还有一个挑战是数据量问题

    前面李笑来寻找 “满分” 单词的例子中,数字很容易,字母都有个数值编码,而如何找到所有的单词是个数据量问题

    对于数据量问题,解决方法就是寻找数据源,比如李笑来通过搜索引擎找到了收录了所有英文单词的文件,常见的方法有:

    • 搜索已经存在的数据源
    • 爬取搜集网络中零散的数据
    • 人工输入
    • 通过 API 读取
    • ...

    处理

    解决了数据来源问题,就需要对数据进行处理,处理过程是我们最熟悉,练习最多的部分

    编程语言教程绝大部分内容是讲述处理过程的,在编程学习中遇到的练习往往是去除了输入问题的,这样有助于我们关注处理本身

    虽然如此,处理过程无时不刻在与数据打交道,处理各种来源的数据:

    • 来自文件系统
    • 来自网络
    • 来自接口变量、形参
    • 来自数据库
    • 来自其他程序的输出
    • 来自终端输入

    对于每种来源,我们学习到了如何解析,如何读取,如何遍历,如何整理和存储等等操作,例如 Python 中的 open 全局方法可以读取一个文本文件,Python 中的各种数据类型用于存储不同形式的数据等等

    当数据被接收并解析后,就可以做加工处理了,这时我们学习了程序流程控制,以及各种运算方法。

    因为信息被已经被转换为数据,或者数值,那么就可以参与运算,这也是数学知识对计算机如此重要的原因,我们需要将实际问题(业务问题)转换为可以用算法或者数学公式计算的形式

    例如确定多个元素之间的关系,可以转换为求多维空间中点之间的欧拉距离,可以参考《Python 告诉你疫情扩散有多可怕》,其中用于确定是否达到感染条件的方式,就是通过计算二维平面上模拟点之间的欧拉距离实现的。

    输出

    对数据的加工处理后,需要给出一个结果,否则程序就像黑洞一样,不知其然

    和输入来源相对应,可以输出为:

    • 文件系统的文件
    • 网络数据
    • 方法返回值
    • 数据库
    • 终端输出

    输出的结果可以是将加工好的结果存储起来,以便后来使用,也可以产生某种效果

    最直接的效果是显示在屏幕上,能让人看到,通过光能将结果传递到人的眼睛,从而产生影响

    可以想象如果信息传递的介质变了,产生的效果会大有不同,例如机械控制软件,可以用结果控制机器,最常见的是打印机,我们将结果通过电能驱动打印针头和马达,打印在纸上

    说白了输入输出就是程序世界与现实世界的接口,或者说是边界,输入输出的存在,将现实世界和程序世界结合在一起,从而让程序具备了驱动世界的能力。

    总结

    本文从几个实例出发,说明了编程对我们的重要性,并且从程序结构的视角简要说明了程序的三个组成部分:输入、处理和输出,勾勒了一个程序的基本轮廓,以便对程序的理解有所帮助。

    从第一台计算机诞生,到现在的互联网信息时代,几十年间,程序改写了人类历史,赋予每个人改变世界的能力,现在我们生活的方方面面都离不开程序的参与,而且这种参与程度会更深入,速度会更快,编程,为人类和机器直接的交互方式方法越来越重要,正如潘石屹所说的:我们要让机器听我们的指挥,我们就要学习机器能听懂的语言。

    注意:如果你是打算找python高薪工作的话。我建议你多写点真实的企业项目积累经验。不然工作都找不到,当然很多人没进过企业,怎么会存在项目经验呢? 所以你得多找找企业项目实战多练习下撒。如果你很懒不想找,也可以进我的Python交流圈:1156465813。群文件里面有我之前在做开发写过的一些真实企业项目案例。你可以拿去学习,不懂都可以在裙里找我,有空会耐心给你解答下。

    以下内容无用,为本篇博客被搜索引擎抓取使用
    (* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)
    python 是干什么的 零基础学 python 要多久 python 为什么叫爬虫
    python 爬虫菜鸟教程 python 爬虫万能代码 python 爬虫怎么挣钱
    python 基础教程 网络爬虫 python python 爬虫经典例子
    python 爬虫
    (* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)(* ̄︶ ̄)
    以上内容无用,为本篇博客被搜索引擎抓取使用

  • 相关阅读:
    回归,随缘写一些python心得吧
    划分树【有些东西,其实自己还不太会也要忍住把*装完】
    [codevs3273]两圆的交 计算几何
    10-12考试整理
    10-7考试整理
    [codevs1163]访问艺术馆
    [codevs2640]打印页数
    9-28 解题报告
    [CODEVS3323]时空跳跃者的封锁
    [codevs2442] kshort 经典题
  • 原文地址:https://www.cnblogs.com/shuchongzeishuai/p/13935525.html
Copyright © 2011-2022 走看看