《head first python》_《HeadFirst Python》第一章学习笔记

对于Python初学者来说,舍得强烈推荐从《HeadFirst Python》开始读起,这本书当真做到了深入浅出,HeadFirst系列,本身亦是品质的保证。这本书舍得已在《Python起步:写给零编程基础的童鞋》一文中提供了下载。为了方便大家的学习,舍得特意制作了Jupyter Notebook格式的笔记,文章末尾舍得提供了笔记的下载地址。

读《HeadFirst Python》的同时,最紧要的是及时做练习,你甚至可以在快速浏览过一章后,便拿起练习来做。

做练习的时候,切记,不要用书中建议的Python自带的IDLE。作为过来人,舍得的建议是使用Jupyter Notobook。具体的安装方法舍得已在《Python起步:写给零编程基础的童鞋》中讲得很清楚了,每次你要练习的时候,运行jupyter-notebook.exe,便可以在程序打开的浏览器页面中进行代码输入了。Jupyter Notobook与Python自带的IDLE相比,有着巨大的优势: 增强版的代码自动补全:输入代码过程中,可尝试按Tab键,程序会提示相应的代码;

每次录入的代码程序会自动替你保存下来,这就相当于你自己的学习笔记,你可以在代码的前或后加入注释,注释前面用一个“#”+一个空格(空格可以不加,但舍得建议从一开始便养成良好的写代码习惯,#后带空格是Python代码规范-PEP8的要求)就可以了;

Notebook给你保存的笔记,你可以随时打开,点RUN按钮(或用Alt+Enter快捷键)便可以运行选择中的某一段代码,这是Python自带的IDLE根本无法做到的事情;

在Notebook中你可以极为方便地输入多行代码,而Python自带的IDLE在这方面有极大的限制;

对于颜控来说,Notebook的代码着色看起来更加舒服一些;

……

舍得会将书中每一章中提到的大部分练习,收录到笔记中,你可以在看完一章后,拿舍得给你的笔记,在Jupyter Notebook中进行练习。当然你也可以在看到书出给出一段代码时,立刻在Jupyter Notobook中输入并运行。

舍得提供的笔记是ipynb格式(ipy是指ipython, Notebook是用ipython来实现的。而nb则是notebook的缩写),当你下载了笔记之后,请将其放到“你的python安装文件夹(默认是c:\python34)\Scripts”文件夹下,然后刷新一下浏览器中Jupyter Notebook的首页,便可以看到这个笔记,点击该笔记,就可以浏览了。

如果你在Jupyter Notebook首页中已经点击过“New->Python 3”, 那么你可以使用菜单”File->Open“回到首页选择舍得提供的笔记。

下面舍得开始讲解第一章的要点。

文中”[in]:“后面的内容,表示我们在Jupyter Notebook中输入的代码和注释,内容中以”# “开头的,是舍得的注释。

”[out]:“后面的内容,则是代码执行后的输出结果。

舍得在注释中,标明了该段代码的页码,方便你对照书本进行练习。书中有些内容的讲解比舍得更详细。

舍得对部分代码进行了改写,但不影响代码的最终效果。

[in]:

# 熟愁一下打印命令.

# 第一章 p4

# 内容前面加一个#号表示注释, python会自动忽略#号后面的内容

if 43 > 42:

print("Don't panic!")

[out]:

Don't panic!

[in]:

# 创建简单的Python列表

# 第一章 p8

# 标识符:movies, 你给这个列表起的名字

# 操作符:=,把列表赋给标识符

# 列表格式:两端用中括号;列表中每一项用逗号隔开;电影名称两边加引号;

movies = ["The Holy Grail",

"The Life of Brian",

"The Meaning of Life"]

print(movies)

[out]:

['The Holy Grail', 'The Life of Brian', 'The Meaning of Life']

[in]:

# 用中括号记法访问列表

# 第一章 p9

# 打印列表中第2个数据(第1个为0)

print(movies[1])

[out]:

The Life of Brian

[in]:

# 列表深入学习:len

# 第一章 p10

# len:获取列表长度,即列表有几个数据项

cast = ["Cleese", 'Plain', 'Jones',"Idle"]

print(cast)

print(len(cast))

print(cast[0])  # 0表示第一个数据项, 你可以自己换不同的数字尝试一下

[out]:

['Cleese', 'Plain', 'Jones', 'Idle']

4

Cleese

[in]:

# 列表深入学习:append

# 第一章 p10

# append:在列表末尾增加一项数据

cast.append("Gillianm")

print(cast)

[out]:

['Cleese', 'Plain', 'Jones', 'Idle', 'Gillianm']

[in]:

# 列表深入学习:pop

# 第一章 p10

# pop:从列表末尾删除数据

cast.pop()

[out]:

'Gillianm'

[in]:

# 再打印一下,看看有何变化

print(cast)

[out]:

['Cleese', 'Plain', 'Jones', 'Idle']

[in]:

# 列表深入学习:extend

# 第一章 p10

# extend:在列表末尾增加一个列表(两个列表合并)

cast.extend(["Gillianm", "Chapman"])

print(cast)

[out]:

['Cleese', 'Plain', 'Jones', 'Idle', 'Gillianm', 'Chapman']

[in]:

# 列表深入学习:remove

# 第一章 p10

# remove:在列表中找到并删除一个特定的数据项

cast.remove("Chapman")

