1. 运算符
1.1 算术运算符
-
**概述:**python中用于执行基本数学运算的符号。
-
常用的算术运算符:
- 加(+):取两个数的和
- 减(-):取两个数的差
- 乘(*):取两个数的积
- 除(/):取两个数的商
- 整除(//):取两个数的整数商部分
- 取余(%):取余数部分
- 幂次运算(**)
-
特性:
- 除法运算的结果都是浮点型数据,即便是可以整除,结果也是浮点数
- 所有有浮点型数据参与运算的,结果都是浮点数
- 算术运算的优先级:** > * / // % > + -
- 不确定优先级的时候直接加括号来规定运算顺序
- 使用括号来确定优先级可以增强代码的可读性
-
代码示例:
# python中常用的算术运算符: # + 加 取两个数的和 print(5 + 3) # 8 # - 减 取两个数的差 print(5 - 3) # 2 # * 乘 取两个数的积 print(5 * 3) # 15 # / 除 取两个数的商 print(5 / 2) # 2.5 print(4 / 2) # 2.0 # // 整除 5 / 3 商 1 余 2 整除取的就是整数商部分 print(5 // 3) # 1 print(5.3 // 2) # 2.0 # % 取模/取余 5 / 3 商 1 余 2 取模取得是余数部分 print(5 % 3) # 2 print(5.3 % 3) # 2.3 # ** 幂次运算 print(5 ** 3) # 代表5的3次方 125 # 除法运算的结果是浮点型数据,所有有浮点数参与的运算,结果都是浮点型 # 算术运算符的优先级 # 测试后发现乘除和取余运算在连续运算时从左至右依次计算 print(5 // 2 * 2) # 4 print(5 * 3 // 2) # 7 print(5 % 2 * 2) # 2 print(5 * 3 % 2) # 1 # 幂次运算的优先级高于其他算术运算符 print(2 * 3 ** 2) # 18,先计算 3 ** 2 = 9,再计算 2 * 9 = 18
1.2 赋值运算符
-
**概述:**基本的赋值运算符就是=,作用是把等号右边的数据赋值给等号左边的变量。
-
**复合赋值运算符:**就是将算术运算符和赋值运算符连接在一起,在赋值之前先进行运算。
- +=:num += 3 等价于 num = num + 3
- -=:num -= 3 等价于 num = num - 3
- *=:num *= 3 等价于 num = num * 3
- /=:num /= 3 等价于 num = num / 3
- //=:num //= 3 等价于 num = num + 3
- %=:num %= 3 等价于 num = num + 3
- **=:num **= 3 等价于 num = num ** 3
-
特性:
- 等号左边只能是变量,等号右边可以是数据、表达式或已经被定义的变量
- 可以对同一个变量进行多次赋值,最终的结果是最后一次赋值的数据
- 可以使用连等给多个变量赋相同的值
- 可以使用逗号分隔一次性给多个变量赋值
-
注意:
- python没有自增自减运算符(如 i++、i–)
-
代码示例:
name = "刘亦菲" print(name) # 刘亦菲 actress = name print(actress) # 刘亦菲 total = 1 + 2 + 3 + 4 print(total) # 10 # 等号左边只能是变量,等号右边可以是数据、表达式或已经被定义的变量 # 以下代码会报错 # "欧阳锋" = name # 18 = age # 可以对同一个变量进行多次赋值,最终的结果是最后一次赋值的数据 name = "小龙女" print(name) # 小龙女 # 可以使用连等给多个变量赋相同的值 a = b = c = 1 print(a, b, c) # 1 1 1 # 可以使用逗号分隔一次性给多个变量赋值 name, age = "洪七公", 99 print(name, age) # 洪七公 99 # 复合赋值运算符 num = 9 num += 3 print(num) # 12 num -= 3 print(num) # 9 num *= 3 print(num) # 27 num /= 3 print(num) # 9.0 除法的结果是浮点数
1.3 比较运算符
-
**概述:**比较运算就是比较两个数值是否相等或者谁大谁小的运算符,运算符计算的结果是布尔类型数据
-
常用的比较运算符:== != > < >= <=
-
特性:
- 布尔类型在比较运算中,True为1,False为0
- <=和>=表示的是小于或等于 和 大于或等于,所以 3 >= 2,1 <= 2的结果都是True
- 如果数据类型不相同,除了(int float bool)之外,不能比较大小
- 如果数据类型不相同,除了(int float bool)之外,判断是否相等时不会报错,但是一定不相等
-
字符串之间比较大小的规则:
- 按照每个字符的编码从左到右进行逐一比较,如果有一个字符大则整体大,如果大小相同则继续比较下一位
- 字符串之间的大小和长短没有必然关系
- 规则:空格<数字<大写字母<小写字母<汉字,空格是最小的可见字符
- 我们一般不会使用字符串进行数字逻辑的比较,而是用于排序
- 空格是最小的字符
-
代码示例:
# 不能使用 = 判断相等 # print(1 = 2) # SyntaxError: expression cannot contain assignment, perhaps you meant "=="? print(1 == 2) # False print(1 == True) # True print(0 == False) # True print(2 == True) # False print(2 == False) # False print(1 != 2) # True print(1 != False) # True print('-' * 27) print(True > 0) # True print(True > 1) # False print(False < 0) # False print(False > 0) # False print(3 >= 2) # True print(1 <= 2) # True print(1 >= 1) # True # 如果数据类型不相同,除了(int float bool)之外,不能比较大小 # TypeError: '<' not supported between instances of 'int' and 'str' # print(1 < '2') # 如果数据类型不相同,除了(int float bool)之外,则判断是否相等时不会报错,但一定不相等 print(3 != '3') # True print(5 == '5') # False print('-' * 27) # 字符串之间的比较运算 print('1' > '2') # False print('15' < '18') # True print('19' > '5') # False print('A' > 'a') # False print("985" > "98k") # False print("abc" > "de") # False
1.4 逻辑运算符
-
**概述:**用于组合或者修改布尔表达式的值,常用于判断条件、循环控制等。
-
分类:
- 逻辑与(and):同真即真
- 逻辑或(or):同假即假
- 逻辑非(not):真假互换
-
代码示例:
# 逻辑运算符 # and 逻辑与,同真即真 print(True and True) # True print(False and True) # False print(True and False) # False print(False and False) # False print('-' * 27) # or 逻辑或,同假即假 print(True or True) # True print(True or False) # True print(False or True) # True print(False or False) # False print('-' * 27) # not 逻辑非,真假互换 print(not False) # True print(not True) # False
2. 流程控制语句
- 三大流程语句:
- 顺序语句:python中默认代码都是从上到下顺序执行的
- 分支语句:使用if进行构造,在同一条件下,只有一个分支的代码被执行
- 循环语句:使用for或while进行构造,在条件满足的情况下,重复执行相同或者相似的代码
2.1 顺序语句
-
**概述:**python中默认代码都是从上到下顺序执行的
-
代码示例:
print("hello world") print("hello python") print("I love python") """ 打印结果: hello world hello python I love python 代码永远都是从上到下依次执行的 """
2.2 分支语句
-
单条件分支语句
-
格式:
if 判断条件: 条件成立执行的代码块
-
注意:python中没有大括号控制分支范围,需要使用缩进进行标明,建议使用Tab键
-
-
对立条件分支语句
-
格式:
if 判断条件: 条件成立时执行的代码块 else: 条件不成立时执行的代码块
-
注意:同一条件下,if控制的代码块和else控制的代码块必有一个被执行,而且只能有一个被执行
-
-
多条件分支语句
-
格式:
if 条件1: 条件1成立时执行的代码 elif 条件2: 条件2成立时执行的代码 elif 条件3: 条件3成立时执行的代码 .... else: 上述条件均不成立时执行的代码
-
注意:
- 该分支语句有多个elif,每个elif控制一个要执行的代码块,条件成立时执行该分支控制的代码块
- 条件从上到下依次判断,当一个条件成立后,将不会继续判断后续条件,直接执行分支代码块后结束
- 同一个条件下只有一个分支中的代码会被执行
- 当所有条件均不满足时,执行else中的代码,else可有可无
-
-
分支语句的嵌套:
-
格式:
if 外层条件语句: 外层条件成立时执行的代码块 if 内层条件语句: 内层条件成立时执行的代码块 else: 外层条件不成立时执行的代码块 if 内层条件语句: 内层条件成立时执行的代码块
-
-
代码示例:
# 单条件分支 # 需求: 判断年龄是否大于等于18岁,如果大于等于18岁则可以进入网吧网游戏 age = int(input("请输入您的年龄: ")) if age >= 18: print("可以进入网吧玩游戏!") print("准备团战") # 对立条件分支 age = int(input("请输入您的年龄: ")) if age >= 18: print("可以进入网吧玩游戏!") print("准备团战") else: print("回去看喜羊羊吧!") # 多条件分支 score = int(input("请输入您的考试成绩: ")) if score > 100 or score < 0: print("数据异常,请重新输入!") elif score >= 90: print("优秀") elif score >= 80: print("良好") elif score >= 60: print("及格") else: print("不及格") # 分支语句嵌套 # 情节描述:上公交车,并且可以有座位坐下 # 要求:输入公交卡当前的余额,只要超过2元,就可以上公交车;如果车上有空座位,就可以坐下。 money = 3 seat = True # 判断公交卡余额是否大于等于2元 if money >= 2: print("赶紧上车吧") # 当上车之后就可以判断是否有座了 if seat: print("赶紧坐下,车要开了") else: print("抓紧扶好,要飙车了") else: print("穷鬼,跟着车跑吧,不费油")
-
三目运算符:
-
概述:
- 如果一个数据参与运算就是单目:not False
- 如果两个数据参与运算就是双目:1 + 2
- 三目运算:三个数据参与运算
-
格式:条件成立时的到的结果 if 条件 else 条件不成立时得到的结果
-
代码示例:
# 需求: 有两个变量 a 和 b 打印a 和 b 中 较大的值 a = 19 b = 26 print(a if a > b else b) # 三目运算符的结果可以复制给变量 res = a if a > b else b print(res)
-
2.3 循环语句
-
while循环语句
-
格式:
while 判断条件: 判断条件成立循环执行的代码1 判断条件成立循环执行的代码2
-
代码示例:
# 打印1-5 i = 1 while i <= 5: print(i) i = i + 1 # 一定要更新循环变量
-
注意:
- while循环可以嵌套使用
- 进行循环嵌套时,内外层循环变量名称不能相同
- 一定不要忘记更新循环变量,避免死循环
- while循环一般用于构造有特定结束条件的循环或死循环
-
-
for循环语句
-
概述:for循环也是循环结构的一种,一般和容器类型搭配使用
-
格式:
for 临时变量 in 容器类型数据: 循环体
-
注意:
- 循环次数和容器的长度相关
- 一般遍历容器使用for循环,根据条件循环使用while
- 构建死循环一般都使用while True
-
range函数:
- range函数就是一个范围函数,内部是根据特定规则生成的整数序列
- 格式:range(起始位置, 终止位置, 步长)
- 注意:
- range函数的范围是一个左闭右开区间,即包含起始位置,不含终止位置
- range的步长可以省略,省略后默认步长为1
- range的起始位置可以省略,省略后默认从0开始
- range中的参数只能使用整数
-
代码示例:
# 打印从 1-9 的数字 for i in range(10): print(i) # 打印 1-9 的数字累加和 sum_num = 0 for i in range(1, 10): sum_num += i print(sum_num) # 打印 1-9 的偶数数字累加和 sum_even = 0 for i in range(2, 10, 2): sum_even += i print(sum_even) # 打印99乘法表 for i in range(1, 10): for j in range(1, i + 1): print(f"{j} × {i} = {j * i}", end='\t') print()
-
-
循环控制语句
-
break:用于终止循环,即执行了break之后循环不再执行,直接执行循环后面的代码
-
continue:用于结束本次循环中未执行的内容,直接进入下一次循环
-
注意:
- 在while循环中,如果使用循环变量控制循环的执行,必须在使用continue之前更新循环变量,否则会造成死循环
- break和continue只能控制当前所在的循环,如果在内层循环就控制内层循环的结束和跳过,如果在外层就控制外层循环的结束和跳过
- break和continue只能用在循环体中,否则报错
-
代码示例:
# 判断一个数是否是质数,当找到一个因子的时候就说明不是质数,退出循环 num = 9527 i = 2 while True: if num % i == 0: print(f"{num}存在因子{i},所以不是质数") break i += 1 # 求 1-100 之间不能被3或7整除的数字之和 sum_num = 0 for i in range(1, 101): if i % 3 == 0 or i % 7 == 0: continue sum_num += i print(sum_num) # 下述代码会造成死循环,因为第一次满足if条件之后,continue结束本次循环,导致i没有被更新,于是会一直满足if条件,一直循环 sum_num, i = 0, 1 while i <= 100: if i % 3 == 0 or i % 7 == 0: continue sum_num += i i += 1 print(sum_num)
-
-
循环中的else
-
格式:
while 条件: 循环体 else: 代码块 # 当循环条件不满足时,执行else中的代码 for 临时变量 in 容器类型: 循环体 else: 代码块 # 当容器类型中的元素遍历完后执行else中的代码
-
注意:
- 当循环异常终止时,else中的代码将不会被执行
- 执行break结束循环,属于循环的异常终止,不会执行else
- continue不会造成循环异常终止,else中的代码会被执行
-
代码示例:
# 循环中的else num = 19 i = 2 while i < num: if num % i == 0: print(f"{num}存在因子{i},所以不是质数") break i += 1 else: print(f"{num}是素数")
-