Python从入门到高手5.2节-Python数据运算

目录

5.2.1 理解数据运算

5.2.2 操作符与操作数

5.2.3 赋值运算

5.2.4 算术运算

5.2.5 关系运算

5.2.6 逻辑运算

5.2.7 标识运算

5.2.8 结合性与优先级

5.2.9 假期即将结束


5.2.1 理解数据运算

常见的四则运算就是一种数据运算,利用四则运算可以对两个以上的数字作加减乘除。在5.1节中介绍了数据类型及其分类,在数据运算中,同样可以对运算的类型进行分类。根据数据运算的不同性质,可以将其分为算术运算,关系运算,逻辑运算。

不论是算术运算还是关系运算,或是其它类型的运算,都是按照特定的逻辑规则对数据进行表示和处理的过程。例如在等式1+1=2中,将两物相加的结果用字符2进行表示。

1+1之所以等于2,是因为我们先有了物物相加的生活经验,然后以数字符号的形式来表示这种算术逻辑的处理过程。 

5.2.2 操作符与操作数

简言之,操作符就是表示各类数据运算的符号,例如用符号+表示加法,用符号-表示减法。操作数,就是参与数据运算的数。按操作数与操作符的相对位置顺序,可将操作数分为左操作数和右操作数。

在操作符左边的即为左操作数,在操作符右边的即为右操作数。例如在算术运算1+2中,数字1与数字2都是操作数,1是左操作数,2是右操作数。

5.2.3 赋值运算

赋值运算是指将值赋予变量的过程。

Python中的赋值运算符与数学中的等号相同。

在Python中通过赋值运算来定义变量。

"""
@author: 大神薯条老师
@desc: Python中的赋值运算
"""

# 定义布尔型变量
is_happy = True

定义布尔类型变量时,一般以is作为前缀,以表达是否的含义。例如变量is_happy, 表示是否快乐的意思。同学,你在学Python时感到快乐吗?

笔者再次重申下,Python中的变量是一个储存内存地址的容器,赋值的过程,实质是将值的内存地址赋值给变量。

5.2.4 算术运算

算术运算就是加减乘除等运算。Python中的算术运算符如下表所示:

算术运算符说明
+加法运算
-减法运算
*乘法运算
/除法运算
//整除运算
%求余运算
**求幂运算

代码实例-计算正整数的各位数字

"""
@author: 大神薯条老师
@desc: 计算正整数的各位数字
"""
# 定义year变量,指向的值为1986
year = 1986
# 1. 计算千位数
number = year // 1000
 
# 计算百位数 
year = year % 1000 
number = year // 100 
 
# 计算十位数 
year = year % 100
number = year // 10
 
# 计算个位数 
year = year % 10 
number = year // 1

代码讲解:

(1) 将数字与各数位的基数作整除运算,可以获取当前数位的数字,例如千位数的基数为1000,百位数的基数为100, 十位数的基数为10,以此类推。将2020与1000进行整除,结果为2,显然2就是千位数的数字。

(2) 将数字与数位的基数进行求余运算,可获得下一数位的数。例如2121与1000进行求余运算,余数为121。如果余数小于数位的基数,那么说明该数位的数字为0。例如2020与1000进行求余运算,余数为20,20小于100,那么百位上的数字为0。算数运算与赋值运算可以进行组合。

算术运算可以与赋值运算结合起来,构成 算术与赋值的复合运算:

"""
@author: 大神薯条老师
@desc: 算术与赋值的复合运算
"""

number = 1
# (1) 加法与赋值的复合运算
number += 1
"""
number +=1 等价于 number = number +1
"""

# (2) 乘法与赋值的复合运算
number *= 1
"""
number *=1 等价于 number = number * 1
"""

# 其它的算术运算同理,不再赘述

5.2.5 关系运算

关系运算,顾名思义,就是比较值的大小。关系运算的结果为布尔类型。Python中的关系运算符如下表所示:

关系运算符说明
>判断左操作数是否大于右操作数
<判断左操作数是否小于右操作数
>=判断左操作数是否大于等于右操作数
<=判断左操作数是否小于等于右操作数
==判断左操作数是否等于右操作数
!=判断左操作数是否不等于右操作数

代码实例-计算正整数的各个位:

"""
@author: 大神薯条老师
@desc: 计算正整数的各位的数字
"""

# 定义year变量,指向的值为2020
year = 2020
 
