《HeadFirst Python》第一章学习笔记

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

读《HeadFirst Python》的同时,最紧要的是及时作练习,你甚至能够在快速浏览过一章后,便拿起练习来作。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的首页,即可以看到这个笔记,点击该笔记,就能够浏览了。app

SNAG-0140

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

SNAG-0143

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

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

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

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

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


[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

   

第一章完。

本文笔记下载地址:

连接:http://pan.baidu.com/s/1eR4iJoI 密码:t72j

本文版权归舍得学苑全部,欢迎转载,转载请注明做者和出处。谢谢!
做者:舍得
首发:舍得新浪博客

相关文章
相关标签/搜索