算术运算符
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 返回除法的余数 |
** | 幂次 |
// | 返回商的整数部分 |
乘法运算打印输出效果:
幂次打印输出效果图:
整除和取余数计算:
计算按照正常数学运算规律,
1、先乘除后加减。
2、先算括号内的后算括号外的。
如图所示:
注意:在上图中,(50-5*6)/4打印输出的结果为5.0 是浮点数。在除法运算时 打“/”得到的返回都是浮点数。如下图:
想要得到整数而非浮点数需要整除: “//”
注意点:当整除实际计算会有小数点的时候,是向下取整,得到的答案要小于实际数。比如3<3.333335 所以取整取3 。而-3>-3.333335>-4 。这时候取整不能取-3.而要取-4
取余数:“%”
计算机内部算法:
1、用被除数整除除数得到一个整数
2、用整除的数乘以除数得到一个乘数
3、用被除数减去新乘数得到余数。
注释:例如20除以4中 20为被除数 4为除数 得到的5为商。
效果图:
同时得到商和余数方法
运用divmod方法
divmod(x,y)[返回一个元组,其中x为整除的商。y为余数]
使用方法:
解决精准度问题方法
小数点和整数的减法会出现精准误差。
比如 5.4-3实际中会得到2.4。但是python中得到是2.4000000000000004。这就是精准误差。
因计算机中做计算需要转为二进制,那么计算完之后再用十进制呈现,就会产生进准误差。
要解决精度问题,可以内置模块decimal。
在decimal模块中找到Decimal类进行导入使用。
具体操作见下图:
python运算符号
运算符 | 描述 |
---|---|
== | 比较值是否相等 |
!= | 比较值是否不相等 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
比较运算符
1、比较两个值是否相等返回的是布尔值(true、false)
2、比较运算符比较的是数值(两个数值之间的比较)比如2.0(浮点数)和2(整数)的比较 是比较数值
3、字符串不是数值和数值比较相等于不等时有区别。得到答案(false)比如:“2”(字符串)和2(整数)
但是!字符串与数值进行大小比较会报错不会返回结果。int、float和str类型不能进行比较。【int:整数 float:浮点数 str:字符串】
4、字符串和字符串相比较。比较的ASCII(阿斯克马值)
比较相等:==
比较不想等!=
使用方法注意!和=不能分开不能插入空格。
比较大小:<、>
1、只比较大小,如果相同则返回false
2、先进行第一个字符串中的字符比较,如果相同再对第二个字符进行比较,但如果是第一个就有了答案则后面字符不进行比较。(逐个比较直到有答案为止)例如“a”<“bbbb” 第一个a已经判断<b所以后续不再判断
3、字符串与数值之间不能比较,会直接报错。int 与str类型不能直接比较
连续比较
1、连续比较要两者都为true才会为true
2、有个false则整体就为false
3、有优先级时,先比较优先级内都内容。再将整个优先级的整体答案和后项内容进行比较。最后得到整个整体答案
4、连续比较,如a>b>c可拆解为 a>b and b>c
赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值运算符 | c=a+b |
+= | 加法赋值运算符 | c+=a等效 c=c+a |
-= | 减法赋值运算符 | c-=a等效c=c-a |
*= | 乘法赋值运算符 | c*=a等效c=c*a |
/= | 除法赋值运算符 | c/=a等效c=c/a |
%= | 取余数赋值运算符 | c%=a等效c=c%a |
**= | 幂次方赋值运算符 | c**=a等效c=c**a |
//= | 取整除赋值运算符 | c//=a等效c=c//a |
赋值
1、将等号右边的赋值给等号左边
2、先在等号右边进行计算,再将计算结果赋值给等号左边
逻辑运算符
运算符 | 表达式 | 描述 |
---|---|---|
and | a and b | 逻辑与,a与b都为true则返回true |
or | a or b | 逻辑或,a与b只要有一个true则返回true |
not | not a | 逻辑非,当a为true,not a则为false |
短路(懒惰)机制
题目:
答案: 20。10
原因:
10 and 20 要都为true才能成立。则10已经为真了但是20还没确认,等20确认为真了才可以整体为真,所以打印输出20
10 or 20 有个为真就可以全部为真,10已经为真了20是真还是假都没关系,所以打印输出10
比如:print(False and True) 第一个已经为False所以直接False
print(True or False)第一个已经为True所以直接True
位运算符(以二进制,了解)
运算符 | 描述 |
---|---|
& | 按位与:两者都为1才为1,否则为0 |
I | 按位或:只要有一个为1则为1,否则为0 |
^ | 按位异或:两者相等则为0,否则为1 |
例子:a=60 b=13.
二进制:
a=0011 1100
b=0000 1101
按位与:
a&b=0000 1100
(两个字符的1、2都为0,算作0。两个字符的3、4分别为1和0则算0。字符5、6都为1所以算1)
按位或:
a|b=0011 1101
按位异或:
a^b=0011 0001
在python中打印输出的结果是根据二进制的结果转变成的数字。
两者的异或等于第三个
bin函数,转为二进制
bin( ) 打印输出位二进制数
成员运算符
python独有的,用来判断对象是否是某个集合的元素之一,返回的结果是布尔值 True 或者False
运算符 | 描述 |
---|---|
in | 判断某个值是否在指定序列中,在则返回True |
not in | 判断某个值是否在指定序列中,不在则返回True |
身份运算符
运算符 | 描述 |
---|---|
is | 判断两个对象的内存地址是否一致,一致则返回True |
is not | 判断两个对象的内存地址是否不一致,不一致则返回True |
注意:is与==的区别
1、is用于判断两个变量的引用是否为同一个内存(可用id()查看)
2、== 用于判断两个变量的值是否相等
三目运算符
True运算前面的True内容
False运算后吗的False内容
题目:
方法一:if判断语句
方法二:三目语句(使用方法)
a+b 为条件成立时的内容
即: True_statements == a+b
a+b>3为判断条件
即:if expression == if a+b>3
加上 else后
b-a为条件不成立的内容
即:False_statements == b-a
运算符优先级
下表列出来从最高到最低优先级的所有运算符。优先级高的运算符优先处理,同级别的按从左往右的顺序计算(赋值运算符除外,它按从右往左)
运算符 | 描述 |
---|---|
** | 指数(幂次方)最高优先级 |
* , / , % , // | 乘 除 取余数 整除 |
+ - | 加 减 |
<= , < , > , >= | 大小比较运算符 |
== != | 相等与否比较运算符 |
= , %= , /= , //= , -= , += , *= , **= | 赋值运算符 |
is , is not | 身份运算符(内存地址) |
in , not in | 成员运算符(判断是否在元素之一) |
not , or , and | 逻辑运算符 |