# 1. 计算千位数
number = year // 1000
# 计算百位数 
year = year % 1000 
if year >= 100:
  number = year // 100 
else:
  number = 0
 
 
# 计算十位数 
year = year % 100 
if year >= 10:
  number = year // 10 
else:
  number = 0
 
# 计算个位数 
year = year % 10
if year >= 1:
  number = year // 1
else:
  number = 0

代码讲解:

(1) 与算术运算中的代码实例相比,这里多了条件判断,判断余数是否大于等于数位的基数

(2) 如果余数大于等于基数,那么就与基数进行整除运算,获取数位上的数字。如果余数小于基数,那么说明当前数位的数字为0

5.2.6 逻辑运算

逻辑运算,就是计算表达式逻辑值的真假。Python中的逻辑运算符:

逻辑运算符说明
and逻辑与,值都为真时,结果才为真
or逻辑或,只要一个为真,结果就为真
not逻辑非,非真就是假,非假就是真

关于逻辑运算,我们需要重点掌握短路逻辑。所谓短路逻辑,即在进行逻辑运算时,一旦符合短路逻辑条件,就立即停止表达式后面的逻辑运算。这里的短路逻辑条件,即,逻辑与运算中只要其中一个操作数为假,就触发短路,输出为假的这个操作数。逻辑或运算中只要其中一个操作数为真,就触发短路,输出为真的这个操作数。

代码实例-空口承诺:

"""
@author: 薯条老师
@desc: 短路逻辑之逻辑与
"""
# 定义love变量
love = "" and 201314 and False
# love的值为""

代码讲解:

(1) 在逻辑与运算中,只要其中一个操作数的值为假,就触发短路,返回最后一次参与运算的操作数

(2) 在表达式"" and 201314 and False中,第一个操作数为""。""是空字符串,值为假,所以会触发短路,返回的值为""。

代码实例-交错的谎言:

"""
@author: 大神薯条老师
@desc: 短路逻辑之逻辑或
"""

# 定义love变量
love = "" or False or 201314 or 748
# love的值为201314

代码讲解:

(1) 在逻辑或运算中,只要操作数的值为真,就触发短路,返回值为真的操作数。

(2) 在表达式"" or False or 201314 or 748中,第一个操作数为""。""是空字符串,值为假,所以会继续进行判断。False的值为假,继续进行判断。201314的值为真,立即停止运算,返回201314。 整型和浮点类型的0值,空字符串,布尔类型的False,None类型,这些都为假值。

5.2.7 标识运算

标识运算,是判断标识值是否相等,可以把标识运算归为关系运算的范畴。Python中的标识运算符是is。所谓的标识值,在CPython中指的是内存地址。

我们使用的Python解释器,一般指的就是CPython。CPython是用C语言实现的解释器,除了CPython, 还有用Java等语言实现的解释器。

在Python中对小整数以及英文的短字符串,在内存中进行了缓存,所以它们具有相同的标识值。Python默认把-5到256之间的小整数进行缓存。对英文短字符串也进行了缓存,限定的长度为20,且字符之间不能出现空格,否则也不会在内存中进行缓存。

代码实例-我不是我:

"""
@author: 薯条老师
@desc: Python中的标识运算
"""

the_man = "我"
me = "我"
# 使用is not 判断标识值是否相等
if the_man is not me:
  print("the man is not me")
else:
  print("the man is me!")

在交互模式的输出为: the man is not me。在PyCharm中的输出为: the man is me

在PyCharm等IDE中运行程序时,Python解释器会将文件中的所有代码一次性编译成中间字节码,这样就有了优化的契机,在一次性编译的过程中,Python解释器将全局常量存储在一块固定的内存中,供其它对象引用,所以在PyCharm中运行时,id值就相等。而在交互模式中每按一下回车键,就会触发一次编译。

5.2.8 结合性与优先级

结合性是指运算的顺序,数据运算的结合性主要有左结合性和右结合性。左结合性是指运算时从左至右进行运算,右结合性是从右至左进行运算。

在Python中赋值运算为右结合性,其它运算都为左结合性。

优先级是指数据运算中存在多个运算符时,优先执行哪种运算。在四则运算中,会优先进行乘除法运算,然后再进行加减法运算。 可按优先级高低,将Python中的各类运算进行排序:

算术运算 > 关系运算 > 标识运算 > 成员运算 > 逻辑运算 > 赋值运算

