Skip to content

Python 的基本运算

运算就是用值来做各种变化的游戏,例如 1 + 1 得到 2,其中 + 是加法的运算符

!class: warning Python 的所有运算符都是英文字符,输入法自动输入中文符号是新手常见的错误,请注意区分。

关于运算符,请参考 Python 官方文档 - 运算符

赋值运算符

Python 使用 = 作为赋值运算符,用于修改变量的值,而非数学中的“等于”。
此外还还可以使用 count += 1 作为 count = count + 1 的简写,其中 + 可以替换为任意算术运算符。

python
count:int = 0    # 创建变量 count,值为 0
print(count)

count = 4        # 将 count 的值修改为 4
print(count)

count += 3       # 将 count 的值修改为 count + 3
print(count)

动态类型

Python 中变量创建后可以给他赋值其它类型的的值:

python
age_of_yukari:int = 17      # 类型为 int
age_of_yukari = "17"        # 类型为 str

但是建议 不要修改变量的类型

海象运算符

海象运算符(:=)是一种特殊的赋值运算符,它不能直接用于给变量赋值,只能在表达式内赋值。例如:

python
x:int = 0
y:int = 0
sum_squares:int = x**2 + y**2

# 传统做法
x = 5
y = 10
sum_squares = x**2 + y**2

# 使用海象运算符
sum_squares = (x := 5)**2 + (y := 10)**2

并且,赋值运算符(=)没有返回值,无法作为 ifwhile 等控制块的条件,而海象运算符(:=)可以。

!class: warning 使用海象运算符(:=)需要 Python 版本 $\geq$ 3.8

算术运算符

运算符名称示例结果说明
+加法运算符3 + 57
-减法运算符5 - 32
*乘法运算符5 * 315
/除法运算符5 / 22.5无论能否整除,结果类型都是浮点型
//整除运算符5 // 2 2结果向下取整,如果被除数和除数都是整型,则结果为整型,否则结果为浮点型
%取余运算符5 % 215 除以 2,得 2 余 1
**乘方运算符5 ** 2255 的 2 次方

比较运算符

用于比较两个值的关系,结果为布尔类型。

运算符名称示例结果
==等于运算符3 == 5False
!=不等于运算符3 != 5True
>大于运算符5 > 3True
<小于运算符5 < 2False
>=大于或等于运算符5 >= 5 True
<=小于或等于运算符5 <= 2False

逻辑运算符

用于组合多个布尔值。

运算符名称示例结果说明
and逻辑与运算符True and FalseFalse全部为 True 时结果为 True,否则结果为 False
or逻辑或运算符True or FalseTrue全部为 False 时结果为 False,否则结果为 True
not逻辑非运算符not FalseTrue将一个布尔值反转

位运算符

位运算用于对整数进行二进制操作。

运算符名称示例结果说明
&位与运算符0b1100 & 0b01100b0100按二进制位进行计算,两个数在某一位上都是 1,则结果在该位为 1,否则结果在该位为 0
|位或运算符0b1100 | 0b01100b1110按二进制位进行计算,两个数在某一位上都是 0,则结果在该位为 0,否则结果在该位为 1
^异或运算符0b1100 ^ 0b01100b1010二进制中不同的位结果为 1,相同的位结果位 0
<<左移运算符0b0011 << 20b1100二进制位向左移动,右侧补 0
>>右移运算符0b1100 >> 10b0110二进制位向右移动,左侧补 0
~取反运算符~0b11000b0011二进制位取反,即 1 变为 00 变为 1

优先级

运算符存在优先级,和数学一样先乘除,后加减。例如 $3 + 5 * 2$ 结果为 $13$。
括号为最高优先级,可以使用括号改变计算顺序。例如 $(3 + 5) * 2$ 结果为 $16$。

下表为优先级列表,优先级由高到低:

!class:info 没有必要全部记住,大部分符合直觉,拿不准时请使用括号。 部分运算符目前还没有学习,请暂时放下,将在后面的章节中学习。

参考:Python 官方文档

运算符说明优先级
(exp), [exp], {exp}括号表达式最高
arr[i], arr[i:j], func(args), obj.attr索引,切片,调用,访问
await expawait 表达式
**乘方
+num, -num, ~num正号、负号、取反
*, @, /, //, %乘除运算
+, -加减运算
<<, >>移位运算
&位与
^异或
|位或
in, not in, is, is not, <, <=, >, >=, !=, ==判断比较
not exp逻辑非
and逻辑与
or逻辑或
if – else条件表达式
lambdalambda 表达式
:=赋值最低

练习

请实现计算圆形的周长和面积。

  • 圆的周长公式为 $C = 2 \pi r$

  • 圆的面积公式为 $S = \pi r^2$

python
PI:float = 3.1415926    # 圆周率
radius:float = 15       # 半径

perimeter:float = 0     # 修改此处代码,计算周长
area:float = 0          # 修改此处代码,计算面积

print("半径为", radius, "的圆,周长为", perimeter, "面积为", area)