Python3从零基础到入门(2)—— 运算符-2

简介: Python3从零基础到入门(2)—— 运算符

Python3从零基础到入门(2)—— 运算符-1

https://developer.aliyun.com/article/1507989


7.不同数据类型的比较

上述关系运算符的使用都是整数与整数进行比较。若是不同的数据类型进行比较,Python会先尝试进行类型转换,然后再进行比较。

(1)数字与数字比较

  • 如果两个对象都是整数或浮点数,则直接进行比较
  • 如果一个对象是整数,另一个对象是浮点数,则将整数转换为浮点数再进行比较
  • 如果一个对象是复数,则不支持比较,会抛出异常。

例如:

# 复数与整数进行比较
 
c = 1 + 2j
 
d = 10
 
print(c < d)

以上代码,a 是一个复数,值为 1 + 2i ,b 是一个整数,值为 10,使用 < 关系运算符比较这两个数的大小时,会抛出TypeError异常:

(2)字符串与字符串比较

  • 如果两个字符串不为空,则按照字母表顺序进行比较;
  • 如果一个字符串为空,则认为它比非空字符串小;
  • 如果两个字符串都为空,则认为它们相等。

例如:

# 不为空的字符串比较
 
str1 = "aaa"
 
str2 = "aba"
 
print(str1 <= str2)
 
 
# 空串与非空字符串比较
 
str3 = "hello"
 
str4 = ""
 
print(str3 <= str4)


以上代码,定义了4个字符串。


str1与str2都是非空字符串,它们进行比较时,会按照字典序来比较,str1中第2个字母是a,str2的第2个字母是b,在字母表中b排在a后面,因此在比较时,str1小于str2。


str3为非空字符串,str4为空字符串,空字符串在Python中认为比非空字符串小,因此str4小于str3。


输出结果如下:

5fb2d5a2dd53a71f7a924d659bbf1c0f_989b7dd317dd401ba627a108d74d2822.png

(3)列表、元组之间的比较

  • 如果两个列表(元组)长度相等,则按照元素顺序依次进行比较;
  • 如果两个列表(元组)长度不相等,则先比较相同位置上的元素,如果都相等则长度更长的列表(元组)更大,否则比较第一个不同的元素的大小;
  • 如果列表(元组)中包含不同类型的元素,则会尝试对它们进行类型转换,然后再进行比较。

例如:

# 列表与列表比较
 
list1 = [1, 2, 3]
 
list2 = [1, 2, 3, 4]
 
print(list1 == list2) # False
 
 
 
# 元组与元组比较
 
tu1 = (1, 2, 3)
 
tu2 = (1, 2, 3)
 
print(tu1 == tu2) # True
 
 
 
# 列表与元组比较
 
print(list1 == tu1) # True
 
print(list2 <= tu2) # TypeError!!!


以上代码,分别定义了两个列表和两个元组。

需要注意的是,列表与元组进行比较时,如果是==或!=的比较,Python通常会将元组转换为一个列表,再进行比较;而若是使用 >、<、>=、<= 进行大小比较,则会抛出TypeError类型错误。

输出结果如下:

(4)字符串与数字比较

在Python中,字符串与数字是不同类型的对象,不能直接进行大小比较,会抛出一个类型错误(TypeError)。经过测试,如果使用 == 或 != 进行比较,则不会报错,而是会判断字符串与数字不相等。

例如:

a = 1
 
b = "abc"
 
print(a == b) # 等于比较
 
print(a < b) # 大小比较


以上代码,a 是一个整数,而 b 是一个字符串,若是使用 == 来进行比较,则会直接返回False;若是进行大小比较,则会抛出类型错误。


输出结果如下:


False


Traceback (most recent call last) :


File "compare.py", line 4, in


print(a < b) # 大小比较


TypeError: '<' not supported between instances of 'int' and 'str'


虽然使用 == 或 != 来比较字符串与数字不会报错,但是不建议这样子使用。

三、赋值运算符逻辑运算符

       赋值运算符主要包括 简单赋值运算符、加法赋值运算符、减法赋值运算符、乘法赋值运算符、除法赋值运算符、取模赋值运算符、幂赋值运算符、取整除赋值运算符


1.简单赋值运算符

赋值运算符就是将某个数值赋值给某个变量的运算符。在Python中用 = 表示,如下:

1. a = 10
2. b = 5.1
3. 
4. print(a)
5. print(b)

以上两句话,代表的就是将 10 赋值给变量 a,将 5.1 赋值给变量 b;

我们可以用 print 语句进行打印输出,确认它们的值,输出结果如下:

10

5.1

这里的 = 就是最简单的赋值运算符。

2.加法赋值运算符

加法赋值运算符用 += 表示,a += c 和 a = a + c 是等价的。

含义就是 a 加上 c 的结果,赋值给 a,我们来看个例子:

1. a = 6
2. a += 7
3. 
4. print(a)

以上代码,a 最终的值等价于 a + 7,而 a 的初始值是 6,所以最后打印的 a 的值就是:

13

3.减法赋值运算符

减法赋值运算符用 -= 表示,a -= c 和 a = a - c 是等价的。

含义就是 a 减去 c 的结果,赋值给 a,例如:


1. a = 6
2. a -= 7
3. 
4. print(a)

以上代码,a 最终的值等价于 a - 7,而 a 的初始值是 6,所以最后打印的 a 的值就是:

-1

4.乘法赋值运算符

乘法赋值运算符用 *= 表示, a *= c 和 a = a * c 是等价的。

含义就是 a 乘上 c 的结果,赋值给 a,例如:

1. a = 10
2. a *= 0.1
3. 
4. print(a)

