【Python】学习笔记day3

举报
修修修也 发表于 2024/07/25 23:46:47 2024/07/25
【摘要】 【Python】学习笔记day3目录一 . 运算符 1. 算术运算符 2. 关系运算符 3. 逻辑运算符 4. 赋值运算符 一.运算符1.算术运算符Python算术运算符运算符描述实例(设变量a=10,b=20)+加 , 两个对象相加a + b 输出结果 30-减 , 得到负数或是一个数减去另一个数a - b 输出结果 -10*乘 , 两个数相乘或是返回一个被重复若干次的字符串a * b 输...

【Python】学习笔记day3

目录

. 运算符

1. 算术运算符

2. 关系运算符

3. 逻辑运算符

4. 赋值运算符


.运算符

1.算术运算符

Python算术运算符

运算符

描述

实例(设变量a=10,b=20)

+

, 两个对象相加

a + b 输出结果 30

-

, 得到负数或是一个数减去另一个数

a - b 输出结果 -10

*

, 两个数相乘或是返回一个被重复若干次的字符串

a * b 输出结果 200

/

, x除以y

b / a 输出结果 2

%

取模 , 返回除法的余数

b % a 输出结果 0

**

, 返回xy次幂

a**b 1020次方, 输出结果 100000000000000000000

//

取整除 , 返回商的整数部分(向下取整)

 9 // 2 输出结果  4

-9 // 2 输出结果 -5

算术运算符的运算顺序:

先算乘方,然后是乘除,最后算加减.

如果运算过程中想修改默认的运算顺序,就需要加上 ( ) .

Python,0/0.0都不能作为除数.(会出现抛出异常,程序被终止).

除法的截断:

如果是整数/整数,除不尽,得到的就是小数,不会出现截断的情况.

**进行的乘方运算,既支持整数次方,也支持小数次方.(即开方运算)

// 表示地板除法(取整除法) ,其实就相当于C语言里的除法.但要注意负数运算是向下取整!

Python,字符串之间可以相加,

整数和浮点数可以相加,

整数和布尔值可以相加  (True1,False0)但是没有意义.

Python中只有字符串类型,没有字符类型!


 2.关系运算符

<  <=  >  >=  ==  !=这一系列的运算符称为关系运算符,它们是在比较操作数之间的关系.

其中:

<=   小于等于

>=   大于等于

==   等于

!=   不等于

如果关系符合,则表达式返回True.如果关系不符合,则表达式返回False.:

a=10

b=20




print(a<b)

print(a>b)

print(a<=b)

print(a>=b)

print(a==b)

print(a!=b)

运行结果:

编辑


关系运算符比较字符串

关系运算符不仅能比较数字,还能比较字符串,:

a="hello"

b="world"




print(a<b)

print(a>b)

print(a<=b)

print(a>=b)

print(a==b)

print(a!=b)

运行结果:

编辑

 字符串的比较逻辑是字典序.

先看首字母在字母表上的顺序,谁小,谁就排在前面.

如果首字母相同,依次比较第二个字母,第三个字母......

如果直到最后一个字母都相同,则两字符串相等.

字符串在字典上越靠前,就越小,越靠后,就越大.

注意:中文字符串在Python中可以比较大小,但比较的结果没有任何意义.

因为在计算机里,表示中文,是用多个字节构成的一个比较大的数字来进行比较的.

在某些场景中需要对中文进行排序时,需要借助第三方库来实现.


关于字符串能否使用==/!=来比较:

编辑

Python中支持连续大于或连续等于(链式赋值)的写法,这一点在C语言中是不支持的,:

a=10

print(0<a<20) #判定a是否大于0且小于20

运行结果:

编辑


关系运算符比较浮点数

针对浮点数来说,使用==比较相等,会存在一定的风险!!!

因为浮点数在内存中的存储和表示,是可能存在误差的!!!

(有关浮点数在内存中的存储还不清楚的朋友可以移步我的这篇博客 C 数据结构】整形和浮点型在内存中的存储 ,里面对整数和浮点数在内存中的存储方式做了较为生动的图解)

这样的误差在进行算术运算的时候就可能被放大,从而导致==的判定出现误判.

:

编辑

编辑

我们逐步拆解一下这个表达式的问题:

print(0.1+0.2==0.3)




print(0.1)

print(0.2)

print(0.1+0.2)

print(0.3)

输出结果:

编辑

可以看到,虽然0.30.3000000000000004已经非常接近了.

但是如果直接使用==进行比较,仍然会出现False的情况.

正确的比较浮点数相等:

作差,看差值是否小于预期的误差范围!

:

a= 0.1 + 0.2

b= 0.3




#看a-b是否是一个非常小的数字,是否在误差范围之内

print(-0.000001<(a-b)<0.000001)

运行结果:

编辑


3.逻辑运算符

and   

并且

两侧操作数均为True,表达式的值为True.否则为 False.(一假即假)

or

或者

 两侧操作数均为False,表达式的值为False,否则为True(一真即真)

not

逻辑取反

 只有一个操作数.操作数为True,则返回False,操作数为False,则返回True.


短路求值:

是逻辑运算符中的重要细节.

对于and操作来说,如果左侧表达式为False,那么整体的值一定是False,右侧的表达式不必求值.

对于or操作来说,如果左侧表达式为True,那么整体的值一定是true,右侧的表达式不必求值.

验证方法:

下面这个程序如果没有短路求值的话,那么接着运行,0做除数会导致程序抛出异常

a=10

b=20

print(a>b and 10/0==1) #此处如果没有短路求值的话,那么接着运行用0做除数会导致程序抛出异常

运行结果:

编辑

 可以看到,程序成功运行,并给出了表达式的判断结果.

如果将and左右的表达式交换位置:

a=10

b=20

print(10/0==1 and a>b)

运行结果就会抛出异常:

编辑

 可见,由此可以验证短路求值是真实存在的.


4.赋值运算符

Python赋值运算符

运算符

描述

实例

=

简单的赋值运算符

c = a + b a + b 的运算结果赋值为 c

+=

加法赋值运算符

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

=表示赋值,将右侧的值填充到左侧的空间中.

因此=左侧必须是变量,不能是无法修改的常量或常量表达式.

使用复合赋值运算符时程序会先读取变量,然后计算,最后赋值,因此必须保证左侧的变量是已经被定义过的,否则程序就会因为第一步读取变量失败而报错.

Python中不支持++/--这样的自增操作!


链式赋值:

下面这种链式赋值的意思就是先把20赋值给b,再把b赋值给a.

a=b=20

该行代码相当于:

a=20

b=20

虽然链式赋值在语法上是允许的,但一般在编程中还是不建议使用,因为代码可读性会很低.


多元赋值:

下面这种多元赋值的意思是,10赋值给a,20赋值给b.

a,b=10,20

多元赋值也不推荐使用,但可以使用多元赋值帮助我们解决一些特殊的问题:

,当我们需要交换两个变量的值时

传统方法是再创建一个临时变量来完成两个变量的互换,:

a=10

b=20




tmp=a

a=b

b=tmp

但使用多元赋值时,我们可以直接一步就完成交换,:

a=10

b=20




a,b=b,a


今日感悟:超额付出,而不是等额付出,期待超额回报.

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。