python基础知识——运算符

一.算术运算符

   经过九年义务教育的你我,算术运算符对于我们其实并不陌生,算术运算符包括 + - * / % // 乘方开方 ( )。

1.运算次序

   进行算术运算我们首先要明白算术运算的次序问题。最先进行运算的,是括号内的内容,其次是乘方和开方运算,再进行乘除运算,最后进行加减运算。

2.+ - *

   这三个运算并没有什么需要特别注意的问题,所以我们放在一块来介绍,同时说明带括号的顺序问题。

a = 1 + 2 * 3
print(a)
b = (1 + 2) * 3
print(b)

这里我们可以看到,带括号和不带括号的运算顺序是不一样的。

3. /

  除法运算大家也并不陌生,但是在计算机运算中,仍然有几个需要注意的问题。

(1)除法运算的除数不能是 0 。

print(1 / 0)

这种运行时出现的错误,也叫做“抛出异常”。如果程序运行过程中抛出异常,程序就直接终止了,异常后面的代码也就不会执行了。

需要注意的是,对于 python 而言,除以 0 和 0.0 的结果是一样的,但是有些编程语除以浮点数0.0会得到无穷大。

(2)整数除不尽

整数 / 整数,如果除不尽,得到的就是小数,不会出现截断,舍弃小数部分的情况。

4. %

   取余属于小学二年级的知识,那时的我们还不知道小数是怎么一回事,就有了取余的概念,比如说,7 / 3,除不尽,剩余 1。 

print(7 % 3)

5.乘方开方

   前面我们已经简单介绍过了乘方运算。乘方运算的符号是 ** ,两个 ** 是平方,三个 *** 就是三次方了,以此类推。

print(4 ** 2)
print(4 ** 0.5)

乘方后面跟的是整数,开放开的就是小数了。

6. //

   // 叫做地板除法(取整除法) ,会针对出发的结果“向下取整”。

print(7 // 2)
print(-7 // 2)

7 / 2 的结果是 3.5 ,-7 / 2 的结果是 -3.5 ,向下取整,就是往小了取,得到结果 3,-4。 

二.关系运算符

关系运算符就是比较两个操作数“大小”,“相等”关系的运算符。关系运算符包括,<(小于),>(大于),<=(小于等于),>=(大于等于),==(是否相等),!=(不相等)。

1.关系运算符的值为布尔类型。

a = 10
b = 20
print(a < b)
print(a > b)
print(a <= b)
print(a >= b)
print(a == b)
print(a != b)

2.关系运算符不仅能比较数字还能比较字符串

  听起来是比较神奇的,比较字符串的根据是“字典序”,也就是字母表的排序,比如 abondon,这就是一个比较小的字符串,首字母拍的越靠后,字符串也就越大,如果首字母相同,那就比较第二个字母。

a = 'hello'
b = 'world'
print(a < b)
print(a > b)
print(a <= b)
print(a >= b)
print(a == b)
print(a != b)

还有一个注意的点,中文字符串进行这样的比较是没有意义的,同时,python中的字符串可以使用 == , != ,来比较字符串内容是否相同。

3.使用 == 比较 float 类型具有风险

   浮点数在内存中的存储和表示,是可能存在误差的,这样的误差在进行算术运算的时候就可能被放大,从而导致 == 的判定出现误差!

print(0.1)
print(0.2)
print(0.1 + 0.2)
print(0.1 + 0.2 == 0.3)

   我们可以看到,0.1 + 0.2 的结果已经十分接近 0.3了,但是仍然不相等,所以这并不是判定两个浮点数是否相等的正确做法。那么正确做法是什么呢?

a = 0.1 + 0.2
b = 0.3
print(- 0.00001 < (a - b) < 0.00001)

    这个代码是通过观察 a - b 的值是不是一个非常小的值,是否在误差范围之内。这是一种连续比较,python 中支持这种连续比较,但是C和java并不支持。

 三.逻辑运算符

   逻辑运算符包括三个 and ,or,not。

1. and

   and 表示并且,就是既要也要,连吃带拿的意思,就像你交往了女朋友,面见家长的时候,女方对你有要求,要求你要有车并且有房。对于 and 而言,两侧的运算式必须都得是 True 表达式的值才能是 True。(have car and have house)此时,女方对你满意,也就是表达式为 True,否则就是False(一假即假)。

2.or

  or 表示或者,表示或者...或者...的意思,还是引用 and 中的例子,女方的要求降低了,要求你要么有车要么有房,有一个就行了。所以对于 or 而言,两侧都运算式只要有一个是 True 就足够整个表达式为 True ,为(一真即真)。

3.not 

   not 表示逻辑取反,也就是原来一个为 True 的表达式前面加一个 not ,那么这个表达式的真值就变成了 False。

a = 10
b = 20
c = 30

print(a < b and b < c)
print(a < b and b > c)

print(a > b or b < c)
print(a < b or b > c)
print(a > b or b > c)

print(not a < b)
print(not a > b)

 4.逻辑运算符的表达式中的重要细节:短路求值。

    对于 and 这个操作而言,一假即假,如果左侧的表达式为 False ,那么整体表达式就为 False ,那就没有必要求右侧表达式的真值了。

   对于 or 这个操作而言,一真即真,如果左侧的表达式为 True ,那么整体表达式就为 True ,那就没有必要求右侧表达式的真值了。 

a = 10
b = 20
c = 30

print(a > b and 10 / 0 == 1)

   and右侧的显然是一个会抛出异常的表达式,但是程序并没有报错,显然右边的代码并没有被执行。

四.赋值运算符 

   = 表示赋值,意思就是把等号右侧的值填充到左侧的空间之中。

   == 表示相等。

1.链式赋值

   形如 a = b = 20 这样的赋值,称为链式赋值,开辟a, b 两个空间,将 20 填入两个空间。但是一般不推荐这样的赋值。

2.多元赋值

   形如 a, b = 10, 20 这样的赋值,称为多元赋值,开辟a, b两个空间,分别将 10,20 填入两个空间,同样不是很推荐这样的赋值,但是多元赋值能够很好地处理变量交换值的问题。

# 链式赋值
a = b = 20

# 多元赋值
c, d = 10, 20

#多元赋值帮助解决变量交换问题,比如:交换c,d的值
#一般方法:引入临时变量
tmp = c
c = d
d = tmp
print(c,d)
#使用多元赋值
c, d = d, c
print(c,d)

 

3.复合赋值  

   += ,-= ,*= ,/= ,%= ,**= ,//= ,形如此类的赋值运算符称之为复合赋值运算符。 通过一段代码,我们来理解它的含义。

a = 0
a += 1 # 等价于 a = a + 1
print(a)

 

   a += 1,等价于 a = a + 1。对于其他复合赋值运算符,表达的含义也是类似的。

五.其他运算符

   除此之外,还有一些其他运算符,如 位运算符 ,成员运算符,身份运算符等。 

 

 

  

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值