Python基础学习(第二节 下)

1.布尔值的相关运算符

(1)布尔值

  布尔值是一个逻辑值,True表示真,False表示假。
  Python3中把True和False定义为关键字,其本质是1和0,有时甚至可以和数字相加。
测试

a = True
b = 33
print("a+b=", a + b)

测试结果
在这里插入图片描述


(2)比较运算符

  所有比较运算符返回1表示真,返回0表示假,这分别与特殊的变量True和False等价。
以下实例中假设变量a=15,b=30:

运算符 描述 实例
== 等于:比较对象的值是否相等 False
!= 不等于:比较两个对象是否不相等 True
> 大于:比较a是否大于b False
< 小于:比较a是否小于b True
>= 大于等于:比较a是否大于等于b False
<= 小于等于:比较a是否小于等于b True

测试

a,b,c=15,30,30.0
print("a和b是否相等?",a==b)
print("a是否大于b?",a>b)
print("a和b是否不相等?",a!=b)
print("a是否小于b?",a<b)
print("c是否大于等于b?",c>=b)
print("b是否大于等于c?",b<=c)
print("b是否大于等于c?",b==c)

测试结果
在这里插入图片描述
  从测试结果可以看出:比较运算符只是比较两个变量对应对象中的value值的大小,与value值的类型无关。
  上面举了一个整型和浮点型进行比较的例子,下面再看整型和布尔型比较的例子。**
测试

print("如果value的数值类型发生变化,但是数值一样,比较结果是否会报错?")
d,e,f=True,1,False
print("d是否等于e?",d==e)
print("d是否大于等于e?",d>=e)
print("d是否小于等于e?",d<=e)
print("d是不等于e?",d!=e)
print("f是否大于等于e?",f>=e)

测试结果
在这里插入图片描述


(3)逻辑运算符

运算符 格式 说明
or x or y x 为true,则不计算y值,直接返回true;x为false,则计算并返回y值
and x and y x为true,则计算并返回y值;x为false,则不计算y值,直接返回false
not not x x 为true,则返回false;x为false,则返回true

测试

a, b, c = 9, 12, 13
print("逻辑and:")
print("真和真返回:", (a < b) and (a < c))
print("真和假返回:", (a < b) and (a > c))
print("假和真返回:", (a > b) and (a < c))
print("假和假返回:", (a > b) and (a > c))
print("逻辑or:")
print("真和真返回:", (a < b) or (a < c))
print("真和假返回:", (a < b) or (a > c))
print("假和真返回:", (a > b) or (a < c))
print("假和假返回:", (a > b) or (a > c))

测试结果
在这里插入图片描述
  在使用逻辑运算符 or 和 and 时,如果符号左侧是真或者假,计算机是否会计算右侧?
测试

