当前位置: 首页 > article >正文

【python知识】运算符博览

目录

目录

一、说明

二、基本数值运算符

2.1 基本运算符的列举

2.2 基本运算符的示例

2.3 复数基本运算符的示例

三、整数进制转化

3.1 进制转换运算符

3.2 实验代码和说明 

四、整数按位运算

4.1 全部位运算符号

4.2 整数按位运算的实验

五、布尔运算符

六、比较运算符

六、分隔符有 

七、函数及使用    

八、操作符优先级

九、特殊用法

十、其它



一、说明

        python到底有多少运算符,它们针对的哪些数据类型,操作数有多少。为了没有遗漏地掌握了解,本篇将详细讨论有关运算符的知识。

二、基本数值运算符

2.1 基本运算符的列举

        数字运算符号,针对数字类型对象,包括int,float类型,基本的操作符号有9个。通过下表列出:

运算操作符单双目数字类型描述
+x+yint   float complex实现加运算
-x-yint   float complex实现减运算
*x*yint   float complex实现乘运算
/x/yint   float complex实现除运算
//x//yint   整除
++xint   float  complexx本身
--yint   float complexx取负
%x % yint   float 求模
**x ** yint float complex指数

2.2 基本运算符的示例

实验1:加减法实现整形、浮点型

a1 = 100
a2 = 200
print(a1+a2)
>>300              整形+ 整形 = (输出) 整形
​a1 = 100
a2 = 200.
print(a1-a2)
>>-100.0           整形 - 浮点形 = (输出) 浮点形

实验2:乘除法实现整形、浮点型

a1 = 100
a2 = 20000000000000000000000000000000000000000
print(a1*a2)
>> 2000000000000000000000000000000000000000000

整形 * 整形 = (输出) 整形,此例整数虽然大,但也不转成浮点类。
a1 = 100
a2 = 210
print(a1/a2 )
>>0.47619047619047616
a1 = 100
a2 = 210
print(a1/0 )
 报错:程序中断

实验3: 单目运算

a1 = 100
print(+a1 )
print(-a1)

>> 100
  -100     (任意)形 = (输出) 任意形

实验4: 取余数

a1 = 100
a2 = 210
print(a2%a1 )

>>10
a1 = 100.
a2 = 210.
print(a2%a1 )
>>10.0          #浮点数也可以的

实验5:指数操作

a1 = 100.
a2 = 210.
print(a2**a1 )
>> 1.6669764843963373e+232

2.3 复数基本运算符的示例

        复数运算请大家自己验证吧。

三、整数进制转化

3.1 进制转换运算符

        因为计算机是二进位法则,因此,凡是位运算基本需要先转换成二进制体系,也有8进制和16进制中间类型(是字符串类型)。这也算是操作符号吧:

操作函数意义输入数据类型描述
int将x转化成10进制整数(bin、oct、hex )int(str,bse) 
int10进制转化成10进制floatint(float)
bin将x转化成二进制int如0b1111字符串
oct将x转化成8进制int如0o1357字符串
hex将x转化成16进制int如oxff3d字符串

        密切注意:10进制数转化成其它进制数,结果是个字符串类型,并非实际的数,也不能参与任何数字运算,千万别搞错!!!

3.2 实验代码和说明 

实验1:输入十进制,转化成二进制、八进制、16进制

a=int(input('请输入要转换的十进制数:'))
# 十进制转二进制 (bin)
b1=bin(a)
b2=oct(a)
b3 = hex(a)
print('十进制转换为二进制是:',b1)
print('十进制转换为八进制是:',b2)
print('十进制转换为十六进制是:',b3)
>>
请输入要转换的十进制数:211
十进制转换为二进制是: 0b11010011
十进制转换为八进制是: 0o323
十进制转换为十六进制是: 0xd3

注意:输入只能整数,否则报错!!!。

实验2:输入10进制,转化成它进制,再从它进制转10进制

a=int(input('请输入要转换的十进制数:'))
# 十进制转二进制 (bin)
b1=bin(a)
b2=oct(a)
b3 = hex(a)
print('十进制转换为二进制是:',b1)
print('十进制转换为八进制是:',b2)
print('十进制转换为十六进制是:',b3)

c1 = int(b1,2)
c2 = int(b2,8)
c3 = int(b3,16)
print('它进制转化成十进制:',c1,c2,c3)

