当前位置: 首页 > news >正文

小白学vb还是python_小白学 Python(6):基础运算符(下)

a5816559d711b81351f1c9310db4fc90.gif

3acf0c6ff8207e96a3fe6d5d4db1c133.gif

60673a7b28b2b08e805d53702a2bcf94.png

人生苦短,我选Python

前文传送门

小白学 Python(1):开篇

小白学 Python(2):基础数据类型(上)

小白学 Python(3):基础数据类型(下)

小白学 Python(4):变量基础操作

小白学 Python(5):基础运算符(上)

前言

上一篇文章我们介绍了算术运算符和比较运算符。本篇我们继续介绍其余的几个:

  • 赋值运算符

  • 逻辑运算符

  • 成员运算符

  • 身份运算符

赋值运算符

Python 中,使用 = 号表示赋值。当然,Python 还提供了其他赋值方式,直接帮我们简化了写法,如 += , -= ,没有编程经验的同学可能会比较懵逼。

a946167ffa6b42d6d3d1b5aedda22b38.png

其实小编当年在学 Java 的时候第一次接触也是很懵的,这里其实无需懵逼,简单理解 a += 1 其实就是 a = a + 1 。这只是一种简化写法。

题外话(建:有编程经验人士阅读,无编程经验可以跳过):

在很多编程语言中如 Java ,都会有自增 i++ 这种写法,但是 Python 并没有,这是因为 += 是代表改变了变量,相当于重新生成了一个变量,把操作后的结果赋予这个新生成的变量。但是在 Python 中,变量是以内容为基准而不是像 Java 中以变量名为基准,所以只要你的数字内容是 5 ,不管你起什么名字,这个变量的 ID 是相同的,同时也就说明了 Python 中一个变量可以以多个名称访问。这样的设计逻辑决定了 Python 中数字类型的值是不可变的,例如:a 和 b 都是 5,当你改变了 a 时,b 也会跟着变,这当然不是我们希望的。

Python 中的赋值表达式可见下表:

运算符描述
=赋值运算符
+=加法赋值运算符,c += a 等效于 c = c + a
-=减法赋值运算符,c -= a 等效于 c = c - a
*=乘法赋值运算符,c = a 等效于 c = c a
/=除法赋值运算符,c /= a 等效于 c = c / a
%=取模赋值运算符,c %= a 等效于 c = c % a
**=幂赋值运算符,c = a 等效于 c = c a
//=取整除赋值运算符,c //= a 等效于 c = c // a

上面的表格光看描述总感觉有点干巴巴的,下面我们还是来举几个栗子给各位同学演示一下:

63d1e452352d078d48d6b13950060325.png

a = 10
b = 20

c = a + b
print("c = a + b 的值为:", c)

c += a
print("c += a 的值为:", c)

c *= a
print("c *= a 的值为:", c)

c /= a
print("c /= a 的值为:", c)

c = 2
c %= a
print("c %= a 的值为:", c)

c **= a
print("c **= a 的值为:", c)

c //= a
print("c //= a 的值为:", c)

运行结果如下:

c = a + b 的值为:30
c += a 的值为:40
c *= a 的值为:400
c /= a 的值为:40.0
c %= a 的值为:2
c **= a 的值为:1024
c //= a 的值为:102

逻辑运算符

逻辑运算符有三种,分别是与、或、非。

这个其实是离散数学中的概念,不知道其他专业的同学有没有学,反正学计算机的肯定有这门课。emmmmmmmmmmmmm 我们其实是 Python 教程,就不扯离散数学了,有兴趣的同学请自行百度吧。

  • and :逻辑“与”运算符,只有当and两边都是真,结果才是真

  • or :逻辑“或”运算符,只要当or一边的是真的,结果就是真

  • not :逻辑“非”运算符,反转逻辑值

这么看介绍有点抽象,我们直接上栗子,看了栗子大家就懂了,其实很简单。

print(True and True)
# True
print(True and False)
# False
print(True or True)
# True
print(True or False)
# True
print(False or False)
# False
print(not True)
# False
print(not False)
# True

成员运算符

成员运算符用来判断在指定的序列中有没有找到目标值,这个序列可以是字符串、列表和元祖。

  • in :如果在指定的序列中找到值返回 True,否则返回 False。

  • not in :如果在指定的序列中没有找到值返回 True,否则返回 False。

