《趣学Python——教孩子学编程》学习笔记第1-3章

96
麦典威
0.1 2018.04.04 00:09 字数 1726

第1章 Python不是大蟒蛇

1.1 关于计算机语言

计算机程序是一组让计算机执行某种动作的指令。软件就是计算机程序的集合。
一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能理解的指令。

Python编程语言的名字来自电视剧《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus),而不是大蟒蛇。

1.2 安装Python

  • 1.2.1 在Windows 7上安装Python
  • 1.2.2 在苹果OS X上安装Python
  • 1.2.3 在Ubuntu上安装Python

1.3 当你安装好Python以后

1.4 保存Python程序

第一个程序 hello world!

>>> print("hello world!")
hello world!

第2章 计算与变量

2.1 用Python来做计算

用Python做乘法运算

>>> 8*3.57
28.56

假设你在后院里挖出了一个装着20枚金币的袋子。第二天,你偷偷跑到地下室,把这些金币放进你爷爷发明的蒸汽动力的复制机里(很幸运的是你刚好能把20枚金币放进去)。你听到机器在吵闹,几个小时后,它吐出10枚闪闪发光的新的金币来。如果在过去一年中的,你每天都这样做一遍的话,在你的财宝箱里会有多少金币?

>>> 10*365+20
3670

如果要是有一只乌鸦发现了你卧室中闪亮的金子,而且每周它都能成功地飞进来并设法偷走3枚金币,那会怎样呢?

>>> 10*365+20-3*52
3514

以上只是一个很简单的程序。在这本书里,你将学到如何把这些想法扩展开,写出更有用的程序来。

2.1.1 Python的运算符

Python用来做数学运算的那些基本符号叫做“运算符”,包含加(+)减(-)乘(*)除(/)

2.1.2 运算的顺序

乘法和除法总是在加法和减法之前,除非用括号来控制运算的顺序。

2.2 变量就像是标签

在编写程序时“变量”这个词是指一个存储信息的地方,例如数字、文本、由数字和文本组成的列表等等。另一种看待变量的方式是它就像贴在东西上的标签。

例如,要创造一个叫fred的变量,我们用等于号(=)然后告诉Python这个标签是贴在什么信息上的。
下面,我们创建了fred这个变量并告诉Python它给数字100加上了标签

>>> fred = 100
>>> print(fred)
100

变量名可以由字母、数字和下划线字符(_)组成,但是不能由数字开头。从一个字母(如a)到长长的句子都可以用来做变量名(变量名不能包含空格,所以要用下划线来分隔单词)。

2.3 使用变量

改造2.1中金币的计算方式

>>> found_coins = 20
>>> magic_coins = 10
>>> stolen_coins = 3
>>> magic_coins * 365 + found_coins - stolen_coins * 52
3514

假如你在窗子上粘贴了一个稻草人,乌鸦这回只能偷到两枚金币而不是三枚了呢?

如果我们用了变量,只要简单地把变量改为新的数字,那么在算式中每个用到它的地方都会改变。我们可以这样输入来把变量stolen_coins改为2:

>>> stolen_coins = 2
>>> magic_coins * 365 + found_coins - stolen_coins * 52
3566

如果你在恰当的时刻在边上猛敲一下你爷爷的发明,那么它每次会多吐出3枚金币呢?

>>> magic_coins = 13
>>> magic_coins * 365 + found_coins - stolen_coins * 52
4661

当然,用变量来做这样简单的计算,它的用处仍然很有限。我们还没见过它真正大展拳脚。现在,只要记住变量就是一种给事物加标签的方法,从而让我们以后可以使用它们就可以了。

第3章 字符串、列表、元组、字典

在第2章里,我们用Python做了一些基本的运算,并且学习了变量。在这一章里,我们会学习Python编程中的另一些内容:字符串(string)、列表(list)、元组(tuple)和字典(map)。你还会学到列表、元组和字典是如何用来存储成批的东西的。

3.1 字符串

3.1.1 创建字符串

单引号创建

>>> fred = 'What is pink and fluffy? Pink fluff!!'
>>> print(fred)
What is pink and fluffy? Pink fluff!!

双引号创建

>>> fred = "What is pink and fluffy? Pink fluff!!"
>>> print(fred)
What is pink and fluffy? Pink fluff!!

多行字符串,三个单引号创建,可以在行之间输入回车

>>> fred = '''What is pink and fluffy? Pink fluff!!
How do dinosaurs pay their bills?
With tyrannosaurus checks!'''
>>> print(fred)
What is pink and fluffy? Pink fluff!!
How do dinosaurs pay their bills?
With tyrannosaurus checks!
3.1.2 处理字符串相关的问题

打印文本:He said,"Aren't can't shouldn't wouldn't."

方法一

>>> single_quote_str = 'He said,"Aren\'t can\'t shouldn\'t wouldn\'t."'
>>> print(single_quote_str)
He said,"Aren't can't shouldn't wouldn't."

方法二

>>> double_quote_str = "He said,\"Aren't can't shouldn't wouldn't.\""
>>> print(double_quote_str)
He said,"Aren't can't shouldn't wouldn't."

方法三

>>> multi_quote_str = '''He said,"Aren't can't shouldn't wouldn't."'''
>>> print(multi_quote_str)
He said,"Aren't can't shouldn't wouldn't."
3.1.3 在字符串里嵌入值

如果你想显示一条使用变量中内容的信息,你可以用%s来把值嵌入到字符串里面。

