T5总结:
本文主要介绍‘编程习惯养成与思维’,偏说理而非实战。因为缺乏相关代码与举例,所以在理解上很困难。
所以本文进行查阅相关资料,进行理解和总结。

目录:
1.防御性编程与备注
2.科学分析思维
迭代问题逻辑
代码效率
3.图灵完备语言
4.Debugger
5.抽象化、模块化、封装代码
6.如何知道运行代码的时间
7.如何修复他人的代码

1.防御性编程与备注

以下参考资料很专业,但较难理解,日后再回顾。
Python中的防御性编程 (上)

来自 https://python.freelycode.com/contribution/detail/112
Python中的防御性编程 (下)

来自 https://python.freelycode.com/contribution/detail/113

2.科学分析思维
a.迭代问题逻辑
1、选择一个可以计数的变量(Choose variable that “count”)
2、在外部需要初始化它(Initiative outside the loop)
3、需要设置正确的最终测试(Setup and test)
4、构建代码块(Conctract block)
5、当结束后,你知道,当我完成后,我该怎么做(What to do when done)

b.代码效率
在时间、空间恒定的情况下,需要考虑的是
1、计算需要多少内存
2、输入大小的函数所需的基本步骤数量是多少

表现 所需步骤与内存
Best min
Worst max
Expected avg

3.图灵完备语言
图灵完备语言包含三部分
1、数据:数组,字符串,布尔
2、操作:数字运算,如+,-,and/or等
3、命令:赋值、输入/输出、条件/分支、循环机制
有了这三部分,我们就可以做任何事情,在基础部分,我们都有接触过。能做什么事情呢?包括自然语言学习,图像识别,语音识别等

4.Debugger
首先要发现产生问题的最小输入,然后进行打印测试,采用二分法进行测试,每次是在代码中进行打印,每次测试可以排除一半的代码块,并自己先预测一下结果会是什么,耐心冷静的减小搜索出现问题的地方

PYHDW调试建议

  1. 不要使用调试器(“debugger”)。调试器所做的相当于对病人的全身扫描。你并不
    会得到某方面的有用信息,而且你会发现它输出的信息太多,而且大部分没有用,
    或者只会让你更加困惑。
  2. 最好的调试程序的方法是用 print 在每个你想要检查的关键环节将关键变量打印出
    来,从而检查那里是否有错。
  3. 让程序一部分一部分地运行起来。不要等一个很长的脚本写完后才去运行它。写一
    点,运行一点,再修改一点。

5.抽象化、模块化、封装代码
这部分是为了解决阅读代码的问题,事实上几十万行的代码看的时候很难去理解,会把代码进行分成几个模块,一个模块负责对应相关的操作,也方便后续的debugger,和阅读
eg:机器学习中会分为数据清洗、训练、测试,三个大模块

6.如何知道运行代码的时间
核心思想:影响代码运行时间会受到,1、机器性能。2、使用的语言。3、数据量。等
其实这些并不能为我们预估出运行代码的时间,因为这些都有很多变量,其实唯一不变的是运行这个程序需要多少步,
eg:时间复杂度、空间复杂度

python 的标准库手册推荐使用方法time.perf_counter()返回以秒为单位的时间浮点值。
//python3.8之后的版本不再支持time.clock(),得用time.per_counter()

#导入时间模块
import time
#求素数的程序
def is_prime(number):for i in range(2, number):if number % i == 0:return Falsereturn True
if __name__ == '__main__':number = 17377start_time = time.perf_counter()is_prime(number)end_time = time.perf_counter()
#按差异打印执行时间
print(end_time - start_time)
0.004068800000027295

7.如何修复他人的代码
在编程的时候,我们常常会借鉴别人的代码,但会碰到一个问题,并不是每一份代码都可以完整复现,会受到版本、运行环境等的影响,
所以要修复他人的代码,提供一个思路是要有一个系统性的思考

