Python的运算符

文章目录

    • 一、算术运算符
    • 二、比较运算符
    • 三、 赋值运算符
    • 四、逻辑运算符
    • 五、位运算符
    • 六、成员运算符
    • 七、身份运算符
    • 八、三目运算符


一、算术运算符

算术运算符有我们熟悉的数学运算,加‘+’,减‘-’,乘‘’,除‘/’,乘方‘**’,还有我们的返回除法余数“%”,以及返回除法的商的整数部分“//”
其中介绍几个重点内容
与我们的C语言,C++不同,python中的除法是真的除法,5/2=2.5,得出的是一个商,包括整数与小数部分。计算结果是浮点数2.5
1、返回商的整数的整除运算的符号“//”,这个运算符是向下取余整,什么是向下取整呢,10//3=3,但是我们计算-10/3时结果是-4,因为-10除以3=-3.33333…,向下取整就是-4,同样的10除以3=3.33333,向下取整就应该是3,这就是在python中的整除运算法则
2、接着就是我们的取余数的运算符“%”,10%3=1,向下取余,但是-10%3=2,这是怎么算的呢?
我们拿-10来举例:-10//3=-4,-4
3=-12,-10-(-12)=2,
所以我们在计算负数的整除后的余数时,是按照先向下取整,然后再算的余数
3、“/”计算结果是浮点数,即使相除的两个数是整数,结果也是浮点数。如果想同时得到商和余数,我们可以用“divmod()”这个方法,该方法的返回值是tuple(x//y,x%y),可以同时返回商和余数
4、浮点数的计算精度比较高,怎么解决这个问题呢,我们可以用Decimal()方法解决精度高的问题,最后我们得到的是精度的结果,比如说
输出5.4-3的结果,输出是2.4000000000000004
Decimal(“5.4”)-Decimal(“3”),输出结果就是2.4

二、比较运算符

1、“==”比较两个的值是否相等,在这里我们写一个程序来认识这个运算符

2、"!=“比较两个值是否不相等
3、”>","<",“>=”,"<=",分别是大于,小于,大于等于,小于等于符号,这些符号在C\C++里也是适用的
4、int类型(整数)不能直接和str类型(字符串)比较
5、字符串的比较,比较的是ASCII码的值
比如说我比较ab与ac的大小,从第一个字符相互比较,没比较出来,再是第二个字符相互比较,c比b大,所以比较出来,print(“ab”<“ac”)输出的是True,所以从左边第一个字符相比较,如果能直接比出来,就不需要比较下一个字符了。
例如下面的代码,输出结果是TRUE

if 'ax'<'xa':
    print("TRUE")
else:
    print("False")

6、python3当中不支持<>这种符号

三、 赋值运算符

"=、+=、-=、=、%=、**=、//=" 这些都是赋值运算符,“=”就是直接赋值,方向是从右到左,a=1,就是把1赋值给变量a,在python中还可以这样赋值a=b=c,从右到左依次把c的值赋给b和a
像"+=、-=、
=、%=、**=、//="这些,a+=b,就是a=a+b,a-=b就是a=a-b,a*=b就是a=a*b以此类推
注意,在c/c++中,可以有i++,或者++i,这个在python中是不能使用的,并且赋值符号中的两个符号之间不能有空格,比如+=, 不能用空格分开

四、逻辑运算符

1、and,表示逻辑与,a and b,a和b都是True则为True
在print(10 and 20) 输出的是20,正整数的布尔值都是True,这个是根据and的机制决定的,因为在and中,判断了10为True以后还要判定20是否为True,20判定完了为True,输出的是20
2、or,表示逻辑或,a or b,a和b中只要有一个为真则都为真
在print(10 or 20) 输出的是10,在or中,判定了10为True所以直接输出10
3、not,表示逻辑非,a为False。not a就为True

我们来看看下面这段代码,我们输入666时,或者是任何字符,执行的都是第一条输出“if执行了!”,首先按照运算符的优先级,==是高于or的,所以下面的if语句中的实质是
(temp = =‘Yes’)or’yes’,非空字符的布尔值都为True,or不管括号里面的是否为True,‘yes’的布尔值都为True,又因为逻辑运算符的结果都是布尔值,所以if当中的语句算出来的布尔值都为True,执行的都是print(“if执行了!”)

temp=input("请输入:")
if temp=='Yes'or'yes':
    print("if执行了!")
else:
    print("else 执行了")

五、位运算符

二进制运算中,有一种位运算符
1、&是位与运算,两者均为1则是1,否则为0
a=60,b=13,转为二进制a=00110011,b=00001101,作位与运算
00110011
00001101
a&b=00000001,a&b=1

2、|是位或运算,两者有一个为1就是1,两者都是0为0
a=60,b=13,转为二进制a=00110011,b=00001101,作位或运算
00110011
00001101
a|b=00111111,a&b=63

3、^是位异或运算,两者相等为0,不等为1
a=60,b=13,转为二进制a=00110011,b=00001101,作位或运算
00110011
00001101
a^b=00111110

六、成员运算符

in (判断某个值是否在指定序列中,在则返回True)与 not in(判断某个值是否在指定序列中,不在则返回True) ,这两个是 Python 独有的运算符,用于判断对象是否 某个集合的元素之一,这是非常好用的,在使用搜索的时候很实用,并且运行速度很快。返回的结果是布尔值类型的 True 或者 False 。

比如说,我们可以在字符串的查找的时候,就可以用这种运算符,不用再像c/c++那样写查找函数了
下面的程序打印结果是“Whistle已经离开不在这里了”

a=["steven","cloak","bob","lisa"."amy"]
if "Whistle" in a:
    print("Whistle在这个大家庭里面")
else:
    print("Whistle已经离开不在这里了")


七、身份运算符

身份运算符也是Python的特色运算符
“is”是判断两个对象的内存地址是否一致的运算符,是则返回True
“not is”是判断两个对象的内存地址是否不一致的运算符,不是则返回True
这里就要注意“is”与==的区别了

is用于判断两个变量的引用是否为同一个内存地址
id() 可用于查找变量的内存地址
"=="用于判断两个变量的值是否相等

八、三目运算符

三目运算符格式是这样的,例如,print(a) if a>b else print(b),如果a>b为真,执行if前面的语句print(a),否则执行后面的print(b)
所以我们可以写出如下程序
用户输入a,b。当a与b都不为0时则输出a与b的商; 否则输出a与b的乘积(其中一个为0,乘积一定是0)。再使用三目运算符输出a,b较大的数

a=float(input("请输入:"))
b=float(input("请输入:"))
if a!=0 and b!=0:
    print(a/b)
else:
    print(0)
print(a) if a>b else print(b)

你可能感兴趣的:(python语言基础特性,python)