语法规范
1 | print absolute value of an integer: |
- 以 “#” 开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。
- 其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。
- 按照约定俗成的惯例,应该始终坚持使用4个空格的缩进。
- Python程序是大小写敏感的,如果写错了大小写,程序会报错。
变量
变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,比如:
1 | a = 1 |
整数
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。
对于很大的数,例如10000000000,很难数清楚0的个数。Python允许在数字中间以_分隔,因此,写成10_000_000_000和10000000000是完全一样的。
浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。
浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
字符串
字符串是以单引号’或双引号”括起来的任意文本,比如’abc’,”xyz”等等。
如果字符串内部既包含’又包含”怎么办?可以用转义字符\来标识,比如:
1 | \"OK\"!' |
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看:
1 | print('I\'m ok.') |
如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r’’表示’’内部的字符串默认不转义,可以自己试试:
1 | print('\\\t\\') |
如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用’’’…’’’的格式表示多行内容,可以自己试试:
1 | >>> print('''line1 |
布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False。
1 | True |
空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
占位符
如何输出格式化的字符串。我们经常会输出类似’亲爱的xxx你好!你xx月的话费是xx,余额是xx’之类的字符串,而xxx的内容都是根据变量变化的。
%运算符就是用来格式化字符串的。
在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
1
2% (3, 1))
% 3.1415926)format()
另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:
1
2'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
小明, 成绩提升了 17.1%'f-string
最后一种格式化字符串的方法是使用以f开头的字符串,称之为f-string,它和普通字符串不同之处在于,字符串如果包含{xxx},就会以对应的变量替换:
1
2
3
4r = 2.5
s = 3.14 * r ** 2
print(f'The area of a circle with radius {r} is {s:.2f}')
The area of a circle with radius 2.5 is 19.62数据结构
列表
Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
1 | classmates = ['Michael', 'Bob', 'Tracy'] |
list元素可以不同,也可以是另一个list。
1 | L = ['Apple', 123, True] |
可以使用 list() 构造函数创建一个新列表。
1 | thislist = list(("apple", "banana", "cherry")) # 请注意双括号 |
Python 有一组可以在列表上使用的内建方法。
方法 | 描述 |
---|---|
append() | 在列表的末尾添加一个元素 |
clear() | 删除列表中的所有元素 |
copy() | 返回列表的副本 |
count() | 返回具有指定值的元素数量。 |
extend() | 将列表元素(或任何可迭代的元素)添加到当前列表的末尾 |
index() | 返回具有指定值的第一个元素的索引 |
insert() | 在指定位置添加元素 |
pop() | 删除指定位置的元素 |
remove() | 删除具有指定值的项目 |
reverse() | 颠倒列表的顺序 |
sort() | 对列表进行排序 |
元组
不可变的list,一旦定义完成,不可增删改,可以通过索引获取。
1 | classmates = ('Michael', 'Bob', 'Tracy') |
因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
字典
Dictionary字典是一个无序、可变和有索引的集合。键值对的储存方式,有点像Map。
1 | thisdict = { |
可以使用 dict() 构造函数创建新的字典:
1 | thisdict = dict(brand="Porsche", model="911", year=1963) |
Python 提供一组可以在字典上使用的内建方法。
方法 | 描述 |
---|---|
clear() | 删除字典中的所有元素 |
copy() | 返回字典的副本 |
fromkeys() | 返回拥有指定键和值的字典 |
get() | 返回指定键的值 |
items() | 返回包含每个键值对的元组的列表 |
keys() | 返回包含字典键的列表 |
pop() | 删除拥有指定键的元素 |
popitem() | 删除最后插入的键值对 |
setdefault() | 返回指定键的值。如果该键不存在,则插入具有指定值的键。 |
update() | 使用指定的键值对字典进行更新 |
values() | 返回字典中所有值的列表 |
集合
Set集合是无序和无索引的集合。在 Python 中,集合用花括号编写。
1 | thisset = {"apple", "banana", "cherry"} |
可以使用 set() 构造函数来创建集合。
1 | thisset = set(("apple", "banana", "cherry")) 请留意这个双括号 |
Python 拥有一套能够在集合(set)上使用的内建方法。
方法 | 描述 |
---|---|
add() | 向集合添加元素。 |
clear() | 删除集合中的所有元素。 |
copy() | 返回集合的副本。 |
difference() | 返回包含两个或更多集合之间差异的集合。 |
difference_update() | 删除此集合中也包含在另一个指定集合中的项目。 |
discard() | 删除指定项目。 |
intersection() | 返回为两个其他集合的交集的集合。 |
intersection_update() | 删除此集合中不存在于其他指定集合中的项目。 |
isdisjoint() | 返回两个集合是否有交集。 |
issubset() | 返回另一个集合是否包含此集合。 |
issuperset() | 返回此集合是否包含另一个集合。 |
pop() | 从集合中删除一个元素。 |
remove() | 删除指定元素。 |
symmetric_difference() | 返回具有两组集合的对称差集的集合。 |
symmetric_difference_update() | 插入此集合和另一个集合的对称差集。 |
union() | 返回包含集合并集的集合。 |
update() | 用此集合和其他集合的并集来更新集合。 |
运算符
算术运算符
算术运算符与数值一起使用来执行常见的数学运算:
运算符 | 名称 | 实例 |
---|---|---|
+ | 加 | x + y |
- | 减 | x - y |
* | 乘 | x * y |
/ | 除 | x / y |
% | 取模 | x % y |
** | 幂 | x ** y |
// | 地板除(取整除) | x // y |
赋值运算符
赋值运算符用于为变量赋值:
运算符 | 实例 |
---|---|
= | x = 5 |
+= | x += 3 |
-= | x -= 3 |
*= | x *= 3 |
/= | x /= 3 |
%= | x %= 3 |
//= | x //= 3 |
**= | x **= 3 |
&= | x &= 3 |
^= | x ^= 3 |
>>= | x >>= 3 |
<<= | x <<= 3 |
比较运算符
比较运算符用于比较两个值:
运算符 | 名称 | 实例 |
---|---|---|
== | 等于 | x == y |
!= | 不等于 | x != y |
> | 大于 | x > y |
< | 小于 | x < y |
>= | 大于或等于 | x >= y |
<= | 小于或等于 | x <= y |
逻辑运算符
逻辑运算符用于组合条件语句:
运算符 | 描述 | 实例 |
---|---|---|
and | 如果两个语句都为真,则返回 True。 | x > 3 and x < 10 |
or | 如果其中一个语句为真,则返回 True。 | x > 3 or x < 4 |
not | 反转结果,如果结果为 true,则返回 False | not (x > 3 and x < 10) |
身份运算符
身份运算符用于比较对象,不是比较它们是否相等,但如果它们实际上是同一个对象,则具有相同的内存位置:
运算符 | 描述 | 实例 |
---|---|---|
is | 如果两个变量是同一个对象,则返回 true。 | x is y |
is not | 如果两个变量不是同一个对象,则返回 true。 | x is not y |
成员运算符
成员资格运算符用于测试序列是否在对象中出现:
运算符 | 描述 | 实例 |
---|---|---|
in | 如果对象中存在具有指定值的序列,则返回 True。 | x in y |
not in | 如果对象中不存在具有指定值的序列,则返回 True。 | x not in y |
位运算符
位运算符用于比较(二进制)数字:
运算符 | 描述 | 实例 |
---|---|---|
& | AND | 如果两个位均为 1,则将每个位设为 1。 |
OR | ||
^ | XOR | 如果两个位中只有一位为 1,则将每个位设为 1。 |
~ | NOT | 反转所有位。 |
<< | Zero fill left shift | 通过从右侧推入零来向左移动,推掉最左边的位。 |
>> | Signed right shift | 通过从左侧推入最左边的位的副本向右移动,推掉最右边的位。 |
表达式
if else
语法规范:
1 | a = 200 |
if 语句不能为空,但是如果您处于某种原因写了无内容的 if 语句,请使用 pass 语句来避免错误。
1 | a = 66 |
while
如果使用 while 循环,只要条件为真,我们就可以执行一组语句。
1 | i = 1 |
break 语句:
1 | i = 1 |
continue 语句
1 | i = 0 |
else 语句
通过使用 else 语句,当条件不再成立时,我们可以运行一次代码块:
1 | i = 1 |
for
for 循环用于迭代序列(即列表,元组,字典,集合或字符串)。
1 | fruits = ["apple", "banana", "cherry"] |
for 循环中的 else 关键字指定循环结束时要执行的代码块:
1 | for x in range(10): |
Try Except
try 块允许您测试代码块以查找错误。
except 块允许您处理错误。
finally 块允许您执行代码,无论 try 和 except 块的结果如何。
1 | try: |
您可以选择在条件发生时抛出异常。
如需抛出(引发)异常,请使用 raise 关键词。
1 | x = -1 |
读取输入
Python 允许命令行输入。
这意味着我们能够要求用户输入。
Python 3.6 中的方法与 Python 2.7 略有不同。
Python 3.6 使用 input() 方法。
Python 2.7 使用 raw_input() 方法。
1 | your name:") |