PythonThinking_‘编程习惯养成与思维'相关推荐

  1. 敲代码括号技巧_理解代码块概念,养成良好编程习惯 | 亲子课堂 第 3 课

    亲子课堂 关卡解析 / 英语教学 / 编程讲解 做亲子编程教育的好帮手! 每周二.四定期更新 地牢 面向真正0编程基础的孩子们,关卡被设计成迷宫的形式,引导孩子们使用编程思维解决问题. 以循序渐进的方 ...

  2. 一个教训:养成良好的编程习惯的重要性

    1.良好的编程习惯非常重要,可以帮我们避免很多潜在错误,今天程序有个bug死活都调不通,请项目组里的大牛帮忙看了一下,忙活了半天定位了原因:有个函数的入参在传入函数前没有初始化,导致程序bug,这种错 ...

  3. 学习感悟-如何养成良好的编程习惯

    如何养成良好的编程习惯 1.增强代码的可读性 一个优秀程序员编写的代码不仅体现在代码的质量上,而且体现在代码的可读性上.由于我们编写的代码是给计算机运行和供别人阅读的,所以在编写代码时要兼顾这两方面. ...

  4. 养成良好的编程习惯很重要(C++)

    在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习.我的使命就是过滤掉大量的无效信息,将知识体系化,以短平快的方式直 ...

  5. 如何在编程时养成良好的习惯

    如何在写代码时养成良好的习惯 一个人有没有良好的修养,就从他的为人处世以及行为习惯中看出来.作为软件开发人员,也应该养成良好的职业素养和编程习惯,这样才能在人生道路上进一步向上攀爬. 命名 养成良好的 ...

  6. 用python做dnf脚本好还是c语言好,养成这8个编程习惯,你的Python性能将蹭蹭蹭地往上涨...

    Python不以性能见长,但掌握一些技巧,也可尽量提高程序性能,避免不必要的资源浪费. 1. 使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存. 使用局部变量替换模块名字空间中 ...

  7. 有哪些好的编程习惯从一开始就值得坚持?

    编程中,有哪些好的习惯从一开始就值得坚持? 电影<喜剧之王>里,周星驰饰演的尹天仇,是一个渴望成为真正的演员,却不断沦为落魄跑龙套的小人物. 即便如此,他对演戏的态度始终认真而可敬.他每天 ...

  8. 少儿编程教育好不好---《浅谈青少儿编程教育与计算思维》

    前言 最近国家政策导向,导致很多少儿教育行业迎来了寒冬,使得不少企业都快支撑不下去了,这也是国家对于校外少儿教育行业的规范化必经之路.我们今天不讲政策和形势,谈谈我对于少儿编程教育的一些认识.毕竟也在 ...

  9. 少儿编程学的是思维还是程序?

    少儿编程学的是思维还是程序? 未来世界的人将会分成两种人:一种是会编程的人,另一种是不会编程的人. 会编程的人可以创造.可以写出改变人类社会的软件:不会编程的人,如果学会使用别人写的软件,则可以充当辅 ...

最新文章

  1. Linux13-bash脚本编程基础及配置文件
  2. The King of Excel Geek 0.1版本
  3. mysql中select语句子句,了解mysql中select语句操作实例
  4. vb.net 判断是否为ip 正则_什么是个人IP科学定位?标准答案来了|ip|直播|科学|ip魔方...
  5. 本週主題 -- Jakarta Commons Lang
  6. java自动封箱_java自动封箱是什么意思
  7. 这月到手的工资多了没?
  8. (第五周)结对项目——黄金点游戏
  9. 常用的monkey命令
  10. 影响中国互联网的100人
  11. 每日一句---- Day8
  12. DRM in Android详解
  13. 某宝付费买的价值上万的60G的Python学习资源,0基础轻松赚钱到手软,请低调使用,禁止外传~...
  14. 电商网站商品详情架构
  15. 关于烛光斧影——赵光义是否谋杀赵匡胤,是否合法继位
  16. 教你如何打开Centos7的可视化-磁盘使用情况分析-界面
  17. 关于异步的几点思考......
  18. HDU 2188-悼念512汶川大地震遇难同胞——选拔志愿者
  19. java swing的弹窗_java Swing实现弹窗效果
  20. 搬迁学习笔记2——The specified child already has a parent的解决方法

热门文章

  1. Pd1 药物研发进展|销售数据|市场规模|竞争格局|前景分析
  2. 【HCIE-RS 天梯路】IPv6基础
  3. excel超链接应用:快速生成目录的几个方法-上
  4. 知识图谱-KGE-模型:概述【翻译模型:Trans系列】【双线性模型:DisMult、ComplEx】【神经网络模型:ConvE、CapsE】【双曲几何模型:MuRP】【旋转模型:RotatE】
  5. 协方差局长你_协方差怎么算
  6. 2006年在职攻读硕士学位全国联考参考答案
  7. 数组:左右两边数组的和相等
  8. 安科瑞AWT100无线通信终端,体积小巧,采用标准的DIN35mm导轨式安装
  9. AI行业精选日报_人工智能(12·23)
  10. 程序员羊皮卷(张大志)pdf