一、注释
“#” (井号)为单行注释
“““xxx””” (三引号)为多行注释
二、字符串
字符串的定义
a='python'
b="python"
c="""python"""
以上三种方式都可以定义字符串
第三种定义方式如果没有变量接收那就是多行注释,并且和多行注释一样支持换行
如何在字符串中包含单双引号
在字符串内 包含双引号:
name = '"python"'
在字符串内 包含单引号:
name = "'python'"
使用转义字符 “" 解除引号的效用:
name = "\"python\""
name = '\'python\''
字符串的长度
len(str):返回字符串的长度
后面学容器依旧可以使用这个长度函数
字符串拼接
字符串的拼接和cpp相同,使用加号即可
字符串的格式化
方法一
name = "python"
message = "我要学%s" % name
print(message)
% 表示:我要占位
s 表示:将变量变成字符串放入占位的地方
需要加入非字符串的变量一样可以
python中,常见的数据类型占位有三种
| 符号 | 作用 |
|---|---|
| %s | 将内容转换成字符串,放入占位位置 |
| %d | 将内容转换成整数,放入占位位置 |
| %f | 将内容转换成浮点型,放入占位位置 |
例如:
name = "python"
day = 3
comp = 0.5
message = "学习%s%d天,已完成%f" % (name,day,comp)
方法二:
print(f"学习{name}{day}天,已完成{comp}")
但是这种格式化方式无法做精度控制
并且以上两种方式可以不用变量名,直接使用表达式也可以
如:message = “学习%s%d天,已完成%f” % (“python”,1+2,0.2+0.3)
三、分支语句
if-else:
if 条件表达式1:
语句块1
elif 条件表达式2:
语句块2
elif 条件表达式3:
语句块3
...
else:
语句块n
与c/c++类似,自行对比
match-case:
match 变量/表达式:
case 模式1:
语句块1
case 模式2:
语句块2
...
case _:
语句块n
与c/c++中的switch-case类似,自行对比
四、循环语句
while循环:
while 条件表达式:
循环体语句块
与c/c++的while用法相同
for循环:
此循环方式与c/c++略有不同,不宜跳过
for 变量 in 可迭代对象:
循环体语句块
可迭代对象包括:字符串、列表、元组、字典、集合、range()、文件等。
每次迭代将当前元素赋值给变量,自动遍历直到结束。
常用配合函数/方法
不宜跳过,too
range()函数 —— 生成数值序列
for i in range(5): # 0,1,2,3,4
for i in range(2, 8): # 2,3,4,5,6,7
for i in range(0, 10, 2): # 0,2,4,6,8
enumerate()函数 —— 同时获取索引和值
fruits = ['apple', 'banana', 'cherry']
for idx, fruit in enumerate(fruits):
print(idx, fruit)
该函数配合字典时使用较多
循环控制语句
| 语句 | 作用 |
|---|---|
| break | 立即终止整个循环,跳出循环体 |
| continue | 跳过本次循环剩余代码,进入下一次迭代 |
| pass | 空操作,占位符(语法上需要语句但什么都不做) |
五、函数
基本格式:
def 函数名(传入参数):
函数体
return 返回值
与c/c++的不同:
1.不需要写是否有返回值,更不需要写返回值的类型
2.传入参数只需要变量接收即可,不需要写参数的数据类型,其类型由调用函数时的实参决定
六、数据容器
本章共包含五个容器:列表(list) 元组(tuple) 字符串(str) 集合(set) 字典(dict)
列表(list)
特点:列表可以一次存储多个数据,并且可以为不同的数据类型,并支持嵌套
字面量
[a1, a2, ……]
定义变量
变量名称 = [a1, a2, ……]
定义空列表
变量名称 = []
变量名称 = list()
列表的索引
正向索引:与数组类似
反向索引:最后一个元素索引为-1,倒数第二个为-2,以此类推
嵌套列表的索引也和数组的索引类似
index()函数:
list.index(obj):在list列表中找到第一个值为obj的元素,并返回下标索引
修改元素:
list[pos] = obj:将下标为pos的元素更改为obj
插入元素:
list.insert(pos,obj):在list的下标为pos的位置插入元素obj
追加元素:
list.append(obj):在list列表的末尾加入元素obj
list.extend(container):在list列表的末尾加入容器container
删除元素:
del list[pos]:将list列表下标为pos的元素删掉
list.pop(pos):将list列表下标为pos的元素删掉,并返回别删除的元素
list.remove(obj):将list列表中第一个为obj的元素移出列表
清空列表:
list.clear():清空list列表
统计数量
list.count(obj):统计值为obj的元素数量,并返回数量的值
元组(tuple)
特点:元组一旦定义完成,就不可被修改
支持嵌套,可以嵌套其他数据容器
所以,当我们需要在程序中封装数据,又不希望数据别篡改,就适合使用元组
字面量
(a1, a2, ……)
定义变量
变量名称 = (a1, a2, ……)
注意:元组只有一个数据的情况下,这个数据的后面要添加逗号
eg:t = ("hello",)
如果我写t = ("hello"),则t的类型为str
定义空元组
变量名称 = ()
变量名称 = tuple()
元组的索引
元组的索引方式与列表完全一致
元组的基本操作
| 函数 | 作用 |
|---|---|
tuple.index(element) |
查找数据element,返回数据对应的下标 |
tuple.count(element) |
统计数据element在元组中出现的次数 |
len(tuple) |
统计元组tuple内的元素个数 |
元组的特殊情况
虽然元组不能被修改,但如果元组内嵌套了list,则可以修改该list里面的内容
eg:
t1 = (1, 2, ["songline", "nihao"])
t1[2][1] = "niubi"
print(t1) # 输出:(1, 2, ["songline", "niubi"])
字符串(str)
字符串是老朋友了,和c/c++类似的操作就不介绍了
但是注意:字符串也不支持修改内容,这是和c/c++不同的地方
字符串的替换
str.replace(str1,str) :将字符串str里面的str1字符串替换为str2。
但是,这个函数不是修改字符串本身,而是得到一个新的字符串
字符串的分割
str.split(str1) :str1作为分割字符串,将字符串划分为多个字符串,存入列表对象中
注意:字符串本身不变,而是得到了一个列表对象
eg:
mystr = "hello songline nihao"
mystr_list = mystr.split(" ")
print(mystr_list,type(mystr_list)) #输出:['hello', 'songline', 'nihao'] <class 'list'>
字符串的规整操作
去前后空格
str.strip() :将str前后的空格去除,返回新的字符串
eg:
mystr = " hello songline nihao "
mystr = mystr.strip()
print(mystr) #输出:hello songline nihao
去前后字符串
str.strip(str1) :将str前后出现在str1中的字符去掉,返回新的字符串
eg:
mystr = "132hello songline nihao231"
mystr = mystr.strip("123")
print(mystr) #输出:hello songline nihao
字符串出现的次数
str.count(str1) :返回str1在str中出现的次数
eg:
mystr = "hello songline nihao"
a = mystr.count("i")
print(a) #输出:2
字符串都学过,没什么好记的
预告:下一个内容:序列