运算符(9)

作者: 程序员夏天 | 来源:发表于2020-01-09 22:27 被阅读0次

运算符:以1 + 2为例,1和2被称为操作数,“+” 称为运算符。

Python语言支持以下类型的运算符:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 三目运算符

一、 算术运算符

以下假设变量: a=10,b=20:

image.png-63.3kB

Python中,有3种除法,一种除法是/:

>>> 10 / 3
3.3333333333333335

/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:

>>> 9 / 3
3.0

还有一种除法是//,也称为地板除,只取整数部分,余数被抛弃:

>>> 10 // 3
3

Python还提供一个余数运算,可以得到两个整数相除的余数:

>>> 10 % 3
1

如果想同时得到商和余数,可以用这个方法:

>>> divmod(10,3)
(3, 1)

因为浮点数精度的问题,Python还存在一些计算方面的小问题,例如:

>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17

什么?不是应该等于0吗?Python居然还有这么不为人知的一面?

要解决这个问题,可以导入decimal模块:

>>> from decimal import Decimal
>>> Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
Decimal('0.0')
>>> Decimal('0.1') / Decimal('0.3')
Decimal('0.3333333333333333333333333333')

>>> from decimal import getcontext
>>> getcontext().prec = 4 #设置全局精度
>>> Decimal('0.1') / Decimal('0.3')
Decimal('0.3333') 

注意其中提供的数字是用字符串的形式传递给Decimal的。

二、 比较运算符
以下假设变量a为10,变量b为20:

image.png

关于比较运算符,有一些有意思的题目:

1.下面三个选项哪个为True?

  • 5+4j > 2-3j
  • 'abc' < 'xyz'
  • (3, 2) < ('a', 'b')

2.请分别说出下面各项的值:

  • True == 1
  • False == 0
  • 3>2>1
  • 3>2>2
  • (3>2)>1
  • (3>2)>2

对于连续比较,Python是按这种机制解释的:

3>2>1 等于 (3>2) and (2>1)

相当于两个比较,然后用与&再结合起来。

三、 赋值运算符

以下假设变量a为10,变量b为20:

注意对于 a /= b 之类的操作,等同于a = a / b, 而不是 a = b / a,方向一定不要搞反了。

image.png-60.9kB

四、 位运算符

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下: 下表中变量 a 为 60,b 为 13,二进制格式如下:

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011
</pre>
image.png-109.5kB

五、 逻辑运算符

Python语言支持逻辑运算符,但是没有其它语言中的&&||语法,取而代之的是更加人性化的英文单词and or not(全部都是小写字母)。以下假设变量 a 为 10, b为 20:

image.png-41.6kB

六、 成员运算符

in 与 not in是Python独有的运算符(全部都是小写字母),用于判断对象是否某个集合的元素之一,非常好用,并且运行速度很快。返回的结果是布尔值类型的True或者False。

image.png-28.1kB

看个例子,传统的方式,我们判断某个集合里是否有某个元素时,都是使用for循环遍历一次集合,逐一进行比对,最后给出结果:

list1 = [1, 2, 3, 4, 5]
a = 1
flag = False

for i in list1:
    if i == a:
        flag = True
        break

if flag:
    print("a是list1的元素之一")
else:
    print("a不是list1的元素")

事实上根本不用这么麻烦,直接使用in运算符就好了

list1 = [1, 2, 3, 4, 5]
a = 1
if a in list1:
    print("a是list1的元素之一")
else:
    print("a不是list1的元素")

七、 身份运算符

这也是Python的特色语法(全部都是小写字母)。

image.png-38.8kB

注意is与比较运算符“==”的区别,两者有根本上的区别,切记不可混用:

is用于判断两个变量的引用是否为同一个对象,而==用于判断变量引用的对象的值是否相等!

>>> b = a
>>> b is a 
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True</pre>

这里介绍一个常用的内置函数:id(),用它可以查看某个变量或者对象的内存地址,两个相同内存地址的对象被认为是同一个对象。

>>> a = 1
>>> b = 2
>>> id(a)
1383969856
>>> id(b)
1383969888
>>> c = 2
>>> id(c)
1383969888

八、 三目运算符(三元表达式)

python中的三目运算符不像其他语言一般的表示方法:判定条件?为真时的结果:为假时的结果。

例如,C语言是这么写的: result = 5>3?1:0

在python中的格式为:为真时的结果 if 判定条件 else 为假时的结果

例如: True if 5>3 else False

九、 运算符优先级

下表列出了从最高到最低优先级的所有运算符。优先级高的运算符优先计算或处理,同级别的按从左往右的顺序计算(赋值运算符除外,它是按从右往左的顺序)

image.png

上一篇:变量与常量

下一篇:输入输出

#同时小编创建了一个Python千人交流群,群里也有Python零基础到进阶资料提供下载,欢迎喜欢学习交流的朋友!!!进群验证:简书

相关文章

  • Java运算符

    Java的运算符,分为四类: 算数运算符、关系运算符、逻辑运算符、位运算符。 算数运算符(9):+ - * / %...

  • Java的运算符

    Java的运算符,分为四类: 算数运算符、关系运算符、逻辑运算符、位运算符。 算数运算符(9):+ - * / %...

  • javascript入门3(0731)

    1.算术运算符 // 算术运算符 + - * / % ++ -- var num1 = 9; var num2 ...

  • python面试宝典2控制结构

    简述Python中的运算符 算术运算符。+, -, *, /, **, //, %例如:9/2=4,9.0/2.0...

  • 算术运算符

    变量之间可以进行运算,比如6+9,数字6和9称为操作数,+称为运算符 算术运算符 >>>2+5  #加法运算7>>...

  • 7 | 判断&循环&迭代

    https://www.jianshu.com/p/ad9edd8fba4e 一、 判断(关系)运算符 运算符 <...

  • C4. 运算符优先级

    C的运算符有以下几类: 1.算术运算符[https://baike.baidu.com/item/%E7%AE%9...

  • JS运算符

    一、算数运算符 +、-、*、/、%(取余) 9%2=1 二、递增递减运算符 ++、--,递增和递减即可以放在变量前...

  • Python 运算符,你知道多少?

    什么是运算符? 本章节主要说明Python的运算符。举个简单的例子** 4 +5 = 9 。 例子中,4** 和 ...

  • java的其他语法基础

    一.基本运算符 + - * / %(取余) 例子:10/3-->3 9%5-->4 二.运算符的优先级(忽略) i...

网友评论

    本文标题:运算符(9)

    本文链接:https://www.haomeiwen.com/subject/ntyuactx.html