本文大部分内容参考书籍《Python 编程:从入门到实践(第 3 版)》。干货为主,主要为复习用
1 运行程序
比如下面的例子 message.py \texttt{message.py} message.py :
1 2 message = "Hello Python world!" print (message)
,在菜单栏运行如下指令:
。
2 字符串
2.1 内置大小写函数
观察下面的程序 \texttt{name_cases.py}:
1 2 3 4 5 6 7 name = "EriC" print (name.lower())print (name.upper())print (name.title())print (name)
,输出:
。说明这三个函数分别的作用是:
.lower() \text{.lower()} .lower() :将字符串全部转为小写,返回临时副本。
.upper() \text{.upper()} .upper() :将字符串全部转为大写,返回临时副本。
.title() \text{.title()} .title() :将字符串转为首字母大写,其余小写,返回临时副本。
注意:这三个内嵌函数全部为临时副本 ,即输出不会改变原字符串内容。
下文的函数非临时副本,会特别说明。
2.2 f 字符串
f 字符串 可在一个字符串中插入变量的值。如下面的例子 \texttt{full_name.py}:
1 2 3 4 first_name = "Sakura" last_name = "Nagumo" full_name = f"{first_name} {last_name} " print (full_name)
。f 字符串在一个字符串中插入变量时,在左引号前加入字母 f,然后在对应位置加入 {变量名}。此程序输出的结果为 Sakura Nagumo。
2.3 删除空白与前后缀
.lstrip() \text{.lstrip()} .lstrip() :删除字符串左段空白,返回临时副本。
.rstrip() \text{.rstrip()} .rstrip() :删除字符串右段空白,返回临时副本。
.strip() \text{.strip()} .strip() :删除字符串左右 段空白,返回临时副本。
.removeprefix(S) \text{.removeprefix(S)} .removeprefix(S) :删除为 S \text{S} S 的前缀,返回临时副本。
.removesuffix(S) \text{.removesuffix(S)} .removesuffix(S) :删除为 S \text{S} S 的后缀,返回临时副本。
3 列表
3.1 修改、添加和删除元素
A[idx] = v \text{A[idx] = v} A[idx] = v :将列表 A \text{A} A 下标为 i d x idx i d x 的元素值永久性修改 为值 v v v 。
A.append(v) \text{A.append(v)} A.append(v) :将元素 v v v 永久性添加 到列表 A \text{A} A 的末尾,不改变其他元素值。
A.insert(idx, v) \text{A.insert(idx, v)} A.insert(idx, v) :将元素 v v v 永久性添加 到列表 A \text{A} A 下标 i d x idx i d x 处。
del A[idx] \text{del A[idx]} del A[idx] :永久性删除 列表 A \text{A} A 下标为 i d x idx i d x 的元素。
A.pop([idx]) \text{A.pop([idx])} A.pop([idx]) :永久性删除 列表 A \text{A} A 下标为 i d x idx i d x 的元素(i d x idx i d x 没填默认为 − 1 -1 − 1 ),并返回被删除元素值。
A.remove(val) \text{A.remove(val)} A.remove(val) :永久性删除 列表 A \text{A} A 值为 v a l val v a l 的第一个元素。
3.2 管理列表
A.sort() \text{A.sort()} A.sort() :对列表 A \text{A} A 的元素进行从小到大永久性排序 。
A.sort(reverse=True) \text{A.sort(reverse=True)} A.sort(reverse=True) :对列表 A \text{A} A 的元素进行从大到小永久性排序 。
sorted(A) \text{sorted(A)} sorted(A) :对列表 A \text{A} A 的元素进行从小到大排序,返回临时副本。
A.reverse() \text{A.reverse()} A.reverse() :永久性翻转 列表 A \text{A} A 的所有元素。
len(A) \text{len(A)} len(A) :返回列表 A \text{A} A 的长度。
3.3 遍历列表
我们可以用 for 语句去循环遍历列表。观察下面的例子 magicians.py \texttt{magicians.py} magicians.py :
1 2 3 4 5 6 magicians = ['alice' , 'david' , 'carolina' ] for magician in magicians: print (f"Such a great play!{magician.title()} you did!" ) print (f"Thanks for {magician.title()} 's play." ) print ("The play is off." )
。将会输出:
1 2 3 4 5 6 7 Such a great play!Alice you did! Thanks for Alice's play. Such a great play!David you did! Thanks for David' s play.Such a great play!Carolina you did! Thanks for Carolina's play. The play is off.
。
注意点
for 语句后面记得加 :。
注意缩进,该缩进的缩进,不该缩进的不要缩进。可以通过空行大致规避问题。
3.4 数值列表
可以用 for value in range(start,end,step) 构造一个从 start 开始,步长为 step,小于 end 的数值列表。观察下面的例子 \texttt{numbers_square.py}:
1 2 for value in range (1 , 11 , 2 ): print (value ** 2 )
。表示从 1 1 1 开始,步长为 2 2 2 ,小于 11 11 11 的数值列表的平方。将会输出:
。list() \text{list()} list() 函数嵌套 range() \text{range()} range() 函数能够直接创建 出一个数值列表。观察下面的例子 list.py \texttt{list.py} list.py :
1 2 digits = list (range (1 ,6 )) print (digits)
。表示创建一个 [ 1 , 6 ) [1,6) [ 1 , 6 ) 的列表。将会输出:
。关于列表的简单统计,还有下列几个比较实用的函数:
min(digits) \text{min(digits)} min(digits) :表示求出数值列表 digits \text{digits} digits 的最小 值。
max(digits) \text{max(digits)} max(digits) :表示求出数值列表 digits \text{digits} digits 的最大 值。
sum(digits) \text{sum(digits)} sum(digits) :表示求出数值列表 digits \text{digits} digits 的总和 。
列表推导式能让原本需要三四行的循环代码压缩为一行。观察下面的例子 squares.py \texttt{squares.py} squares.py :
1 2 squares = [value ** 2 for value in range (1 , 11 )] print (squares)
。表示 [ 1 , 11 ) [1,11) [ 1 , 11 ) 区间内所有数的平方。将会输出:
1 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
。
3.5 切片
A[start:end] \text{A[start:end]} A[start:end] :表示列表 A \text{A} A 的 [ s t a r t , e n d ) [start,end) [ s t a r t , e n d ) 区间的切片。
s t a r t , e n d start,end s t a r t , e n d 均可以为空 ,即表示左、右端没有限制。
复制切片时,一定 要类似 A = B[:] \text{A = B[:]} A = B[:] ,没有 [:] \text{[:]} [:] 会复制指针,即 A,B \text{A,B} A,B 的值会同时改变。
3.6 元组
元组(tuple)相对于列表的单一元素是不可变的,且表示时用的是圆括号而不是方括号。但是可以整体改变元组的所有元素。观察下面的例子 tuple.py \texttt{tuple.py} tuple.py
1 2 3 4 5 dir = (1 , 2 , -1 , -2 )print (dir )dir = (1 , -1 )print (f"After update is {dir } " )
。会输出:
1 2 (1, 2, -1, -2) After update is (1, -1)
。
4 if 语句
4.1 条件测试
检查是否相等 / 不等,使用下列代码块:
1 2 3 4 5 6 7 8 9 10 11 >>> name = 'Rosabel' >>> name == 'Rosabel' True >>> name == 'Yuzimy' False >>> name.lower() == 'rosabel' True >>> name.upper() == 'YUZIMY' False >>> name.upper() != 'ROSABEL' False
。使用 <,<=,>,>=,==,!= 分别表示小于、小于等于、大于、大于等于、等于、不等于。
使用 and \text{and} and 和 or \text{or} or 分别表示逻辑与和逻辑或:
1 2 3 4 5 6 7 8 9 10 11 12 >>> age_0 = 22 >>> age_1 = 18 >>> age_0 >= 21 and age_1 >= 21 False >>> age_1 = 22 >>> age_0 >= 21 and age_1 >= 21 True >>> age_1 = 18 >>> age_0 >= 21 or age_1 >= 21 True >>> age_0 = 18 >>> age_0 >= 21 or age_1 >= 21
。检查特定的值是否(不)在列表里,观察下面的例子 \texttt{if_list.py}:
1 2 3 4 5 6 A = [1 , 3 , 5 , 7 ] if 3 in A: print ("A includes 3" ) if 2 not in A: print ("A doesn't include 2" )
。分别判断 3 3 3 是否在列表 A \text{A} A 里和 2 2 2 是否不在列表 A \text{A} A 里。两个判断均成立。输出:
1 2 A includes 3 A doesn't include 2
。
4.2 if 语句
观察下面的例子 if.py \texttt{if.py} if.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 A = [1 , 3 , 5 , 7 ] if 2 in A: print (2 ) elif 4 in A: print (4 ) elif 6 not in A: print ("6 not in A" ) else : print ("Another case" ) A[2 ] = 6 if 2 in A: print (2 ) elif 4 in A: print (4 ) elif 6 not in A: print ("6 not in A" ) else : print ("Another case" )
。其中 else \text{else} else 的部分可以被省略。输出:
。
5 字典
大体与 C++ 里的 map \text{map} map 没什么区别,但是增加了很多拓展性强的功能。
5.1 使用字典
观察下面的例子 dictionary.py \texttt{dictionary.py} dictionary.py :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Rosabel = { 'Name' : "Nagumo Sakura" , 'Age' : 17 } print (Rosabel)print (Rosabel['Age' ]) Rosabel['Gender' ] = 'Female' print (Rosabel)Rosabel['Age' ] += 1 print (Rosabel)del Rosabel['Name' ] print (Rosabel)Rosabel_name = Rosabel.get('Name' , "The infomation is hidden" ) print (Rosabel_name)
。输出:
1 2 3 4 5 6 {'Name' : 'Nagumo Sakura' , 'Age' : 17} 17 {'Name' : 'Nagumo Sakura' , 'Age' : 17, 'Gender' : 'Female' } {'Name' : 'Nagumo Sakura' , 'Age' : 18, 'Gender' : 'Female' } {'Age' : 18, 'Gender' : 'Female' } The infomation is hidden
。
5.2 遍历字典
观察下面的例子 dictionary2.py \texttt{dictionary2.py} dictionary2.py :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Rosabel = { 'Name' : 'Rosabel' , 'Age' : 18 , 'Nickname' : 'Yuzimy' , 'Point' : 18 , } for key, value in Rosabel.items(): print (f"Message: {key} is {value} " ) for key in Rosabel.keys(): print (f"Key {key} " ) for key in sorted (Rosabel.keys()): print (f"Sorted key {key} " ) for value in Rosabel.values(): print (f"Value {value} " ) for value in set (Rosabel.values()): print (f"Unique value {value} " )
。输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Message: Name is Rosabel Message: Age is 18 Message: Nickname is Yuzimy Message: Point is 18 Key Name Key Age Key Nickname Key Point Sorted key Age Sorted key Name Sorted key Nickname Sorted key Point Value Rosabel Value 18 Value Yuzimy Value 18 Unique value Yuzimy Unique value 18 Unique value Rosabel
。