【Python基础篇】你了解python中运算符吗

文章目录

  • [1. 算数运算符](#1. 算数运算符)
    • [1.1 //整除](#1.1 //整除)
    • [1.2 %取模](#1.2 %取模)
    • [1.3 **幂](#1.3 **幂)
  • [2. 赋值运算符](#2. 赋值运算符)
  • [3. 位运算符](#3. 位运算符)
    • [3.1 &(按位与)](#3.1 &(按位与))
    • [3.2 |(按位或)](#3.2 |(按位或))
    • [3.3 ^(按位异或)](#3.3 ^(按位异或))
    • [3.4 ~(按位取反)](#3.4 ~(按位取反))
    • [3.5 <<(左移)](#3.5 <<(左移))
    • [3.6 >>(右移)](#3.6 >>(右移))
  • [4. 比较运算符](#4. 比较运算符)
  • [5. 逻辑运算符](#5. 逻辑运算符)
    • [5.1 and](#5.1 and)
    • [5.2 or](#5.2 or)
    • [5.3 not](#5.3 not)
  • [6. 成员运算符](#6. 成员运算符)
    • [6.1 in](#6.1 in)
    • [6.2 not in](#6.2 not in)
  • [7. 身份运算符](#7. 身份运算符)

1. 算数运算符

算术运算符有:+、-、*、/、//、%、**,依次对应加、减

乘、除、整除、模、幂。

其中前四个就和数学中一样,我们来说一下后面三个。

1.1 //整除

//就和它的名一样,整除,就是运算后只会取整数部分。例如10除3它的结果就会等于3,舍去的余数部分。

代码:

python 复制代码
a = 10
b = 3
print(a // b)

运行结果:

1.2 %取模

%就是取模,就是取余的意思,和//对立,//只要整数部分,那%就是只要余数部分。例如:10%3结果就是1。

python 复制代码
a = 10
b = 3
print(a % b)

1.3 **幂

** 就是幂的意思。例如:2 ** 3就相当于2的3次方,结果为8,2 ** 4就相当于2的4次方,结果为16。

python 复制代码
a = 2
b = 4
print(a ** b)

2. 赋值运算符

赋值运算符有:=、+=、-=、*=、/=、//=、%=,首先等=就是等号的意思,而后面的加等,减等......用起来其实都是一样的,这里演示一个大家应该就懂了。

代码演示:

python 复制代码
a = 1
print(a)
a += 2  # 相当于a = a + 2,原本的a等于1,现在加上2,那么就等于3了
print(a)  # 打印结果为3

后面的-=、*=、/=、//=、%=的应用和+=规则相同。

3. 位运算符

位运算符有:&、|、^、~、<<、>>, 依次是按位与、按位或、按位异或、按位取反、左移、右移。

位运算符用于对整数的二进制表示进行直接操作,就是运算时不是直接对变量进行运算,而是先转换为二进制,对二进制整数操作。

3.1 &(按位与)

对每一位执行逻辑与操作。如果两个相应的二进制位都为1,则该位的结果为1;否则为0。

python 复制代码
a = 60  # 0011 1100  
b = 13  # 0000 1101  
c = a & b  # 0000 1100  
print(c)  # 输出: 12

3.2 |(按位或)

对每一位执行逻辑或操作。如果两个相应的二进制位中至少有一个为1,则该位的结果为1;否则为0。

python 复制代码
a = 60  # 0011 1100  
b = 13  # 0000 1101  
c = a | b  # 0011 1101  
print(c)  # 输出: 61

3.3 ^(按位异或)

对每一位执行逻辑异或操作。如果两个相应的二进制位不相同,则该位的结果为1;如果相同,则为0。

python 复制代码
a = 60  # 0011 1100  
b = 13  # 0000 1101  
c = a ^ b  # 0011 0001  
print(c)  # 输出: 49

3.4 ~(按位取反)

对数的二进制表示进行取反操作。即将0变为1,将1变为0。需要注意的是,取反后的结果通常是补码形式表示的负数(对于有符号整数而言),这取决于具体的位数和系统架构。

python 复制代码
a = 60  # 0011 1100  
b = ~a  # 1100 0011...(取决于整数类型,这里假设是32位)  
# 注意:直接打印b会得到一个负数,因为Python使用补码表示负数  
print(b)  # 输出: -61(假设是32位系统)

3.5 <<(左移)

数的各二进制位全部左移若干位,由右侧的数指定移动的位数,高位丢弃,低位补0。

python 复制代码
a = 60  # 0011 1100  
b = a << 2  # 0011 1100 -> 1111 0000  
print(b)  # 输出: 240

3.6 >>(右移)

数的各二进制位全部右移若干位,由右侧的数指定移动的位数。对于无符号数,高位补0;对于有符号数,则取决于具体的系统,可能是补0或补1(即算术右移)。Python中的整数是有符号的,但右移操作在Python 3.x中总是用0来填充高位。

python 复制代码
a = 60  # 0011 1100  
b = a >> 2  # 0011 1100 -> 0000 1111  
print(b)  # 输出: 15

4. 比较运算符

比较运算符有:==、!=、<、>、<=、>=, ==就是数学中=的意思,但是并不能直接写=,前面我们也知道了=是赋值的意思,!=就是不等于的意思,后面相信就不用介绍了。

python 复制代码
print(1 == 1)  # 正确的,结果true
print(1 != 1)  # 错误的,结果false

5. 逻辑运算符

逻辑运算符有:and、or、not三种,依次是逻辑与运算符、逻辑或运算符、逻辑非运算符,使用起来就和数学中的与或非一样。

5.1 and

逻辑与运算符。如果它的两个操作数都是真(True),则整个表达式的结果为真(True)。如果任一操作数为假(False),则结果为假(False)。

python 复制代码
print(True and True)  # 输出: True  
print(True and False) # 输出: False  
print(False and True) # 输出: False  
print(False and False) # 输出: False

5.2 or

逻辑或运算符。如果它的两个操作数中至少有一个为真(True),则整个表达式的结果为真(True)。如果两个操作数都是假的(False),则结果为假(False)。

python 复制代码
print(True or True)  # 输出: True  
print(True or False) # 输出: True  
print(False or True) # 输出: True  
print(False or False) # 输出: False

5.3 not

逻辑非运算符。用于反转其操作数的布尔值。如果操作数是真(True),则结果为假(False)。如果操作数是假(False),则结果为真(True)。

python 复制代码
print(not True)  # 输出: False  
print(not False) # 输出: True

6. 成员运算符

成员运算符有:in、not in两种。用于检查某个值是否存在于某个集合中(比如列表、元组、字符串、集合或字典的键中)。

集合后面会讲,这里就简单使用一样,懂in和not in什么意思就可以。

6.1 in

如果指定的值在指定的序列中(或作为字典的键),则返回True;否则返回False。

python 复制代码
# 列表  
my_list = [1, 2, 3, 4, 5]  
print(3 in my_list)  # 输出: True  
print(6 in my_list)  # 输出: False  
 
# 字符串  
my_str = "hello"  
print('e' in my_str)  # 输出: True  
print('z' in my_str)  # 输出: False  
 
# 字典(检查键)  
my_dict = {'a': 1, 'b': 2, 'c': 3}  
print('a' in my_dict)  # 输出: True  
print('d' in my_dict)  # 输出: False

6.2 not in

这个运算符是in的否定形式。如果指定的值不在指定的序列中(或不是字典的键),则返回True;否则返回False。

python 复制代码
# 列表  
my_list = [1, 2, 3, 4, 5]  
print(6 not in my_list)  # 输出: True  
print(3 not in my_list)  # 输出: False  
 
# 字符串  
my_str = "hello"  
print('e' not in my_str)  # 输出: False  
print('z' not in my_str)  # 输出: True  
 
# 字典(检查键)  
my_dict = {'a': 1, 'b': 2, 'c': 3}  
print('a' not in my_dict)  # 输出: False  
print('d' not in my_dict)  # 输出: True

7. 身份运算符

身份运算符 :is、is not 用于测试两个对象是否相同(即,它们是否指向同一个对象或内存地址)。对象内存地址这个概念后面讲,大家是不是觉得好多后面讲,这也是没办法的嘛,先简单后难,这些难点的后面会详解的,大家不用担心,不会影响前面的学习的。

python 复制代码
a = [1, 2, 3]  
b = a  
c = [1, 2, 3]  
  
print(a is b)  # 输出: True,因为 a 和 b 指向同一个列表对象  
print(a is c)  # 输出: False,因为虽然 a 和 c 的内容相同,但它们是不同的对象  
print(a == c)  # 输出: True,因为 a 和 c 的内容相同  
  
x = 256  
y = 256  
z = id(x)  
w = id(y)  
  
print(x is y)  # 输出可能取决于Python实现和对象类型,但对于小整数(如-5到256之间的整数),Python通常会缓存这些值,因此这里很可能输出 True  
print(z == w)  # 输出: True,因为id()函数返回对象的唯一标识符(内存地址),这里x和y指向同一个对象  
  
# 示例使用 is not  
print(a is not b)  # 输出: False,因为a和b是同一个对象  
print(a is not c)  # 输出: True,因为a和c不是同一个对象
相关推荐
胡乱儿起个名1 分钟前
C++的指针数组、数组指针和指针数组指针
开发语言·c++
kill bert5 分钟前
第32周Java微服务入门 微服务基础
java·开发语言·微服务
学c真好玩7 分钟前
4.1-python操作wrod/pdf 文件
开发语言·python·pdf
姜行运7 分钟前
数据结构【链表】
c语言·开发语言·数据结构·链表
东方佑8 分钟前
使用Python解析PPT文件并生成JSON结构详解
python·json·powerpoint
Auroral15610 分钟前
一文搞懂python实现邮件发送的全流程
python
山山而川粤11 分钟前
SSM考研信息查询系统
java·大数据·运维·服务器·开发语言·数据库·考研
大霸王龙12 分钟前
LLM(语言学习模型)行为控制技术
python·深度学习·学习
我不是大佬zvj14 分钟前
PyGame开发贪吃蛇小游戏
python·pygame
这里有鱼汤24 分钟前
Python 图像处理必备的 15 个基本技能 🎨
前端·后端·python