前面的文章尚未介绍列表和元祖,下面的示例仅使用字符串来做演示:

str = "asdfghjkl"

if 'a' in str:
print('a 在字符串 str 中')
else:
print('a 不在字符串 str 中')

if 'a' not in str:
print('a 不在字符串 str 中')
else:
print('a 在字符串 str 中')

输出结果:

a 在字符串 str 中
a 在字符串 str 中

身份运算符

身份运算符用于比较两个对象的存储单元。

  • is :is 是判断两个标识符是不是引用自一个对象

  • is not :is not 是判断两个标识符是不是引用自不同对象

示例如下:

a = 20
b = 20

if a is b:
print("a 和 b 有相同的标识")
else:
print("a 和 b 没有相同的标识")

if id(a) == id(b):
print("a 和 b 有相同的标识")
else:
print("a 和 b 没有相同的标识")

# 修改变量 b 的值
b = 30
if a is b:
print("a 和 b 有相同的标识")
else:
print("a 和 b 没有相同的标识")

if a is not b:
print("a 和 b 没有相同的标识")
else:
print("a 和 b 有相同的标识")

注意: id() 函数用于获取对象内存地址。

输出结果如下:

a 和 b 有相同的标识
a 和 b 有相同的标识
a 和 b 没有相同的标识
a 和 b 没有相同的标识

其实这个输出结果可以看出来,在 Python ,如果两个数值一样的变量, Python 并不会在内存中重新开辟内存空间,而是会复用已有的内存空间。

示例代码

本系列的所有代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便大家取用。

示例代码-Github:https://github.com/meteor1993/python-learning/tree/master/base-operator

示例代码-Gitee:https://gitee.com/inwsy/python-learning/tree/master/base-operator

cf32730eaba298b73236105086aadae4.png

a31caf47fe7121169949067da4cff7d4.gif

相关文章:

  • qt 表格中插入一行_表格中插入列,如何不影响其他表格,1.3%的人还不会?
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • l4168升级固件出错如何恢复_苹果 iOS 13 / iPadOS 官方测试版固件 IPSW 下载升级降级与恢复教程...
  • 时序约束优先级_如何写出时序收敛的代码
  • 移动端布局三种视口_移动端布局适配
  • 柱形图无数据可选中_让领导看呆!Excel多层柱形图来了
  • ios 监听一个控制器的属性_iOS控制器间跳转
  • 语言中日期间的天数怎么计算_计算员工工龄,这个问题千万要注意
  • springboot过滤字段_springboot实现拦截器之验证登录示例
  • python计算机入门书籍_计算机学习--摘自python 入门书 侯爵
  • 如何卸载更换MySQL版本_mysql卸载(win10 适用于想更换版本的)
  • dos导入mysql文件_dos下导入mysql备份文件
  • java -jar 未响应_简单易学的测试攻略:JMeter测试Java请求示例
  • python 求余数_Python数据结构与算法——散列(Hash)
  • 此操作系统不支持 .net framework 4.6.2。_聊聊.net应用程序的Docker镜像
  • “大数据应用场景”之隔壁老王(连载四)
  • 〔开发系列〕一次关于小程序开发的深度总结
  • CSS 三角实现
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JavaScript服务器推送技术之 WebSocket
  • javascript面向对象之创建对象
  • Java程序员幽默爆笑锦集
  • jquery cookie
  • node和express搭建代理服务器(源码)
  • npx命令介绍
  • PAT A1120
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • QQ浏览器x5内核的兼容性问题
  • rabbitmq延迟消息示例
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Twitter赢在开放,三年创造奇迹
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 关于extract.autodesk.io的一些说明
  • 简单数学运算程序(不定期更新)
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 那些被忽略的 JavaScript 数组方法细节
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 数组大概知多少
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 用简单代码看卷积组块发展
  • 在Mac OS X上安装 Ruby运行环境
  • 如何在招聘中考核.NET架构师
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #Linux(Source Insight安装及工程建立)
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #每日一题合集#牛客JZ23-JZ33
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (八)Flask之app.route装饰器函数的参数
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (四)汇编语言——简单程序
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)80c52学习之旅-起始篇
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • .bat批处理(五):遍历指定目录下资源文件并更新