运算符
mindmap
本章知识点
① 算术运算符
① 逻辑运算符
① 关系运算符
比较运算符
赋值运算符
位运算符
按位 & 与
按位 | 或
按位 ^ 异或
接位 ~ 取反
运算符优先级
算术运算符
用于处理四则运算的符号
运算符 |
描述 |
示例 |
结果 |
+ |
加法 |
1+1 |
2 |
- |
减法 |
1-1 |
0 |
* |
乘法 |
1*1 |
1 |
/ |
除法 |
1/1 |
1 |
() |
括号运算符 |
(1+2)*3 |
9 |
补充
运算符 |
描述 |
示例 |
结果 |
// |
整除 |
10//3 |
3 |
% |
取余 |
10%3 |
1 |
** |
幂运算 |
2**4 |
16 |
算术运算符优先级
- 第一级:**,()
- 第二级:*,/,%,//
- 第三级:+,-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| var = 2 num = 3
print('加法:', var + var)
print('减法:', var - var)
print('乘法:', var * var)
print('除法:', var / var) print('-----------------')
print('取整:', var // num)
print('取余:', var % num)
print('幂运算:', var ** num)
print('优先级:', var + var ** num / var * num - num)
|
加法运算符
1 2 3 4
| age = input('请输入您的年龄:') print('今年你'+age+'岁了')
print('2年后你'+str(int(age)+2)+'岁了')
|
比较运算符【关系运算符】
生活中,我们会遇到年龄、身高、智商等数据的比较。网站或ATM 机,我们经常需要输入密码,进行密码的比较。这些都需要使用比较运算符。
%%{init: {"pie": {"textPosition": 0.5}, "themeVariables": {"pieOuterStrokeWidth": "5px"}} }%%
pie title 比较运算符——知识比重图
"数学能力" : 1
"逻辑推理能力" : 1
"纠错能力" : 1
"编程能力" : 1
"动手能力" : 2
Python 中运行比较运算符表达式,返回一个布尔类型的值。
数学 |
Python |
描述 |
示例 |
结果 |
> |
> |
大于 |
68>33 |
True |
< |
< |
小于 |
68<33 |
False |
= |
== |
等于 |
68==33 |
False |
$\neq$ |
!= |
不等于 |
68!=33 |
True |
$\ge$ |
>= |
大于等于 |
68>=33 |
True |
$\le$ |
<= |
小于等于 |
68<=33 |
False |
数字类型数据的比较
> 比较两位计算机语言开发者的年龄
1 2 3 4 5 6 7 8
| guido_age = 68 mitchel_age = 67 print('guido_age > mitchel_age',guido_age > mitchel_age) print('guido_age < mitchel_age',guido_age < mitchel_age) print('guido_age == mitchel_age',guido_age == mitchel_age) print('guido_age != mitchel_age',guido_age != mitchel_age) print('guido_age >= mitchel_age',guido_age >= mitchel_age) print('guido_age <= mitchel_age',guido_age <= mitchel_age)
|
字符串类型间的比较
1 2 3 4 5
| print('b>a', 'b'>'a') print('A<a', 'A'>'a') print('ab<ac','ab'<'ac') print('guido == guido', 'guido' == 'guido') print('guido == mitchel', 'guido' != 'mitchel')
|
思考:为什么呢?计算机怎么这么无聊,要判断两字符串?
homework
登录 babycoding 学习网站的密码(John1903),怎么判断用户输入的密码是否正确?
关系运算符与算术运算符的混合运算,先算算术运算符,再算关系运算符。结果一定是 True 或 False
and 可以连写
逻辑运算符
运算符 |
描述 |
用法 |
综合方向 |
and |
逻辑与 |
expression1 and expression2 |
从左到右 |
or |
逻辑或 |
expression1 or expression2 |
从左到右 |
not |
逻辑非 |
not expression |
从右到左 |
逻辑运算符优先级:not > or > and
两个表达式都为 True
1 2 3 4 5
| expression1 = True expression2 = True print(expression1 and expression2) print(expression1 or expression2) print(not expression1)
|
True False
1 2 3 4 5
| expression1 = False expression2 = True print(expression1 and expression2) print(expression1 or expression2) print(not expression1)
|
False False
1 2 3 4 5
| expression1 = False expression2 = False print(expression1 and expression2) print(expression1 or expression2) print(not expression1)
|
思考:表达式,expression1 expression2 是表达式吗?
思考:什么是表达式
1 2 3
| print(68 > 33 and 33 < 68) print(68 > 33 and not(33 < 68)) print(68>33 and 68<33 or not(68>33))
|
赋值运算符
运算符 |
描述 |
示例 |
即 |
= |
赋值运算 |
x=y |
x=y |
+= |
加赋值 |
x+=y |
x=x+y |
-= |
减赋值 |
x-=y |
x=x-y |
*= |
乘赋值 |
x*=y |
x=x*y |
/= |
除赋值 |
x/=y |
x=x/y |
%= |
取余赋值 |
x%=y |
x=x%y |
**= |
幂赋值 |
x**=y |
x=x**y |
//= |
整除赋值 |
x//=y |
x=x//y |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
x = 2 y = 3
x+=y print(x)
x-=y print(x)
x*=y print(x)
x/=y print(x, type(x))
x%=y print(x)
x//=y print(x)
x**=y print(x)
|
其它赋值操作
1 2 3 4 5 6 7 8 9 10 11
| x=y=z=1 print(x,y,z)
a,b=1,2 print(a,b)
a,b=b,a print(a,b)
|
homework:
- x=5,y=3,执行 x,y=y,x 之后,x 和 y 的值分别是什么?
位运算符
二进制数进行运算。!关于二进制更多。。。
按”位与“运算(&)
- 先计算出两个十进数的二进制;
- 接着数位对齐;
- 进行运算。
1 2 3 4 5 6 7
| variable = 8 variable_ = 2
print(bin(variable)) print(bin(variable_))
|
按位 & 运算,两个二进制数进行 & 运算,两个数对应数位上都是 1,结果为 1;否则为 0.
1 2 3 4
| 1000 & 0010 —————— 0000
|
1 2
| print(int('0000', 2)) print(8&2)
|
按位 | 运算,两个二进制数进行 | 运算,两个数对应数位上有一个是 1,结果为 1;否则为 0.
1 2 3 4
| 1000 | 0010 —————— 1010
|
1 2
| print(int('1010', 2)) print(8|2)
|
按位异或 ^,两个二进制数进行 ^ 运算,两个数对应数位上数字相同,结果为 0;否则为 1
1 2 3 4
| 1000 ^ 0010 —————— 1010
|
1 2
| print(int('1010', 2)) print(8 ^ 2)
|
按位取反 ~,操作数每个数位进行取反操作
1 2 3
| ~ 0000 0010 ———————————— 1111 1101
|
左移位 运算 <<,将一个二进制数向左移动指定位数,左边(高位)溢出丢弃,右边(低位)空出位置补 0.
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
<—— 左移 2 位 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 2
| print(int('00100000', 2)) print(8<<2)
|
右移位 运算 >>,将二进制数向右移动指定位数,右边(低位)溢出丢弃,左边(高位)最高位是 0,表示正数,继续补0;最高位数 1,为负数,则补1
|
|
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
>> 右移 2 位 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1 2
| print(int('00000010', 2)) print(8>>2)
|
右移位 运算 >>,将二进制数向右移动指定位数,右边(低位)溢出丢弃,左边(高位)最高位数 1,为负数,则补1
运算符优先级
序号 |
运算符 |
描述 |
1 |
** |
幂运算 |
2 |
~,+,- |
取反,正号,负号 |
3 |
*,/, %, // |
算术运算符 |
4 |
+,- |
算术运算符 |
5 |
<<, >> |
位运算符,左移,右移 |
6 |
& |
按位 & |
7 |
^ |
按位 ^ |
8 |
| |
按位 | |
9 |
<,<=,>,>=,!=,== |
比较运算符 |
10 |
= |
赋值运算符 |
homework
- 键盘输出一个4位数,并分别输出个、十、百、千位上的数字(两种方式:1. 可以采用字符串索引;2. 采用算术运算)
- 根据父母身高,预测孩子身高(算法:父亲身高+母亲身高)*0.54