>>>
请输入要转换的十进制数:254
十进制转换为二进制是: 0b11111110
十进制转换为八进制是: 0o376
十进制转换为十六进制是: 0xfe
它进制转化成十进制: 254 254 254

 注意:int(str,base) 其中str是字符串,base是进制数(2,8,16 )

实验3:输入10进制浮点数,转化成10进制整数

a = float(input('请输入要转换的十进制数:') )
b1 = int(a)
print('它进制转化成十进制:',a)
print('它进制转化成十进制:',b1)
print(type(a))
>>>
请输入要转换的十进制数:113.55
输入转化成十进制: 113.55
十进制转化成十进制: 113

实验4:int函数输入字符串 

a = int("1124")
b = int("1124.6")
print(a,b)
>>> Traceback (most recent call last):
  File "C:/Users/yan/PycharmProjects/speechDev/myroad/tan.py", line 18, in <module>
    b = int("1124.6")
ValueError: invalid literal for int() with base 10: '1124.6'

注意:int(x)如果x是字符串,它的x只能是整数,改成浮点数出错!!!

四、整数按位运算

4.1 全部位运算符号

        凡是位运算基本需要先转换成二进制体系。

符号描述规则输入类型
&    与  与运算 两个位都为1时,结果才为1
|    或    或运算两个位都为0时,结果才为0
^    异或    异或两个位相同为0,相异为1
~    取反  取反 0变1,1变0
<<左移各二进位全部左移若干位,高位丢弃,低位补0
>>右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

4.2 整数按位运算的实验

实验1:数的class始终是10进位,不存在二进制(8,16进制)数据对象。

c =  1|2
print(c )

d = 0b11
e = 0b1
print(d|e)
print(type(d))
>>>
3
3
<class 'int'>

实验2:因为不存在二进制(8,16进制)数据对象,所以有显示格式,将10进制显示成二进。

d = 0b1101
print( bin(d))
print( type(bin(d)))
>>>
0b1101
<class 'str'>
  • 至于运算,请读者自己整理

<<>>&|^~

五、布尔运算符

  andornot,详细用,逻辑运算符,专门针对表达式操作:

运算符意义输入类型
and布尔与表达式
or布尔或表达式
not布尔非表达式

例1:ss不是空指针,并且类型为字符串

( ss is not None)and (type(ss)==str)

注意这里的“is not”是一个固定结构,并不是布尔“非”,切记。
 

六、比较运算符

        比较是构成将表达式转化成布尔逻辑的基础。

  • 比较运算符如下
比较运算符意义数据类型
<小于int float
>大于 int float
<=小于含等于 int float
>=大于含等于int float
==等于int float
!=不等于int float
in在列表(容器)内任意
not in不在列表(容器)内任意
is对象指针
is not不是对象指针

七、分隔符有 

()[]{},:.;=+=-=*=/=//=%=&=|=^=>>=<<=**=

        部分分隔符用法举例:

        圆括号绑定表达式,或元组显示,方括号用来对序列进行索引、切片取值或列表显示,花括号字典显示或集合显示

范例1:

3 * (1 + 2) * (1,)
(1, 1, 1, 1, 1, 1, 1, 1, 1)
[1,2,3,4][1:3]
[2, 3]
{'列表':[], '集合':{1,2,3}}
{'列表': [], '集合': {1, 2, 3}}

范例2:

  # 通常用来注释代码,但不能包含在字符串中,注释在语法分析中会被忽略:

# 这是注释
'''
# hello world
# hello python
'''
'\n# hello world\n# hello python\n'

        操作符除了常规的用法,操作不同的数据类型,相应的数据类型可能定义了特定的操作规则;在特定的应用场景,也有着特殊的用法。