print("逻辑and,如果符号左侧为假,是否计算右侧?",False and (10//0))
print("逻辑and,如果符号左侧为真,是否计算右侧?",True and (10//0))

在这里插入图片描述

print("逻辑or,如果符号左侧为真,是否计算右侧?",True or (10//0))
print("逻辑or,如果符号左侧为假,是否计算右侧?",False or (10//0))

在这里插入图片描述
  从测试结果可以看出:计算机在进行逻辑运算时,其计算过程和人脑的思考过程还是有差别的,虽然结果是一致的。
  逻辑运算符 and :只要有一个为假即为假。如果符号左侧为假,则不计算判断符号右侧的真假,直接返回False;如果符号左侧为真,则计算判断符号右侧的真假,如果是真返回True,如果是假返回False。
  逻辑运算符 or :只要有一个为真即为真。如果符号左侧为真,则不计算判断符号右侧的真假,直接返回True;如果符号左侧为假,则计算判断符号右侧的真假,如果是真返回True,如果是假返回False。

在这里插入图片描述
注意逻辑运算符and和or,如果first步骤满足条件,那么就不会执行second步骤,会出现短路现象,即使y有错误系统也不会报错。


(4)同一运算符

运算符 说明
is 判断两个标识符是否引用同一对象
not is 判断两个标识符是否引用不同对象

  这里之所以说的是标识符而不是变量,是因为标识符包括变量、常量、函数、包、模块和语句等,其概念范围更大,应用范围更广。
测试

a = b = 1
print("a和b是否是同一对象?",a is b)
print("id(a)的地址为:", id(a))
print("id(b)的地址为:", id(b))
print("id(a)的数据类型为:", type(a))
print("id(b)的数据类型为:", type(b))
a, b = 1, 2
print("a和b是否是同一对象?",a is b)
print("id(a)的地址为:", id(a))
print("id(b)的地址为:", id(b))
print("id(a)的数据类型为:", type(a))
print("id(b)的数据类型为:", type(b))
print("a和b是否是同一对象?",a is b)
a, b = 1, 1.0
print(a is b)
print("id(a)的地址为:", id(a))
print("id(b)的地址为:", id(b))
print("id(a)的数据类型为:", type(a))
print("id(b)的数据类型为:", type(b))
a, b = 1, 1.0
print("a和b是否是不是同一对象?",a is not b)
print(a is not b)
print("id(a)的地址为:", id(a))
print("id(b)的地址为:", id(b))
print("id(a)的数据类型为:", type(a))
print("id(b)的数据类型为:", type(b))

测试结果
在这里插入图片描述
注意同一运算符is和比较运算符= =是有区别的:
  1.比较运算符==比较的是两个对象中的value值的大小,同一运算符is比较的是两个对象的地址是否相同;
  2.比较运算符==实际是默认调用对象的_eq_()方法;
  3.同一运算符is比比较运算符==效率要高,在进行变量和None比较运算时,应该使用is。
总结比较value用==,比较id用is

测试

a, b = 1, 1.0
print("使用==比较a和b的结果是:", a == b)
print("使用is比较a和b的结果是:", a is b)
a=b=2
print("使用==比较a和b的结果是:",a==b)
print(id(a),id(b),type(a),type(b))
print("使用is比较a和b的结果是:", a is b)
print(id(a),id(b),type(a),type(b))

测试结果
在这里插入图片描述


2.字符串

(1)字符串的基本特点

  字符串的本质是字符序列。其特点是:
  1.在Python中字符串是不可变的,无法对原字符串做任何修改;
  2.在Python中没有字符这个概念,一个字符也是字符串,长度为1;
  3.在Python3中直接使用Unicode码(16位),其可以表示世界上任何书面语言。(Python3版之前,使用的是ASC2码(8位))
  可以使用内置函数:
  ord( )把字符转化为对应的Unicode码;
  chr( )把十进制数字转化为对应字符。
测试

a = ord("我")
print("使用ord()把\"我\"转换为Unicode码:", a, id(a), type(a))
b = ord('a')
print("使用ord()把'a'转换为Unicode码:", b, id(b), type(b))
a = chr(100)
print("使用chr()把100转换为字符串:", a, id(a), type(a))
b = chr(0)
print("使用chr()把0转换为字符串:", b, id(b), type(b))
print(ord("老"), ord("高"), ord("学"), ord("P"), ord("y"))
print(chr(32769), chr(39640), chr(23398), chr(80), chr(121))
# b=chr(-100)
# print("使用chr()把-100转换为字符串:",b,id(b),type(b))
# b=chr(10000000)
# print("使用chr()把10000000转换为字符串:",b,id(b),type(b))

测试结果
在这里插入图片描述
  从测试结果可以发现,在使用内置函数ord()和chr()时需要注意以下几点:
  1.ord( )函数在使用后,返回的是整型数据,chr( )函数在使用后,返回的是字符串型的数据
  2.ord( )和chr( )函数返回的结果是相互对应的,也就是说ord( )函数返回的数据可以在chr( )中使用,同理chr( )函数返回的数据也可以在ord( )中使用;
  3.ord( )和chr( )函数内的数据都是有限定的:ord( )内的字符串只能是单个字符,无论是英文还是中文,字符串的长度只能是1;chr( )函数内的整数必须大于0,在Pycharm内测试的范围为0*110000。以上两种情况如果出现会报错,如下图所示。

b=chr(-100)
print("使用chr()把-100转换为字符串:",b,id(b),type(b))
b=chr(10000000)
print("使用chr()把10000000转换为字符串:",b,id(b),type(b))

在这里插入图片描述
在这里插入图片描述
注意:
  这里需要说明一下,chr( )和ord( )函数和之前讲的int( )、float( )、str( )函数是有区别的。
  int( )和float( )可以将任意大小的整数形式字符串转化为整型和浮点型的数据,而ord( )只能将单个字符串转化为对应的ASCII码或Unicode码,该码的数据类型为整型。
  str( )是将整数、浮点数、布尔值、列表、元组、字典等数据转化为字符串,而chr( )是将一定范围内的整数转化为ASCII码或Unicode码对应的单个字符。

测试

a=chr(101)
print("chr(101):",a)
print(a,id(a),type(a))
b=str(101)
print("str(101):",b)
print(b,id(b),type(b))
c=int("101")
print(c,id(c),type(c))
d=float("101")
print(d,id(d),type(d))
f=ord("W")
print(f,id(f),type(f))

测试结果

chr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值