在进行数据运算时,可通过()符号来强制运算的优先级,即,使用()括住的优先级是最高的。

代码实例-真实的谎言:

"""
@author: 薯条老师
@desc: 真实的谎言
"""

the_woman = "Lohan"
lohan = "Lohan"
true_love = False
love = "" or False or 748
 
if (the_woman is lohan) and (true_love is True) or (love != 748):
  print("the true love")
else:
  print("all are lies")

代码讲解:

(1) 先计算()里面的表达式的值。

(2) 所以if语句中的表达式等价于 True and False or False

(3) and 与 or的优先级相同。按左结合性进行计算,先计算True and False,值为False。最后计算表达式False or False,值为False。

5.2.9 假期即将结束

跟薯条老师学后端开发,高级爬虫(JS逆向+安卓逆向),数据分析,大数据开发,量化交易,以及机器学习+深度学习算法。坚定自己的学习目标,保持学习的热情,那你成为高手只是时间问题。

薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。想系统学习Python和Java的同学,可以移步薯条老师的个人技术博客:薯条老师的个人技术博客http://www.chipscoco.com/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 工具库每日推荐 【Pandas】

文章目录 引言Python数据处理库的重要性今日推荐:Pandas工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:销售数据分析案例分析高级特性数据合并和连接时间序列处理数据透视表扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScrip…

市面上8款AI论文大纲一键生成文献的软件推荐

在当前的学术研究和写作领域&#xff0c;AI论文大纲自动生成软件已经成为提高写作效率和质量的重要工具。这些工具不仅能够帮助研究人员快速生成论文草稿&#xff0c;还能进行内容优化、查重和排版等操作。本文将分享市面上8款AI论文大纲一键生成文献的软件&#xff0c;并特别推…

一文了解构建工具——Maven与Gradle的区别

目录 一、Maven和Gradle是什么&#xff1f; 构建工具介绍 Maven介绍 Gradle介绍 二、使用时的区别&#xff1a; 1、新建项目 Maven&#xff1a; Gradle&#xff1a; 2、配置项目 Maven&#xff1a; Gradle&#xff1a; 3、构建项目——生成项目的jar包 Gradle&…

用小学生可以理解的语言讲一下什么是大模型

好的&#xff0c;用小学生的语言来说&#xff0c;大模型就像是一个超级聪明的机器人老师&#xff0c;它懂得很多东西&#xff0c;可以帮助我们做很多事情。 1. **懂得很多**&#xff1a;大模型知道很多知识&#xff0c;就像一个巨大的图书馆&#xff0c;里面有很多书&#xff0…

IDEA 2024.3 预览:把开发者感动到哭了

幸运的人&#xff0c; 一生都被童年治愈&#xff1b; 不幸的人&#xff0c; 一生都在治愈童年 只有勇敢的人 和有钱的人才能先享受世界 缘分就是我还不知道 会见到你就误打误撞般 遇见了你 最近 IDEA 又发布了最新的 2024.3 的预览版本 EAP&#xff0c;把开发者的心激动的…

今日指数-day08实战完整代码

今日指数-day08 1. 个股最新分时行情数据 1.1 个股最新分时行情功能说明 1&#xff09;个股最新分时行情功能原型 2&#xff09;个股最新分时行情数据接口分析 功能描述&#xff1a;获取个股最新分时行情数据&#xff0c;主要包含&#xff1a;开盘价、前收盘价、最新价、最…

AI周报(9.29-10.5)

AI应用-Elayne公司临终规划和自动化遗产结算 创业公司Elayne成立于2023年&#xff0c;由Adria Ferrier和Jake Grafenstein共同创立&#xff0c;Adria Ferrier担任CEO&#xff0c;总部位于科罗拉多州丹佛市。 Elayne公司专注于遗产规划和结算领域&#xff0c;通过人工智能技术…

【Diffusion分割】CTS:基于一致性的医学图像分割模型

CTS: A Consistency-Based Medical Image Segmentation Model 摘要&#xff1a; 在医学图像分割任务中&#xff0c;扩散模型已显示出巨大的潜力。然而&#xff0c;主流的扩散模型存在采样次数多、预测结果慢等缺点。最近&#xff0c;作为独立生成网络的一致性模型解决了这一问…

【C++】STL——list的模拟实现