print(cast)

[out]:

['Cleese', 'Plain', 'Jones', 'Idle', 'Gillianm']

[in]:

# 列表深入学习:insert

# 第一章 p10

# insert:在列表中特定的位置前增加一个数据项

cast.insert(0, "Chapman")  # 0表示插入在最前面,你可以试试其它的数字

print(cast)

[out]:

['Chapman', 'Cleese', 'Plain', 'Jones', 'Idle', 'Gillianm']

[in]:

# 习题

# 第一章 p13

# 把每部电影的出品年代加到列表中

# 象下面这样: ['The Holy Grail', 1975, 1975, 1979,

# 'The Life of Brian', 1979, 'The Meaning of Life', 1983, 1983]

# 把数字放进列表的时候,数字不用加引号

movies.insert(1, 1975)  # 第1个插入到第2个列表项前

movies.insert(3, 1979)  # 第2个插入到第4个列表项前(好好想想为什么用3)

movies.append(1983)  # 最后一个追加到末尾就行

print(movies)

[out]:

['The Holy Grail', 1975, 'The Life of Brian', 1979, 'The Meaning of Life', 1983]

[in]:

# 列表: 迭代

# 第一章 p15

# 迭代: 用一个for循环,把列表中所有的项逐个打印出来

# for ... in ...表示取这个列表的每一个数据

for i in movies:  # 这里的i随便用哪个(一个或多个)字母都行

print(i)  # 只要两个i保持一致.你可以试试用不同的字母

[out]:

The Holy Grail

1975

The Life of Brian

1979

The Meaning of Life

1983

[in]:

# 列表: 迭代

# 第一章 p16

# 迭代: 用一个while循环,把列表中所有的项逐个打印出来

# 效果和for循环一样

# while xx < xxx表示:只要xx < xxx,就一直执行下去, 直到这个条件不成立

count = 0

while count < len(movies):  # 前面刚学过的len用法

print(movies[count])  # 前面刚学过的中括号记法

count += 1  # 和书本上的count = count + 1相同, 表示让count自增1

[in]:

# 列表:在列表中储存列表

# 第一章 p18

# 我们用movies这个列表来记录一部电影的数据. The Holy Grail这部电影全名叫

# 《Monty Python and the Holy Grail》(巨蟒与圣杯),1975年出品,两个Terry是导演,

# 同时也参加了演出。影片时长为91分钟,Chapman是编剧(同时也是主演)。Michael这

# 一伙人既是编剧,亦是配角。这帮人真是玩嗨了,自编自导自演。

movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91,

["Graham Chapman", ["Michael Palin", "John Clseese",

"Terry Gilliam", "Eric Idle", "Terry Jones"]]]

print(movies)

[out]:

['The Holy Grail', 1975, 'Terry Jones & Terry Gilliam', 91, ['Graham Chapman', ['Michael Palin', 'John Clseese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]]

[in]:

# 用for循环处理这个列表

for i in movies:

print(i)

[out]:

The Holy Grail

1975

Terry Jones & Terry Gilliam

91

['Graham Chapman', ['Michail Palin', 'John Clseese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]

[in]:

# 列表:在列表中查找列表

# 第一章 p20

# isinstance: 判断标识符的类型

names = ['Michael', 'Terry']

isinstance(names, list)  # 判断它是不是列表(list)类型

[out]:

True

[in]:

# 列表:在列表中查找列表

# 第一章 p20

# isinstance: 判断标识符的类型

# 换个方式

num_names = len(names)

isinstance(num_names, list)

[out]:

False

[in]:

# 列表:在列表中查找列表

# 第一章 p21

# 习题: 把上面那个movies列表中的每一个数据项都打印出来

# 用if ... else ...模式

# 结合isinstance

for i in movies:

if isinstance(i, list):  # 先判断i是不是列表

for j in i:  # 是的话用for循环

if isinstance(j, list):  # 还要再往下挖一层, 因为还有一个嵌套的列表

for k in j:

print(k)

else:  # 每一对if...else...要对齐

print(j)

else:  # 不是列表就直接打印

print(i)

# 如果再来一层嵌套的列表, 怎么办?

[out]:

The Holy Grail

1975

Terry Jones & Terry Gilliam

91

Graham Chapman

Michail Palin

John Clseese

Terry Gilliam

Eric Idle

Terry Jones

[in]:

# 函数

# 第一章 p30

# 使用函数可以简化刚才写的那段代码, 再多来几层列表咱也不怕啦!

# def关键字是define的缩写,python看到def就知道这个是函数

def print_lol(the_list):  # print_lol就是我们定义的函数名,尽可能把名字起得有意义一点

for i in the_list:

if isinstance(i, list):

print_lol(i)  # 如果是列表, 那么调用"自己"再次处理这个列表

else:

print(i)

[in]:

# 函数

# 第一章 p30

# 我们来用print_lol这个函数来打印我们的列表movies

print_lol(movies)  # 看看,代码是不是精简了很多?

[out]:

The Holy Grail

1975

Terry Jones & Terry Gilliam

91

Graham Chapman

Michail Palin

John Clseese

Terry Gilliam

Eric Idle

Terry Jones

第一章完。

本文笔记下载地址:

本文版权归舍得学苑所有,欢迎转载,转载请注明作者和出处。谢谢!

作者:舍得

首发:舍得新浪博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值