菜鸟学习日记(python)——运算符

news2024/9/27 5:54:29

我们进行运算时,需要两类数据,操作数和运算符,例如:a+b就是一个运算,它的操作数是a和b,运算符是‘+’

在python中运算符包括以下几大类:

  • 算数运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 运算符优先级

算数运算符

算数运算符包括:加(+)、减(-)、乘(*,如果操作的对象是字符串类型,那么返回的结果是将字符串重复对应次数)、除(/)、取整除(//,向小的方向取整数)、取模(%)、幂(**)

以下是一些算数运算的实例:

a=8
b=2.5
c='test'
print(a+b)
print(a-b)
print(a*b)
print(c*3)
print(a/b)
print(a//b)
print(-9//2)
print(a%b)
print(a**3)

运算结果为:

比较(关系)运算符

python中的比较运算符包括:等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)

下面是比较运算的实例:

a=5
b=6
print(a==b)
print(a!=b)
print(a>b)
print(a<b)
print(a>=b)
print(a<=b)

结果为:

赋值运算符

赋值运算符包括:简单赋值运算符(=)、加法赋值运算符(+=)、减法赋值运算符(-=)、乘法赋值运算符(*=)、除法赋值运算符(/=)、取整除赋值运算符(//=)、取模赋值运算符(%=)、幂赋值运算符(**=)、海象运算符(:=,只有python3.8以后版本支持)

以下是赋值运算符的实例:

a=16     #一般赋值运算符
a+=a        #相当于a=a+a
print('a+=a运算结果为:',a)
a-=1         #相当于a=a-1
print('a-=1运算结果为:',a)
a*=2        #相当于a=a*2
print('a*=2运算结果为:',a)
a/=4        #相当于a=a*2
print('a/=2运算结果为:',a)
a//=2        #相当于a=a*2
print('a//=4运算结果为:',a)
a%=4        #相当于a=a%2
print('a%=2运算结果为:',a)
a**=2       #相当于a=a**2
print('a**=2运算结果为:',a)
'''
海象运算符可以在表达式内部为变量赋值,这里是先对字符串求长度,并将字符串长度赋值给n,再将n与10进行比较,比较结果作为if语句的判断条件
'''
if (n := len('testtesttesttest')) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")
'''
如果没有海象运算符,以上代码可以改为以下代码,它的运行结果是一样的,但是代码没有那么简洁了
'''
n=len('testtesttesttest')
if n>10:
    print(f"List is too long ({n} elements, expected <= 10)")
'''
以下代码是用于判断输入的字符串是否为'exit',如果是,那么退出程序,如果不是,那么输出刚才输入的字符串
'''
while (inputstr:=input('清输入字符串:')) !='exit':
    print('输入的字符串:',inputstr)

位运算符

按位运算符是把数字看作二进制来进行计算的。位运算符包括:按位与运算(&,对应两个二进制位都为1时运算结果为1,否则为0)、按位或运算(|,对应两个二进制位有都为0时运算结果为0,否则为1)、按位异或运算(^,对应两个二进制位相异时运算结果为1,否则为0)、按位取反运算(~,将对应二进制数的每一位取反,将1变为0,0变为1)、左移运算符(<<,将对应数据的每一位都向左移动若干位,由<<右边的数字来指定移动的位数,高位丢弃,地位补0)、右移运算符(>>,将对应数据的每一位都向右移动若干位,由>>右边的数字来指定移动的位数,高位补0,地位丢弃)。

以下是按位运算实例:

a=60        #a用二进制表示为00111100
b=13        #b用二进制表示为00001101
print(a&b)      #运算结果为:00001100,用十进制表示为12
print(a|b)      #运算结果为:00111101,用十进制表示为61
print(a^b)      #运算结果为:00110001,用十进制表示为49
'''
运算结果为:11000011,用十进制表示为-61,
要注意的是,在计算机中不管是正数还是负数,都是用它的补码来表示,
但是正数的原码、反码、补码都是一样的,但是负数的原码、反码、补码不一样
负数在计算机中以其绝对值的补码形式表达
'''
print(~a)
print(a<<2)      #运算结果为:11110000,用十进制表示为240
print(a>>2)      #运算结果为:00001111,用十进制表示为15

结果为:

逻辑运算符

逻辑运算符包括:与运算(and,x and y,如果x的值为False,那么返回x的值,否则返回y的计算值)、或运算(or,x and y,如果x的值为True,那么返回x的值,否则返回y的计算值)、非运算(not,not x,如果x的值为False,那么返回True,如果x的值为True,那么返回False)

要注意的是:在python中,所有非0的数字它的布尔值都是True,所有非空的字符串它的布尔值都是True

逻辑运算简单实例如下:

a=10
b=0
c=12
print(b and a)      #为0,返回b的值
print(a and c)      #a不为0,返回c的值
print(a or b)       #a不为0,返回a的值
print(a or c)       #a不为0,返回a的值
print(b or c)       #b为0,返回c的值
print(not a)        #a不为0,返回False
print(not b)        #b为0,返回True
print(a and b or c)     #从左到右,a and b的结果为0,0 or c,返回c的值
print(a and (b or c))       #先计算括号内的表达式,b or c,结果为c的值,不为0,a的值不为0,返回c的值
print(a and (not b))        #先计算括号内的表达式,not b的值为True,a的值不为0,返回True

结果为:

成员运算符

成员运算符包括:in(如果在指定的序列中找到值返回 True,否则返回 False),not in(如果在指定的序列中没有找到值返回 True,否则返回 False)

成员运算符简单实例如下:

str1='str1'
list1=[1,2.3,'str1']
tuple1=(1,2.3,'str1')
set1={1,2.3,'str1'}
dict1={'name':'小花','sex':'女','age':21}
a=1
b=2.3
c='str1'
d='t'
e='name'
if a in list1:
    print('a在列表里面')
if b in tuple1:
    print('b在元组里面')
if c in set1:
    print('c在集合里面')
if d in str1:
    print('d在字符串里面')
if e in dict1.keys():
    print('e在字典里面')
if a not in list1:
    print('a不在列表里面')
if b not in tuple1:
    print('b不在元组里面')
if c not in set1:
    print('c不在集合里面')
if d not in str1:
    print('d不在字符串里面')
if e not in dict1.keys():
    print('e不在字典里面')
if 5 not in tuple1:
    print('5不在元组里面')

结果为:

身份运算符

身份运算符包括:is(判断两个标识符是不是引用自一个对象),is not(判断两个标识符是不是引用自不同对象)。

在python中,对象包含三个基本要素,分别是:id(身份标识),type(数据类型),value(值)

==和is的区别在于,它们进行比较的内容不同,==用于比较value(值),而is用于比较id(身份标识),id就是内存地址,相当于c语言中的指针

身份运算符的实例如下:

a=b=[1,2,3]
c=[1,2,3]
if a==b:
    print('a和b的值相同')
if a==c:
    print('a与c的值相同')
if a is b:
    print('a与b的id相同')
if a is c:
    print('a与c的id相同')
if a is not c:
    print('a与c的id不同')
print('a的id为:',id(a))
print('c的id为:',id(c))

结果为:

运算符优先级

我们进行运算时,是按照运算符的优先级顺序进行的,优先级高的先执行,优先级低的后执行,同一优先级的按照从左往右的顺序执行。

常用运算符的优先级从高到低依次是:

  • 小括号:()
  • 幂:**
  • 正、负、按位非:+、-、~
  • 乘、除、整除、取余:*、/、//、%
  • 加、减:+、-
  • 移位:<<、>>
  • 按位与:&
  • 按位异或:^
  • 按位或:|
  • 比较运算(包括成员运算符和身份运算符):in、not  in、is、is not、<、<=、>、>=、!=、==
  • 逻辑非not
  • 逻辑与:and
  • 逻辑或:or
  • 赋值运算符:=

一些简单的例子如下:

a = 20
b = 10
c = 15
d = 5
e = 0
e = (a + b) * c / d  # ( 30 * 15 ) / 5
print("(a + b) * c / d 运算结果为:", e)
e = ((a + b) * c) / d  # (30 * 15 ) / 5
print("((a + b) * c) / d 运算结果为:", e)
e = (a + b) * (c / d)  # (30) * (15/5)
print("(a + b) * (c / d) 运算结果为:", e)
e = a + (b * c) / d  # 20 + (150/5)
print("a + (b * c) / d 运算结果为:", e)

运行结果为:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1284582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像万物分割——Segment Anything算法解析与模型推理

一、概述 在视觉任务中&#xff0c;图像分割任务是一个很广泛的领域&#xff0c;应用于交互式分割&#xff0c;边缘检测&#xff0c;超像素化&#xff0c;感兴趣目标生成&#xff0c;前景分割&#xff0c;语义分割&#xff0c;实例分割&#xff0c;泛视分割等。 交互式分割&am…

二、DVP摄像头调试笔记(dvp外设驱动篇、寄存器篇)

问题描述点 &#xff08; 存在MCK&#xff0c;I2C数据都正常发送情况排查&#xff09; 一、首先排查行同步信号和场同步信号是否与芯片的有效电平是否一致 1、确认当前camera寄存器的VSYNC寄存器设置是高有效还是低有效 2、确认当前camear寄存器的HSYNC寄存器设置是高有效还是…

12.4_黑马MybatisPlus笔记(下)

目录 11 12 thinking&#xff1a;关于Mybatis Plus中BaseMapper和IService&#xff1f; 13 ​编辑 thinking&#xff1a;CollUtil.isNotEmpty? 14 thinking&#xff1a;Collection、Collections、Collector、Collectors&#xff1f; thinking&#xff1a;groupBy&#…

手机升级到iOS15.8后无法在xcode(14.2)上真机调试

之前手机是iOS14.2的系统,在xcode上进行真机测试运行良好&#xff0c;因为想要使用Xcode的Instruments功能&#xff0c;今天将系统更新到了iOS15.8 &#xff0c;结果崩了 说是Xcode和手机系统不兼容不能进行真机测试。在网上查不好些方法&#xff0c;靠谱的就是下载相关版本的…

配置攻击防范示例

1、组网需求。 如果局域网内存在Hacker向SwitchA发起畸形报文攻击、分片报文攻击和泛洪攻击&#xff0c;将会造成SwitchA瘫痪。为了预防这种情况&#xff0c;管理员希望通过在SwitchA上部署各种攻击防范措施来为用户提供安全的网络环境&#xff0c;保障正常的网络服务。 2、配…

[读论文]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

github: GitHub - Nota-NetsPresso/BK-SDM: A Compressed Stable Diffusion for Efficient Text-to-Image Generation [ICCV23 Demo] [ICML23 Workshop] ICML 2023 Workshop on ES-FoMo 简化方式 蒸馏方式&#xff08;训练Task蒸馏outKD-FeatKD&#xff09; 训练数据集 评测指标…

今日实施|解读新国标对数据库审计的能力要求

数据库审计是数据安全建设不可或缺的技术工具之一&#xff0c;无论是国家级的法律或标准&#xff0c;还是等保以及行业级的安全标准均对使用数据库审计有明确要求。据相关数据统计显示&#xff0c;数据库审计产品的市场需求已占据中国数据库安全市场容量的6成以上。 12月1日&am…

openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引

文章目录 openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引141.1 背景信息141.2 重建索引141.3 操作步骤 openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引 141.1 背景信息 数据库经过多次删除操作后&#xff0c;索引页面上的索引键将被…

Spring Session介绍

Spring SessionSession储存到Redis1&#xff1a;添加依赖2&#xff1a;配置信息3:Spring Session存String3:Spring Session存对象 项目改造-Redis储存Session Spring Session Spring Session储存在Redis和取的执行流程&#xff1a; 1&#xff1a;request.getSession() 方法时&…

微软 Power Platform 零基础 Power Pages 网页搭建实际案例实践(三)

微软 Power Platform 零基础 Power Pages 网页搭建教程之案例实践学习&#xff08;三&#xff09;结合Power Apps和Power Automate Power Pages 实际案例学习 微软 Power Platform 零基础 Power Pages 网页搭建教程之案例实践学习&#xff08;三&#xff09;结合Power Apps和Po…

AWS攻略——VPC初识

大纲 在网络里启动一台可以ssh上去的机器查看区域、VPC和子网创建EC2连接Web端连接客户端连接 知识点参考资料 VPC是在AWS架构服务的基础&#xff0c;有点类似于我们在机房里拉网线和设置路由器等。等这些设施完备后&#xff0c;我们才能考虑给机器部署服务。而很多初识AWS的同…

字节跳动小游戏SDK接入

1.分包加载报错&#xff1a;去掉game.json中分包加载的部分 2. JSON格式问题&#xff1a;解决办法&#xff1a; 3.解决办法&#xff1a;点开详情&#xff0c;在ES6转Es5把打钩去掉 4.视频广告无法加载的问题&#xff1a; 开发者工具上无法进行视频广告调试&#xff1b;必须在真…

根文件系统初步测试

一. 简介 上一篇文章学习了向所编译生成的根文件系统中加入 lib库文件。文章地址如下&#xff1a; 根文件系统lib库添加与初步测试-CSDN博客 本文继上一篇文章的学习&#xff0c;本文对之前制作的根文件系统进行一次初步测试。 二. 根文件系统初步测试 为了方便测试&#…

【PyTorch】多层感知机

文章目录 1. 模型和代码实现1.1. 模型1.1.1. 背景1.1.2. 多层感知机1.1.3. 激活函数 1.2. 代码实现1.2.1. 完整代码1.2.2. 输出结果 2. Q&A 1. 模型和代码实现 1.1. 模型 1.1.1. 背景 许多问题要使用线性模型&#xff0c;但无法简单地通过预处理来实现。此时我们可以通过…

ElasticSearch基础知识

ElasticSearch是一个高扩展的分布式全文搜索引擎&#xff0c;基于Lucene作为核心实现所有索引和搜索的功能。 使用场景&#xff1a; &#xff08;1&#xff09;搜索领域&#xff1a;如维基百科、谷歌&#xff0c;全文检索等。 &#xff08;2&#xff09;网站具体内容&#xf…

计算机网络:传输层——多路复用与解复用

文章目录 前言一、Socket&#xff08;套接字&#xff09;二、多路复用/解复用三、多路解复用&#xff08;1&#xff09;多路解复用原理&#xff08;2&#xff09;无连接&#xff08;UDP&#xff09;多路解复用&#xff08;3&#xff09;面向连接&#xff08;TCP&#xff09;的多…

普通策略梯度算法原理及PyTorch实现【VPG】

有没有想过强化学习 (RL) 是如何工作的&#xff1f; 在本文中&#xff0c;我们将从头开始构建最简单的强化学习形式之一 —普通策略梯度&#xff08;VPG&#xff09;算法。 然后&#xff0c;我们将训练它完成著名的 CartPole 挑战 — 学习从左向右移动购物车以平衡杆子。 在此…

哈希与哈希表

哈希表的概念 哈希表又名散列表&#xff0c;官话一点讲就是&#xff1a; 散列表&#xff08;Hash table&#xff0c;也叫哈希表&#xff09;&#xff0c;是根据关键码值(Key value)而直接进行访问的数据结构。也就是说&#xff0c;它通过把关键码值映射到表中一个位置来访问记…

MySQL的多表查询

多表关系 一对多(多对一)-> 多对多-> 一对一-> 概述 概述 多表查询分类 内连接 代码演示--> -- 内连接演示 -- 1.查询每一个员工的姓名&#xff0c;及关联的部门的名称(隐式内连接实现) select emp.name, dept.name from emp,dept where emp.dept_id dept.id; …

10、外观模式(Facade Pattern,不常用)

外观模式&#xff08;Facade Pattern&#xff09;也叫作门面模式&#xff0c;通过一个门面&#xff08;Facade&#xff09;向客户端提供一个访问系统的统一接口&#xff0c;客户端无须关心和知晓系统内部各子模块&#xff08;系统&#xff09;之间的复杂关系&#xff0c;其主要…