读《像计算机科学家一样思考python》——笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读《像计算机科学家一样思考python》——笔记相关的知识,希望对你有一定的参考价值。

 

第二章 变量、表达式和语句

1.  变量的基本数据类型:python中有 整型、长整型、浮点型、字符串型、复数形式5种。

2. 使用type( ),可以查看数据类型;如:type(2), type(‘xiaoming’) 等; type是一个函数;

3. 数值操作符:

    1) 加、减、乘、除、求模和乘方: + 、-、 *、/、% 和 **

    2)在python2中, 除法 / 使用的是舍去式除法(整数相除为整数), 即 2/3 结果为0; 在python3中,除数结果为浮点数类型,即 2/3 =0.6666666666666……, 并且使用一个新的操作符 // 表示舍去式除法 .

    3)操作顺序: 乘方>乘除>加减

4. 字符串可以使用的操作:

    1) 拼接: 使用 + , 如: ‘adfsa’+’adfds’ = ‘adfsaadfds’

    2) 重复操作: 使用 * , 如: ‘abc’*3 = ‘abcabcabc’

5. 注释与换行:

# 我现在就是注释状态
print a
#换行使用 \ 符号;
print asdfggk        sdsfsf

 

第三章: 函数调用

1. python中内置的类型转换函数

int 把浮点数转换为整数,它直接把小数部分舍去;   如 int(3.999) = 3; 又或  int(‘2’) = 2,它转换了字符串

float函数将整数和字符串转换为浮点数: float(32)=32.0 或 float(‘3.14159’) = 3.14159

str函数将参数转换为字符串;

2, 定义无返回值的函数,定义方法如下, def + 函数名+() + :, 函数体要有缩进: 

def hello():
  print hello,world!
  print hello, yinheyi

3.  python提供了两种导入模块的方式:

方法一: import 模块名, 如 import math , 这时如果访问模块里面的函数的时候,需要同时指明模块名与函数名,中间用 . 分隔;

方法二: from 模块名 imort 函数名,   这时,我们就可以直接使用这个函数名了,并且不需要指明模块名; 使用 from 模块名 import * 导入模块的所有成员;

优缺点: 第二方式可以使代码更简洁,但是,不同模块的同名成员之间,可能发生冲突;

 

第四章: 案例研究:接口设计

1. 一个开发计划:

1) 最开始写一些小程序, 而不需要函数定义;

2) 一旦程序成功运行,将它封装到一个函数中,并加以命名;

3) 泛化这个函数,添加合适的形参;

4) 可以使用重构来改善程序的机会, 例如, 如果发现程序中几处地方有相似的代码,可以老柴将它们抽取出来做一个合适的通用函数。

 

2. 文档字符串:

它的作用:在函数开头用来解释其的字符串。

def hello():
""" 这是一个文档字符串, 使用三个引号 可以允许字符串跨行表示;
我现在就跨行了啊;
"""
    print "hello,world!"

注意:编写这类文档是接口设计的重要部分. 一个设计良好的接口, 也应当很简单就能解释清楚;

 

第五章 条件与递归

1. 关系操作符:

不等于 !=
大于 >
小于 <
大于等于 >=
小于等于 <=

2. 逻辑操作符:

and
or
not

3. 布尔值与布尔表达式:

表达式的值是真或假的表达式,就是布尔表达式。 它的值为  True或False, 它们并不是字符串。

4. 空语句: 在python中, 空语句使用 pass,记好!!!!

5. 条件判断表达式:

1) 只有一个分支:

if x < y: 
    print x is less than y

2)有两个分支:

if x < y:
    print x is less than y
else:
    print x is large than y

3) 多个分支:

if x < y:
    print x is less than y
elif:
    print x is large than y
else:
    print x is equal to y

6. 从键盘输入:

python 2 提供了内置函数 raw_input 来从键盘获取输入, python 3 中这个函数改为了 input, 不过它们的用法相同。

a = raw_input(input your name:\n)
print hello +a+!
#输出为:
input your name:
yinheyi
hello yinheyi!

 

第六章:有返回值的函数

1. 增量开发程序:

这个思想真的很好, 我们可以把一个大的函数一点点的增加开发出来 ,慢慢的一点点的调试。增加一些必要的脚手架代码。 比如,在关键的位置打印一下变量的值等。一步步地来,保证每一步都是正确的, 这样可以幚我们节省大量的调试时间。

2. 有返回值的函数: 返回值使用 return 返回。

def sum(a, b):
    temp = a + b
    return temp

3.  坚持信念:

