基本数据类型
Python 基础快速过一遍:数字、布尔值、字符串与列表的自求值特性、常用运算和切片操作。
基础知识
作为有经验的程序员,我们会快速过完基础部分,好让你尽快上手。但开始之前,先立几条规矩:
- Python 区分大小写
- Python 代码用空格或制表符(tab)的缩进来组织代码结构
- 空格和制表符不能混用,选定一种就坚持用下去(推荐空格)
- 如果你用 Sublime,请在 View > Indentation 菜单中勾选 “Indentation Using Spaces”
- 如果遇到报错,可以在 View > Indentation 菜单中尝试把所有缩进转换成空格,并仔细检查你的缩进
- 括号可以用来明确求值顺序(和数学里一样)
- (1 + 2) * 3
#会把它所在的同一行中之后的内容全部变成注释
数学与数字
数字是自求值(self-evaluating)的(会返回自身)。数值运算可以作用于数字、持有数值的变量,以及返回数值的表达式。下面是 Python 大多数内置数值运算的速查表。欢迎把这些表达式直接敲进 Python 解释器,看看运行结果。
| 运算 | 表达式 | 结果 |
|---|---|---|
| 加法 | 1 + 2 + 3 | 6 |
| 减法 | 7 - 1 | 6 |
| 乘法 | 2 * 3 | 6 |
| 除法(浮点) | 5 / 2 | 2.5 |
| 整除 | 5 // 2 | 2 |
| 取模(余数) | 5 % 2 | 1 |
| 小于 | 5 < 7 | True |
| 大于 | 5 > 7 | False |
| 判断相等 | 5 == 5 | True |
| 小于等于 | 5 <= 2 | False |
| 大于等于 | 5 >= 2 | True |
布尔值
布尔值(boolean)用 True 和 False 表示。布尔值同样是自求值的(会返回自身)。下面这些运算返回布尔值;当它们与其他数据类型配合使用时,会把非 False 的值都当作真(任何不是 False 的东西都是真)。
| 运算 | 表达式 | 结果 |
|---|---|---|
| 真 | True | True |
| 假 | False | False |
| not | not True | False |
| and | 1 and True | True |
| or | False or not True | False |
字符串
字符串(string)是另一种自求值的数据类型。它由一对匹配的引号之间的一串字符构成(单引号、双引号都可以,但同一个字符串里不能混用)。开始和结束引号之间的字符不会被求值,所以字符串里可以放引号字符,只要不和开头结尾的引号匹配就行:
>>> "hello"
'hello'
>>> 'hello'
'hello'
>>> "hello my name is 'Sally'"
"hello my name is 'Sally'"
>>> 'hello my name is "Sally"'
'hello my name is "Sally"'
笔记
作业题 1:调皮字符串
在字符串中错误地使用引号时,会返回什么错误信息?
请给出一个例子,并解释该错误信息。
下面是一些作用于字符串或返回字符串的常用操作:
| 运算 | 表达式 | 结果 | 说明 |
|---|---|---|---|
| 打印 | print(“hello”) | 输出到屏幕 | 对数字同样有效 |
| 索引 | “hello”[0] | ‘h’ | 从 0 开始编号 |
| 索引 | “hello”[-1] | ‘o’ | 也可以是负数 |
| 切片 | “hello”[1] | ‘el’ | 包含起始位置; 不包含结束位置 |
| 切片 | “hello”[1:] | ‘ello’ | 结束位置默认为字符串长度; 只省略后一个数 |
| 切片 | “hello”[:-1] | ‘hell’ | 起始位置默认为 0; 只省略前一个数 |
| 拼接 | “hello” + ” world” | ‘hello world’ | 不能与数字拼接; 会创建一个新字符串! |
| 转换 | str(1) | ‘1’ | 用于拼接数字和字符串 |
| 重复 | “hello” * 3 | ‘hellohellohello’ | |
| 包含 | ‘h’ in “hello” | True | |
| 取长度 | len(“hello”) | 4 |
列表
列表(list)和字符串很像!字符串就是字符的列表,只是出于抽象的考虑,我们把两者区分开来。使用字符串和列表时,不要越过数据抽象的界限,但可以借助它们的相似之处,把理解一方的思路套用到另一方。(一大区别是:字符串的元素不能修改,列表的元素却可以。)
不出所料……列表也是自求值的!列表用方括号括住一串逗号分隔的元素来声明。和字符串一样,用索引来访问列表中的值(索引从 0 开始)。
>>> test_list = ["this", "is", "a", "list", 1 , 2 , 3]
>>> test_list
['this', 'is', 'a', 'list', 1 , 2 , 3]
>>> test_list[3]
'list'
- 第 1 行:创建一个列表,赋值给变量
test_list - 第 2 行:查看变量
test_list的内容 - 第 3 行:返回
['this', 'is', 'a', 'list', 1, 2, 3](我们创建的列表!) - 第 4 行:取出列表的第四个元素(索引 = 3)
- 第 5 行:返回
'list'(第四个元素)
下面再奉上一份列表索引与操作速查表!
下面这张表中,假设 x = [“this”, “is”, “a”, “list”]
| 运算 | 表达式 | 结果 | 说明 |
|---|---|---|---|
| 打印 | print([1,2,3]) | 输出到屏幕 | 对数字和字符串同样有效 |
| 索引 | x[0] | ‘this’ | 从 0 开始编号 |
| 索引 | x[-1] | ‘list’ | 也可以是负数 |
| 切片 | x[1] | [‘is’, ‘a’] | 包含起始位置; 不包含结束位置 |
| 切片 | x[1:] | [‘is’, ‘a’, ‘list’] | 结束位置默认为列表长度; 只省略后一个数 |
| 切片 | x[:-1] | [‘this’, ‘is’, ‘a’] | 起始位置默认为 0; 只省略前一个数 |
| 拼接 | [1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | |
| 拼接 | >>> x = [1, 2, 3] >>> x += [4, 5, 6] >>> x | [1, 2, 3, 4, 5, 6] | |
| 重复 | [‘Hi!’] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | |
| 包含 | 3 in [1, 2, 3] | True | |
| 迭代 (控制流一节会细讲!) | for i in [1, 2, 3]: print(i) | 1 2 3 | |
| 取长度 | len([1, 2, 3]) | 3 |
笔记
作业题 2:水果和蔬菜
x = ["apple", "banana", "carrot"]
写一行代码,执行后返回 “apples bananas and carrots”。