目录 前言list介绍list的模拟实现总体结构节点类迭代器类链表类 默认成员函数构造函数拷贝构造赋值重载析构函数 迭代器实现双向迭代器迭代器的其他功能用多参数模板完成最终的迭代器类 list的容量相关和数据访问empty()和size()front()和back() list的修改操作任意位置插入和删…

数据结构 ——— C语言实现无哨兵位单向不循环链表

目录 前言 动态顺序表的缺陷 单链表的概念 单链表中节点的结构 单链表逻辑结构示意图​编辑 实现单链表前的准备工作 实现单链表 1. 定义节点的指针 2. 创建节点 3. 打印单链表中的所有数据 4. 在单链表头部插入数据 5. 在单链表尾部插入数据 6. 在单链表头部删除数…

脏读、不可重复读、幻读的解决方法

上一篇博客提到了脏读、不可重复读、幻读的含义&#xff0c;也知道了是因为什么情况导致出现的这些问题&#xff0c;这篇博客就带大家一起来了解一下他们的解决办法~ 脏读&#xff1a;脏读出现的原因主要是因为一个事务读取了另外一个事务未提交的数据&#xff0c;就可能出现脏…

掌握嵌套子查询:复杂 SQL 中 * 列的准确表列关系

在日常开发中&#xff0c;我们常常需要对复杂的 SQL 进行数据血缘分析。 本文重点讨论在具有 * 列的嵌套子查询中建立表和列之间正确关系的挑战。使用 Teradata SQL 代码示例来说明该过程。 本文聚焦于一个别名为 SUBSCRIBER_ 的子查询及其派生的列&#xff0c;这些列在外层查…

无需VPN!大厂力作:免费AI对口型神器登场,让你的视频制作更简单!

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 &#xff08;偶尔会因为推荐工具&#xff…

《深度学习》OpenCV 图像拼接 原理、参数解析、案例实现

目录 一、图像拼接 1、直接看案例 图1与图2展示&#xff1a; 合并完结果&#xff1a; 2、什么是图像拼接 3、图像拼接步骤 1&#xff09;加载图像 2&#xff09;特征点检测与描述 3&#xff09;特征点匹配 4&#xff09;图像配准 5&#xff09;图像变换和拼接 6&am…

实验3 选择结构

1、计算分段函数的值 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> int main() {double x,y0;scanf("%lf",&x);if(x<0){printf("error!\n");return 0;}if(0<x&&x<1){ylog10(x);}else if(1<…

缓存数据减轻服务器压力

问题:不是所有的数据都需要请求后端的 不是所有的数据都需要请求后端的,有些数据是重复的、可以复用的解决方案:缓存 实现思路:每一个分类为一个key,一个可以下面可以有很多菜品 前端是按照分类查询的,所以我们需要通过分类来缓存缓存代码 /*** 根据分类id查询菜品** @pa…

Java | Leetcode Java题解之第459题重复的子字符串

题目&#xff1a; 题解&#xff1a; class Solution {public boolean repeatedSubstringPattern(String s) {return kmp(s s, s);}public boolean kmp(String query, String pattern) {int n query.length();int m pattern.length();int[] fail new int[m];Arrays.fill(fa…

54.二叉树的最大深度

迭代 class Solution {public int maxDepth(TreeNode root) {if(rootnull){return 0;}int de0;Queue<TreeNode> qunew LinkedList<>();TreeNode tn;int le;qu.offer(root);while(!qu.isEmpty()){lequ.size();while(le>0){tnqu.poll();if(tn.left!null){qu.offe…

学会这几个简单的bat代码,轻松在朋友面前装一波13[通俗易懂]

大家好&#xff0c;又见面了&#xff0c;我是你们的朋友全栈君。 这个标题是干什么用的? 最近看晚上某些人耍cmd耍的十分开心&#xff0c;还自称为“黑客”&#xff0c;着实比较搞笑.他们那些花里胡哨的东西在外行看来十分nb,但只要略懂一些&#xff0c;就会发现他们的那些十…

论文阅读笔记-A Comparative Study on Transformer vs RNN in Speech Applications

前言 介绍 序列到序列模型已广泛用于端到端语音处理中,例如自动语音识别(ASR),语音翻译(ST)和文本到语音(TTS)。本文着重介绍把Transformer应用在语音领域上并与RNN进行对比。与传统的基于RNN的模型相比,将Transformer应用于语音的主要困难之一是,它需要更复杂的配…