以上代码,a 最终的值等价于 a * 0.1,而 a 的初始值是 10,所以最后打印的 a 值就是:

1.0

因为乘法的结果就是看乘号两边的运算数的类型,如果都是整数,那么结果就是整数;如果有一个是浮点数,那么结果就是浮点数。

5.除法赋值运算符

除法赋值运算符用 /= 表示,a /= c 和 a = a / c 是等价的。

含义就是 a 除上 c 的结果,赋值给 a,例如:

1. a = 7
2. a /= 3
3. 
4. print(a)

以上代码,a 最终的值等价于 a / 3,而 a 的初始值是 7,所以最后打印的 a 值就是:

2.3333333333333335

为什么最后有个 5 呢?


由于浮点数精度问题,这个 5 已经在小数点的第 16 位了,已经不再属于它的精度范围,所以才会出现这样的偏差,实际运算过程中,我们不会用到这么后面的小数点。

6.取模赋值运算符

取模赋值运算符用 %= 表示,a %= c 和 a = a % c 是等价的。

含义就是 a 模上 c 的结果,赋值给 a,例如:

a = 7
a %= 3
 
print(a)


以上代码,a 最终的值等价于 a % 3,而 a 的初始值是 7,所以最后打印的 a 值就是:

1

7.幂赋值运算符

幂赋值运算符用 **= 表示,a **= c 和 a = a**c 等价。

含义就是 a 的 c 次幂的结果,赋值给 a,例如:

a = 5
a **= 4
 
print(a)


以上代码,a 最终的值等价于 a 的 4 次,而 a 的初始值是 5,所以最后打印的 a 值就是:

625

8.取整除赋值运算符

取整除赋值运算符用 //= 表示,a //= c 和 a = a // c 等价。

例如:

a = 15
a //= 2
 
print(a)


输出结果:

7

四、位运算符

       位运算可以理解成对二进制数字上的每一个位进行操作的运算,位运算分为 布尔位运算符移位位运算符


1.位运算概览

(1)布尔位运算符

1)按位与运算符 ( & )

定义描述:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。

两个数 按位与 操作如下:

a = 60     # 60 = 0011 1100
b = 13     # 13 = 0000 1101
c = 0
 
c = a & b  # 12 = 0000 1100
 
print("1 - c 的值为:", c)

输出结果如下:

1 - c 的值为: 12

2)按位或运算符 (  |  )

定义描述:只要对应的二个二进位有一个为1时,结果位就为1。

两个数 按位或 操作如下:

a = 60     # 60 = 0011 1100
b = 13     # 13 = 0000 1101
c = 0
 
c = a | b  # 61 = 0011 1101
 
print ("2 - c 的值为:", c)


输出结果如下:

2 - c 的值为: 61

3)按位异或运算符( ^ )

定义描述:当两对应的二进位相异时,结果为1。

两个数 按位异或 操作如下:

a = 60     # 60 = 0011 1100
b = 13     # 13 = 0000 1101
c = 0
 
c = a ^ b  # 49 = 0011 0001 
 
print ("3 - c 的值为:", c)


输出结果如下:

3 - c 的值为: 49

4)按位取反运算符( ~ )

定义描述:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1

两个数 按位取反 操作如下:

a = 60     # 60 = 0011 1100
c = 0
 
c = ~a     # -61 = 1100 0011 
 
print ("4 - c 的值为:", c)


输出结果如下:


4 - c 的值为: -61


注意:这里 ~a 代表是对二进制数 00111100 取反,直观感受应该是  11000011 ,即  -67。但实际输出的却是 -61, 这是为什么呢?是因为计算机中,二进制编码是采用补码的形式表示的,补码定义如下:


正数的补码是它本身,符号位为 0;负数的补码为正数数值二进制位取反后加一,符号位为一;


我们对 a求反的过程如下:


 0011 1100     # a的初始值


---------------


 0011 1100     # a初始值的补码,正数的补码是它本身


~1100 0011     # 对a的每一位取反


---------------


 1011 1100     # a取反后的数值的补码表示 11 1100  = 60, 符号位为1,即 -60。


---------------


 1011 1101     # 负数的补码为正数数值二进制位取反后加一,所以11 1101= 61,符号位为1,即 -61。


 所以我们的-61就是这么来的。

2.移位运算符

(1)左移动运算符( << )

定义描述:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

一个数 左移动运算 操作如下:

a = 60       # 60 = 0011 1100
c = 0
 
c = a << 2    # 240 = 1111 0000 
print ("5 - c 的值为:", c)

输出结果如下:

5 - c 的值为: 240

(2)右移动运算符( >> )

定义描述:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。低位丢弃,高位补0。

一个数 右移动运算 操作如下:

a = 60       # 60 = 0011 1100
c = 0
 
c = a >> 2    # 15 = 0000 1111 
print ("6 - c 的值为:", c)

输出结果如下:

6 - c 的值为: 15


Python3从零基础到入门(2)—— 运算符-3

https://developer.aliyun.com/article/1507991

相关文章
|
3月前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
1月前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
45 2
|
1月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
41 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
2月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
2月前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
50 7
|
2月前
|
开发者 Python
Python中的装饰器:从入门到实践
本文将深入探讨Python的装饰器,这一强大工具允许开发者在不修改现有函数代码的情况下增加额外的功能。我们将通过实例学习如何创建和应用装饰器,并探索它们背后的原理和高级用法。
55 5
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
112 3
|
3月前
|
机器学习/深度学习 数据采集 数据挖掘
Python编程语言的魅力:从入门到进阶的全方位解析
Python编程语言的魅力:从入门到进阶的全方位解析

热门文章

最新文章