在写递归函数的时候, 我们可以使用一个方法: 坚持信念。 当我们遇到一个函数的调用的时候,不去跟踪执行的流程,而是我们假定函数是正确工作的,能够返回正确的结果 。如著名的斐波那契数列,它的程序可以写作:

def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
    return fibonacci(n-1) + fibonacci(n-2)

4. 检查类型:

python中内置了一个函数  isinstance 来检查的实参的类型,  正确返回True, 否则返回 False

isinstance(12, int)
True
>>> isinstance(12.2, float)
True
>>> isinstance(hello, str)
True

 

第七章 迭代

1. while 循环:

while n < 100:
    print n
    n = n - 1

2. for 循环:

for i in range(100):
    print i
    i = i + 1

 

第八章 字符串序列

1. 字符串是一个序列,它的下标是0 开始的;  使用python的内建函数len() 可以返回字符串中的字符的个数:

>>> a = hello
>>> len(a)
5
>>> a[0]
h

可以使用for 循环来遍历一个字符串内的字符:

a = hello
for char in a:
    print char

2. 对字符串可以切片:

操作符[n:m] 返回字符从第n个字符到第m个字符的部分, 包含第n 个字符,但是不包括第m个字符。

>>> fruit = banana
>>> fruit[1:3]
an
>>> fruit[:2]
ba
>>> fruit[3:]
ana

3. 操作符 in

in 是一个布尔操作符, 操作于两个字符串上,如果第一个是第二个的子串,则返回True, 否则返回 False。

>>> yin in yinheyi
True

4. 字符串中的元素是不可以改变的;

第十章: 列表

1. 列表是一个序列, 在列表中,它的值可以是任何类型, 列表中值称为元素;列表可以嵌套在一个列表中。

创建一个列表最简单的方法使用[ ], 如: [10, 20, 40, ‘xiaoming’]

2. 使用 [] 操作符来访问列表,  列表中的元素是可以变化的;

3. 遍历一个列表,照样可以使用for()循环;

for i in array:
    print i

4. 列表操作:

1) + 操作,可以用于拼接列表;

2) * 操作符,可以用于重复一个列表多次;

5. 从列表中删除元素:

1)使用下标删除:  pop 修改列表,返回被删除的值,如果不提供下标,它会删除并返回最后一个元素;

t = [a, b, c]
print t.pop(1#输出:b
print t
#输出:[‘a‘, ‘c‘]

2) 使用下标删除, 不返回删除的值,使用del操作符:

>>> t =[1, 2, 3, 4]
>>> del t[1]
>>> print t
[1, 3, 4]
>>> t =[1, 2, 3, 4]
>>> del t[1:3]
>>> print t
[1, 4]

3)如果知道删除的元素,则可以使用remove:

>>> t = [a, b, c, d, e]
>>> t.remove(d)
>>> print t
[a, b, c, e]

6. 把字符串转化为列表:

1)转换为单个单词: 使用函数:list

>>> t = asdfas
>>> print list(t)
[a, s, d, f, a, s]
2)转换为一个个的单词, 使用字符串的方法 split()

>>> t = hello world yinheyi
>>> print t.split()
[hello, world, yinheyi]

7. 一个有趣的例子:

>>> a = aaa
>>> b = aaa
>>> a is b
True
>>> a = [a, b, c]
>>> b = [a, b, c]
>>> a is b
False

为什么会这样子? 也没有什么意思吧。。字符串是同一个对像, 而列表不是同一个对象,其实也很容易理解, 字符串不可以更改,而列表是可以更改的;

8. 很重要:别名

当我们使用赋值 b =a 时, 这两个变量都会引用同一个对象,改变其中一个,必然会影响另一个,这个与C语言不同,因为C语言中,它们是两个不同的对象;例子如下:

>>> a = [111, 222, 333]
>>> b = a
>>> b[0] = 444
>>> print a
[444, 222, 333]

9. 列表参数:

当我们将一个列表作为参数传入到函数中时, 函数会得到列表的一个引用。 所以,在函数中修改了列表的话,对函数外也有影响;

 

这一章特别注意: 对于列表进行赋值,是得到了原来列表的一个引用, 是引用啊。要特别曲分修改列表还是新建了一个列表;

 

第十一章: 字典


以上是关于读《像计算机科学家一样思考python》——笔记的主要内容,如果未能解决你的问题,请参考以下文章

《像计算机科学家一样思考Python》pdf

像计算机科学家一样思考Python (第2版)pdf

像计算机科学家一样思考python笔记

像计算机科学家一样思考Python (第2版)高清PDF电子版下载

编程学习之-用python3的方式思考

编程学习之-用python3的方式思考