国科大Python编程基础--Chapter03基础语法下

六、运算符和表达式

Python的运算符包括:

  • 算术运算符
  • 位运算符
  • 关系运算符
  • 逻辑运算符

表达式是由各种类型的数据和运算符组成的有意义的式子。

1、算术运算符和算术表达式

(1)整数运算

在这里插入图片描述

① 运算顺序

  • Python算术运算的规则与常规算术的规则相同。

② 长度不受限制

  • 与其他大多数编程语言不同,Python对整数的长度没有限制,可以执行数十位甚至数百数千位的整数运算。

如:27**100
在这里插入图片描述

(2)浮点数运算

  • 所有适合用于整数的算术运算符都可用于浮点数,包括%(求余)和//(整除)。

  • 例如:
    在这里插入图片描述

① 溢出

  • 与整数不同,浮点数存在上限和下限,超出上限或下限将导致溢出错误。这种限制与不同的计算机系统有关。

  • 应将此问题考虑在内,以避免溢出。

  • 例如:
    在这里插入图片描述

② 精度有限

  • 在计算机中,数字用二进制表示,但并非所有的浮点数都可用二进制精确表示。

  • 如:
    在这里插入图片描述

  • 对多数程序来说,小数点之后包含17位足够了,但如果执行大量计算时小误差会累计为大误差,当需要进行精密计算时,必须考虑细微的浮点数误差,避免它们累积出大误差。

  • 一般而言,应优先考虑使用整数,因为它们更精确且不会溢出(Python中)。

有关浮点数信息(本机安装系统):
在这里插入图片描述

(3)复数运算

除了//和%运算符之外,其他用于整数的算术运算符都可用于复数。

复数可以分离实数部分和虚数部分

  • 复数.real
  • 复数.imag

复数的共轭

  • 复数.conjugate()
    在这里插入图片描述

(4)常用内置数学函数

在这里插入图片描述
例如
在这里插入图片描述

(5)math库中常用的数学函数

在这里插入图片描述

在这里插入图片描述

(6)其他内置数学模块简介

  • cmath模块—除具备math模块的功能之外,还支持复数运算
  • decimal模块—支持固定精度的浮点数计算
  • fractions模块—可生成分数,或将浮点数转换为分数
  • 例如:
    在这里插入图片描述

(7)random库中常用的函数

在这里插入图片描述

例如:随机数库的使用
在这里插入图片描述

在这里插入图片描述

例如:调用seed()函数,重置随机种子
• 当设定相同的种子后,每次调用随机函数后生成的随机数都是相同的。这就是随机种子的作用。
在这里插入图片描述

说明:

  • 因为计算机是一个确定设备,不能生成真正的随机数。所以,由计算机产生的随机数都是由一个种子开始的伪随机序列。
  • 相同的随机种子产生相同的伪随机数序列,也有利于程序的验证执行。
  • 若未设定随机数种子,则默认采用系统时钟作为随机数种子。

2、位运算符及表达式

在这里插入图片描述
位运算符是对其操作数按其二进制形式逐位进行运算,参加位运算的操作数必须为整数。

位运算—按位取反(~)

  • 运算规则:单目运算符,对一个二进制数按位取反。

例如:

 0o2500010101
 ~0o2511101010

说明:计算机中,负数是以正值的补码形式表示的(补码=反码+1),因此:
在这里插入图片描述

位运算—移位(<<、>>)

左移运算(<<)

  • 左移后,低位补0,高位左移(因为Python整型数据无界限,与C/C++不同,C/C++高位舍弃)。

右移运算(>>)
右移后:

  • 低位:舍弃
  • 高位:
    • 无符号数:补0
    • 有符号数:补“符号位”

例如:
在这里插入图片描述

位运算—按位与(&)

运算规则:
两个操作数进行按位与:

  • 若对应位都是1,则结果该位为1,
  • 若对应位有一个为0或都为0,则结果该位为0。

例如:
在这里插入图片描述

用途:

  • 将某一位置0,其他位不变。
    例如:将变量a的最低位置0: a = a & 0xfe; ;(0xfe:1111 1110)
  • 取指定位。
    例如:取出a的低字节,置于c中:c=a & 0xff; (0xff:1111 1111)

位运算—按位异或(^)

运算规则:
两个操作数进行异或:

  • 若对应位相同,则结果该位为 0,
  • 若对应位不同,则结果该位为 1,

例如:计算 0o71^0o52
在这里插入图片描述

用途举例:使特定位翻转(与0异或保持原值,与1异或取反)

例如:要使 01111010 低四位翻转:
在这里插入图片描述

位运算—按位或(|)

运算规则
两个操作数进行按位或:

  • 若对应位其中有一个是1,则结果该位为1,
  • 若对应位都为0,则结果该位为0。

例如:
在这里插入图片描述

用途:将某些位置1,其他位不变。

例如:将变量 a 的低字节置 1 :
a = a | 0xff;

例如:位运算表达式
在这里插入图片描述

3、关系运算符和关系表达式

在这里插入图片描述

例如:
在这里插入图片描述

4、逻辑运算符和逻辑表达式

在这里插入图片描述

基本逻辑运算符的真值表
在这里插入图片描述

例如:
在这里插入图片描述