实例一

>>> myscore = 100
>>> message = 'I scored %s points'
>>> print(message % myscore)
I scored 100 points

实例二

>>> joke_text = '%s:a device for finding furniture in the dark'
>>> bodypart1 = 'Knee'
>>> bodypart2 = 'Shin'
>>> print(joke_text % bodypart1)
Knee:a device for finding furniture in the dark
>>> print(joke_text % bodypart2)
Shin:a device for finding furniture in the dark

实例三

>>> nums = 'What did the number %s say to the number %s? Nice belt!!'
>>> print(nums %(0,8))
What did the number 0 say to the number 8? Nice belt!!
3.1.4 字符串乘法

10乘以5等于什么?答案当然是50。可是10乘以a呢?下面是Python给出的答案

>>> print(10*'a')
aaaaaaaaaa

3.2 列表比字符串还强大

“蜘蛛腿、青蛙脚趾头、蝾螈眼、蝙蝠翅、鼻涕虫油和蛇蜕皮”,这不是普通的采购清单(除非你是个巫师),不过我们要用它来作为例子来看看字符串和列表有什么不同。

我们可以把清单上的这一系列元素用字符串的形式放到变量wizard_list中:

>>> wizard_list = 'spider legs, toe of frog, eye of newt, bat wing, slug butter, snake dandruff'
>>> print(wizard_list)
spider legs, toe of frog, eye of newt, bat wing, slug butter, snake dandruff

我们也可以创建一个列表(list):

>>> wizard_list = ['spider leg','toe of frog','eye of newt','bat win','slug butter','snake dandruff']
>>> print(wizard_list)
['spider leg', 'toe of frog', 'eye of newt', 'bat win', 'slug butter', 'snake dandruff']

字符串不容易操纵,而列表却可以方便地操纵里面的元素

>>> print(wizard_list[2])
eye of newt
>>> wizard_list[2] = 'snail tongue'
>>> print(wizard_list)
['spider leg', 'toe of frog', 'snail tongue', 'bat win', 'slug butter', 'snake dandruff']
>>> print(wizard_list[2:5])
['snail tongue', 'bat win', 'slug butter']

列表可以用来存放各种元素

>>> some_numbers = [1,2,5,10,20]
>>> some_strings = ['Which','witch','is','better']
>>> numbers_and_strings = ['Which',5,10,'witch','is',20,'better']

列表中甚至可以保存其他列表

>>> numbers = [1,2,5,10,20]
>>> strings = ['Which','witch','is','better']
>>> mylist = [numbers,strings]
>>> print(mylist)
[[1, 2, 5, 10, 20], ['Which', 'witch', 'is', 'better']]
3.2.1 添加元素到列表(append)
>>> wizard_list = ['spider leg','toe of frog','eye of newt','bat win','slug butter','snake dandruff']
>>> wizard_list.append('bear burp')
>>> print(wizard_list)
['spider leg', 'toe of frog', 'eye of newt', 'bat win', 'slug butter', 'snake dandruff', 'bear burp']
3.2.2 从列表中删除元素(del)
>>> del wizard_list[2]
>>> print(wizard_list)
['spider leg', 'toe of frog', 'bat win', 'slug butter', 'snake dandruff', 'bear burp']
3.2.3 列表上的算数(+和*)
>>> numbers = [1,2,5,10,20]
>>> strings = ['Which','witch','is','better']
>>> print(numbers + strings)
[1, 2, 5, 10, 20, 'Which', 'witch', 'is', 'better']
>>> numbers = [1,2,5,10,20]
>>> print(numbers * 3)
[1, 2, 5, 10, 20, 1, 2, 5, 10, 20, 1, 2, 5, 10, 20]

3.3 元组

元组就像是一个使用括号的列表

>>> fibs = (0,1,1,2)
>>> print(fibs[3])
2

元组与列表不同的是,元组一旦创建就不能再做改动了,如果改动元组里的元素,会报错:

>>> fibs = (0,1,1,2)
>>> fibs[0]=4
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    fibs[0]=4
TypeError: 'tuple' object does not support item assignment

3.4 Python里的map不是用来指路的

字典与列表和元组一样,也是一堆东西的组合,不同的是,字典中的每个元素都有一个键(key)和一个对应的值(value)

假设我们有一个列表,上面是一些人和他们最喜爱的运动,我们可以把这个信息放到Python的列表中,名字在前,喜爱的运动在后。

>>> favorite_sports = ['Ralph Williams, Football','Michael Tippett, Basketball','Edward Elgar, Netball','Frank Bridge, Rugby']

如果我问你 Edward Elgar 最喜爱什么运动,你可能需要浏览整个列表才能找到答案。但是,如果列表中有1000个人呢?这就用到字典了

查询操作

>>> favorite_sports = {'Ralph Williams':'Football','Michael Tippett':'Basketball','Edward Elgar':'Netball','Frank Bridge':'Rugby'}
>>> favorite_sports['Edward Elgar']
'Netball'

删除操作

>>> del favorite_sports['Edward Elgar']
>>> print(favorite_sports)
{'Ralph Williams': 'Football', 'Michael Tippett': 'Basketball', 'Frank Bridge': 'Rugby'}

替换操作

>>> favorite_sports['Ralph Williams'] = 'Ice Hockey'
>>> print(favorite_sports)
{'Ralph Williams': 'Ice Hockey', 'Michael Tippett': 'Basketball', 'Frank Bridge': 'Rugby'}