1.7调试

  程序是很容易出错的。因为某种古怪的原因,程序错误被称为bug,而查捕bug的过程称为调试(debugging)。

  一个程序中可能出现3种类型的错误:语法错误、运行时错误和语义错误。对它们加以区分,可以更快的找到错误。

  编程,特别是调试,有时候会引发强烈的情绪。如果你挣扎于一个困难的bug,可能会感到愤怒、沮丧以及窘迫。

  有证据表明,人们会像对待人一样对待电脑。当电脑良好完成工作时,我们会把它们当作队友,而当他们难以控制、粗暴无礼的时候,我们会按照对待那些粗暴固执的人一样对待它们。

  对这些反应行为有所准备,可能会帮助你更好地对待电脑。一种方法是把它当作你的雇员,它有一定的长处,如速度和精度,也有特定的弱点,如没有同情心和无法顾全大局。

  你的任务是做一好经理:设法扬长避短,并找到方法控制你的情绪去面对问题,而不是让你的反应影响工作效率。

  学习调试可能会带来挫折感,但它是一个有价值的技能,并在编程之外还有很多用途。

1.9练习

  在计算机前阅读本书是一个好主意,因为你可以边看边试验书中的示例。

  每当你试验新的语言特性时,应当试着故意犯错。例如,在”hello,world”程序中,如果少写一个引号,会发生什么?如果两个引号都不写,会怎么样?如果把print拼写错了,会如何?

  这种试验会帮你记住所读的内容,也能帮你学会调试,因为这样能看到不同的出错消息代表着什么。现在故意犯错总比今后在编码中意外出错好

少写1个引号:

 In [1]: print("hello world)
File "<ipython-input-1-1ec64a806ae8>", line 1
print("hello world)
^
SyntaxError: EOL while scanning string literal

两个引号都不写

 In [2]: print(hello world)
File "<ipython-input-2-6135c6da936c>", line 1
print(hello world)
^
SyntaxError: invalid syntax

print拼写错了

In [3]: printt("hello world")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-3-98dec9cc814c> in <module>
----> 1 printt("hello world") NameError: name 'printt' is not defined

练习1-1

1.在print语句中,如果漏掉一个括号,或者两个都漏掉,会发生什么?

猜测:会发生语法错误--猜错了

实际结果:

漏掉一个括号:

程序会认为输入没有结束

漏掉两个括号:

语法错误,并给出正确输入提示

2.如果正尝试打印一个字符串,那么若漏掉一个或所有的引号,会发生什么?

漏掉1个引号:语法错误

In [11]: print("hello)

File "<ipython-input-11-2fadf01e7f7a>", line 1

print("hello)

^

SyntaxError: EOL while scanning string literal

漏掉所有的引号:

程序把hello当作是一个变量名,但是这个变量事先没有定义,所以会报nameError

In [12]: print(hello)

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

<ipython-input-12-1cd80308eb4c> in <module>

----> 1 print(hello)

NameError: name 'hello' is not defined

3.可以使用一个负号来表示负数,如-2。如果在数字之前放一个正号,会发生什么?如果是2++2呢?

放一个正号:

In [14]: +2

Out[14]: 2

2++2

进行了加法计算,但无论中间放几个+号,都视作1个+

In [16]: 2++2

Out[16]: 4

 #论中间放几个+号,都视作1个+
In [18]: 2++++++2 Out[18]: 4

4.在数学标记里,前置0是没有问题的,如02.在Python中也这么做会发生什么?

In [19]: 02

File "<ipython-input-19-0908cbeb2fbd>", line 1

02

^

SyntaxError: invalid token

 #正确示例

In [20]: 2

Out[20]: 2

5.如果在两个值之间不放任任何操作符,会发生什么?

In [21]: 2 3

File "<ipython-input-21-4142a0c1dd52>", line 1

2 3

^

SyntaxError: invalid syntax

#正确示例

In [22]: 23

Out[22]: 23

练习12

启动python解释器,把它当作计算器使用

1.在42分42秒中,一共有多少秒?

In [23]: 42*60+42

Out[23]: 2562

2.10千米相当于多少英里?提示:1英里相当于1.61千米

In [31]: 10/1.61

Out[31]: 6.211180124223602

3.如果你用42分42秒跑完10千米,那么你的平均速度(跑1千米需要的分钟和秒数)是多少?平均速度是多少千米每小时?

计算公式:

1千米=1000米

时间=距离/速度

速度=距离/时间

距离=距离*时间

首先42分42秒是2562秒

是42.7分

约等于0.71小时

每分钟的平均速度是:0.23

In [36]: 10/42.7

Out[36]:
0.23419203747072598

跑1千米需要的分钟是:

跑1千米需要的秒数:

平均速度是多少千米每小时?(以小时为单位)

数学计算头疼-晕~! 也许我先在纸上把公式写下来,然后把数字往公式中套会容易的多

最新文章

  1. Linux命令-自动挂载文件/etc/fstab功能详解[转]
  2. 如何通过 js 修改微信浏览器的title?
  3. STL源码--iterator和traits编程技法
  4. Linux下配置PHP开发环境
  5. GDB代码调试与使用
  6. HDU(2089),数位DP
  7. 学习记录 java泛型资料
  8. 微软Hololens学院教程- Holograms 101: Introduction with Device【微软教程已经更新,本文是老版本】
  9. asp.net微信开发第七篇----高级群发(图文)
  10. 使用vs2015搭建Asp.net Core
  11. Linux下如果忘记了Mysql的root密码该怎么办?
  12. Log4.Net 在Winfrom、MVC、ashx程序里的使用,ashx程序里使用异步
  13. JAVA并发编程学习笔记------基础构建模块
  14. Servlet 单例多线程【转】
  15. 解决Spring boot中读取属性配置文件出现中文乱码的问题
  16. java_25.1字节转为字符OutputStreamWriter
  17. overall error
  18. 【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)
  19. Lintcode40-Implement Queue by Two Stacks-Medium
  20. Springboot 热部署问题。亲测可用。

热门文章

  1. Log4Net使用详解(续)
  2. 非GUI 模式运行 jmeter 压力测试
  3. levelDB Block
  4. python之callable
  5. MySQL binlog之数据恢复
  6. WPF ControlTemplate
  7. vue 运行时报 dependency was not found:错误
  8. HDUSTOJ-1558 Flooring Tiles(反素数)
  9. python学习笔记(12):高级面向对象
  10. vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式