Python逻辑运算符的说明:

  • 在使用逻辑运算符时,最需要注意的一点是短路逻辑(或叫做惰性求值),它表达的意思是:逻辑运算是自左向右进行的,如果左边已经决定结果,就不会再去做右边的计算。
  • 此外,在Python语言中,非“0”的数值或者字符串被视为“真”,表示“True”。

逻辑非—not

  • 结果只有 True和False;
  • not可以对符号右侧的值进行非运算。对于布尔值,非运算会对其进行取反操作,True变False,False变True;对于非布尔值,非运算会先将其转换为布尔值,然后再取反。
  • 字符串:有内容为True,空字符串为False
  • 数字:0为False ,其它为True

例3-9:
在这里插入图片描述

逻辑与—and

  • and两侧的值为布尔值时,结果只有True和False,当两侧都为True 时,结果才为 True ,否则为False。
  • 当and两侧的值为数字、字符串或布尔值混合时
    • 若左值为非0、非空串或True时,结果取右值
    • 若左值为0、空串或False时,结果取左值

例3-10:
在这里插入图片描述

逻辑或—or

  • or两侧的值布尔值,结果只有True和False,当两侧值都为False,结果才为False。
  • 当or两侧的值为数字、字符串或布尔值混合时
    • 若左值为非0、非空串或True时,结果取左值
    • 若左值为0、空串或False时,结果取右值

例3-11:
在这里插入图片描述

5、各类运算符的优先级

• 算术运算符
• 位运算符
• 关系运算符
• 逻辑运算符
在这里插入图片描述

6、常用类型转换函数

类型转换是常用功能,Python提供了很多简化这种工作的内置函数。

常用的有:

  • float
  • int
  • str
  • round
  • complex

(1)浮点数转换函数

使用函数float(x)将数字或数字形式的字符串转换为浮点数。

例如:
在这里插入图片描述

(2)整数转换函数

使用函数int(x)将数字或整数数字形式的字符串转换为整数。

例如:
在这里插入图片描述

(3)字符串转换函数

函数str(n)将指定的数字转换为相应的字符串。

例如:
在这里插入图片描述

隐式类型转换:

  • 有时Python会自动在数值类型之间转换,而不要求显式地调用转换函数。
  • 三种类型存在一种逐渐“扩展”的关系:
    整数-> 浮点数-> 复数 (整数是浮点数特例,浮点数是复数特例)
  • 不同数字类型之间可以进行混合运算,运算后生成结果为最宽类型

例如:
在这里插入图片描述

(4)舍入函数

函数round(x)——标准圆整方式(将小数部分.5的数字圆整到最接近的偶数—被称为银行家圆整。因此,小数部分为.5的数字可能向下圆整,也可能向上圆整)。

例如:
在这里插入图片描述

(5)复数转换函数

函数complex(x)—将整数、浮点数或数字形式的整数、浮点数字符串转换为复数。

例如:
在这里插入图片描述

七、赋值语句

变量第一次赋值,同时获得类型和“值”

  • Python是动态的强类型语言
  • 不需要显式声明,根据“值”确定类型
  • 以“引用”的方式实现赋值

格式:
在这里插入图片描述

功能:定义新的变量;让已定义的变量指向特定值。
例如:
在这里插入图片描述

可将任何值赋给变量,包括其他变量的值。
例如:
在这里插入图片描述

2、Python定义变量的方式与其他高级语言的区别

  • Python与其他高级语言定义变量的方式及内部原理有很大不同。例如:定义一个整型变量并赋值1。
  C++描述:int i=1;
  Python描述:i=1
  • Python根据变量的值自动判断变量的类型,程序员不需要关心变量究竟是什么类型,只需知道创建的变量中存放了一个数,以后的工作只是对这个数值进行操作,Python会对这个数的生命周期负责。
  • 更重要的是,C或Java只是创建了一个int型的普通变量;而Python创建的是一个整型对象,且Python自动完成了整型对象的创建工作,不再需要像C++那样通过构造函数创建。
  • Python内部没有普通类型,任何类型都是对象。如果C或Java需要修改变量i的值,只需重新赋值即可,但Python并不能修改对象i的值。

例3-12:测试两个i是否为同一对象
在这里插入图片描述

3、变量如何引用值

  • 对于x=expr这样的赋值语句,可理解为:让x指向表达式的值。
  • 注意:expr可以是任何结果为值的Python表达式。

如执行下列赋值后的内存状况:
在这里插入图片描述

4、复合赋值运算

   +=(加赋值)		       -=(减赋值)	
   *=(乘赋值)		       /=(除赋值)	
   %=(求余赋值)           **= (乘方赋值)       
  <<=(左移位赋值)        >>=(右移位赋值)
   &=(按位与赋值)         ^=(按位异或赋值)
   |=(按位或赋值) 

复合赋值运算符的含义如下:
在这里插入图片描述

例如:
在这里插入图片描述

5、多重赋值

  • 一次给多个变量赋相同的值。

例如:
在这里插入图片描述

6、多元赋值

  • 同时给多个变量赋不同的值;
  • 等号左右两边都以元组的形式出现(有无圆括号相同)

例如:
在这里插入图片描述

  • 使用多元赋值实现两个变量的值互换
    在这里插入图片描述

整理不易🚀🚀,关注和收藏后拿走📌📌欢迎留言🧐👋📣✨
欢迎专注我的公众号:AdaCoding 和 Github:AdaCoding123
在这里插入图片描述

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值