八、函数及使用    

        有些函数实际上是为了补充运算符的。

  • abs(x)    绝对值,x的绝对值 abs(-10.01) 结果为 10.01
  • divmod(x,y)    商余,(x//y, x%y),同时输出商和余数divmod(10, 3) 结果为 (3, 1)
  • pow(x, y[, z])    幂余,(x**y)%z,[…]表示参数z可省略pow(3, pow(3, 99), 10000) 结果为 4587
  • round(x[, d])    四舍五入,d是保留小数位数,默认值为0 round(-10.123, 2) 结果为 -10.12
  • max(x1,x2, … ,xn)    最大值,返回x1,x2, … ,xn中的最大值,n不限 max(1, 9, 5, 4, 3) 结果为 9
  • min(x1,x2, … ,xn)    最小值,返回x1,x2, … ,xn中的最小值,n不限 min(1, 9, 5, 4, 3) 结果为 1
  • int(x)    将x变成整数,舍弃小数部分 int(123.45) 结果为123; int(“123”) 结果为123
  • float(x)    将x变成浮点数,增加小数部分 float(12) 结果为12.0; float(“1.23”) 结果为1.23
  • complex(x)    将x变成复数,增加虚数部分 complex(4) 结果为 4 + 0j

九、操作符优先级

        Python 表达式语句中操作符的优先顺序从最低优先级(最后绑定)到最高优先级(最先绑定)如下:

  • := 赋值表达式
  • lambda lambda 表达式
  • if -- else 条件表达式
  • or 布尔逻辑或 OR
  • and 布尔逻辑与 AND
  • not x 布尔逻辑非 NOT
  • innot inisis not<<=>>=!=== 比较运算
  • | 按位或 OR
  • ^ 按位异或 XOR
  • & 按位与 AND
  • <<>> 移位
  • +- 加和减
  • *///% 乘,矩阵乘,除,整除,取余
  • +x-x~x 正,负,按位非 NOT
  • ** 乘方(右边的先绑定)
  • await x await 表达式
  • x[index]x[index:index]x(arguments...)x.attribute 抽取,切片,调用,属性引用
  • (expressions...)[expressions...]{key: value...}{expressions...} 绑定或加圆括号的表达式,列表显示,字典显示,集合显示

        一个表达式语句中可以有多个上述操作符,最终返回一个值(包括返回值为 None 的函数调用)。

        而赋值语句中的赋值操作符 =+=-=*=/=//=%=&=|=^=>>=<<=**=,在操作符中优先级最低,它右边表达式的值计算完之后,才最后绑定到左边的名称。

十、特殊用法

        容器类的内置类型,通常对操作符定义了自己特有的的操作行为。

  • * 操作符,除了数字运算的 乘,还可以用来将可迭代对象拆包。拆包之后置于元组,列表,集合中,或作为参数传递给函数:
{*{'a':1, 'b':2}}
{'a', 'b'}
print(*'abc', sep='-')
a-b-c
  • ++=**= 可用来对序列类型进行拼接,重复拼接或拼接并赋值(range 类型除外)。由于列表是可变对象,+= 和 *= 在操作列表时,是用来更新列表。具体详见 列表操作符。
'd-' + 'abc'*2
'd-abcabc'
a = [1]*2
a += [2]
a
[1, 1, 2]
  • 操作符 **| 和 |= 可以用来操作字典。具体详见 字典操作符。
  • 操作符 ><>=<= 可对集合进行子集或超集比较;|&-^ 可求集合的并集,交集,差集,对称差集;|=&=-=^= 可用来更新集合。具体详见集合知识点。
  • 操作符 % 可以用来格式化字符串,而在格式化迷你语言中,定义了非常多的有特殊意义操作符。具体详见 str.format 格式化 和 字符串操作符。

十一、其它

        还有许多符号,在收集中:

操作符号意义
->


http://www.kler.cn/a/15938.html

相关文章:

  • docker部署bitnami/etcd:latest
  • STM32 学习笔记-----STM32 的启动过程
  • Java集合(Collection+Map)
  • MuMu模拟器安卓12安装Xposed 框架
  • git如何开启SSH?
  • 一种时间戳对齐的方法(离线)
  • css 实现太极效果
  • 【MFAC】基于紧格式动态线性化的无模型自适应控制
  • Redis知识点
  • Dart String字符串的常用方法概述 整理了大概4000多字
  • 自动驾驶货运编队行驶介绍
  • 0、Java开发常见(并发,JVM)
  • 独立IP服务器和共享IP服务器有什么区别
  • JavaScript全解析——常见的BOM操作(下)
  • FreeRTOS任务的创建(动态方法和静态方法)
  • java常用的工具类 apache --- CollectionUtils(IT枫斗者)
  • QImage 如何设置图片的透明度
  • kotlin教程4:函数进阶
  • 贪心算法OJ刷题(2)
  • Python并发编程之进程操作
  • aac音频怎么转mp3,这几个方法很简便
  • 2023五一杯B题赛题公布
  • OpenGL(三)——着色器
  • Redis学习笔记01 (数据结构,线程模型,持久化)
  • 分屏视图上线,详情数据秒切换
  • Python小姿势 - # 如何在Python中实现基本的数据类型