【AI_Python基础_02数字类型及数字运算】


前言

python中数字的一些相关知识

Python 数字数据类型用于存储数值。

数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。
本文总结了数字的类型和数字类型的修改,以及数字的运算等相关知识。


一、四种数字类型

1.整型(int)

通常被称为是整型或整数,是正或负整数,不带小数点。

2.浮点型(float)

浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)

3.复数( complex)

复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

4.布尔类型(Bool)

布尔(bool)是整型的子类型。

  • 表示真假、对错、黑白等;
  • TrueFalse:他们首字母是大写的,类型转换是为1和0;
  • 类型转换为bool:使用bool()小方法
  • 非0都是True
  • 0、0.0、-0.0、空字符串、空列表、空字典、空集合、空元组、None等都是False;

二、数字类型的转换

1.不同进制的表示

x1 = 20     #整数
print(x1)   #20

x2 = 3.14   #浮点数
print(x2)   #3.14

x3 = 10+3j  #复数
print(x3)   #(10+3j)

x4 = True   #布尔值 True
print(x4)   #True

n1 = 0xA0F  # 十六进制
print(n1)   #2575

n2 = 0o37   # 八进制
print(n2)   #   31

n3 = 9      # 10进制
print(n3)   #9

n5 = 0b10   # 2进制
print(n5)   #2

2.转换为不同的数字类型

运行下列代码可以查看x的数据类型

x = 10
print(type(x))

运行结果为整数类型
在这里插入图片描述
我们可以输入下列代码来转换x的数字类型,比如将其转换为浮点类型:

x = 10
y = float(x)
print(type(y))

在这里插入图片描述
当然还可以转换为其他类型,只需要将数据类型作为函数名即可。

  • int(x) 将x转换为十进制整数
  • float(x) 将x转换到一个浮点数。
  • bin(x) 将x转换为二进制
  • oct(x) 将x转换为八进制
  • hex(x) 将x转换为十六进制
  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字.
  • bool(x) 将 x 转化为布尔值
print(int(20.5))#20
print(float(20))#20.0
print(bin(3))#0b11
print(oct(20))#0o24
print(hex(29))#0x1d
print(complex(29))#(29+0j)
print(complex(10,3))#(10+3j)

特别说明
这里介绍一个函数:id(),用来查看变量的地址

x = 10
print(id(x))

在这里插入图片描述
不同的变量引入同一个数据,变量的地址是相同的。

在这里插入图片描述
但是相同的数值下,不同的数据类型是不同的。
我们可以看到x,y是不同的数字类型,但是在数学运算中是相等的,但是显示的地址不同。

三、数字的运算

1. 算术运算符

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取模(取余数)
  • **:幂运算
  • //:整除(取整数部分)

除法 / 总是返回一个浮点数

整除// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系。

不同类型的数混合运算时会将整数转换为浮点数:

print(10+20.3)#加法运算:30.3
print(17 / 3)  # 整数除法返回浮点型:5.666666666666667
print(17 // 3)  # 整数除法返回向下取整后的结果:5
print(17.0 // 3)  # 整数除法返回向下取整后的结果:5.0
print(17 // 3.0)  # 整数除法返回向下取整后的结果:5.0
print(17 % 3)  # %操作符返回除法的余数:2
print(2**3) #幂运算2的3次方: 8

2. 比较运算符

  • ==:等于
  • !=:不等于
  • <:小于
  • >:大于
  • <=:小于等于
  • >=:大于等于

比较运算符的运算结果为布尔值

print(10==10.0)#只比较值是否相等:True
print(3.14!=3.1415)#True
print(255>170)#True
print(255<170)#False
print(255>=255)#True
print(255<=255)#True

3. 逻辑运算符

  • and:与(逻辑与)
  • or:或(逻辑或)
  • not:非(逻辑非)

A and B表达式的结果: 如果A表达式的布尔判定为真则B表达式的结果作为整个表达式的结果,如果A表达式的布尔判定为假则A表达式的结果作为整个表达式的结果

注意: 如果A判定为假 B将不会执行

or和not跟and一样

def fn():
    print("执行了fn")  # 打印
    return 10
def fm():
    print("执行了fm")  # 打印
    return 20
re = fn() and fm()
print(re)  #20
def fn():
    print("执行了fn")  # 打印
    return 0
def fm():
    print("执行了fm")  # 不打印
    return 20
re = fn() and fm()
print(re)  #0

另外not常常和is用来做身份判断,例如:a is not b,用来判断a,b的身份是否相同。a和b的地址不同得到bool值True,地址相同会得到bool值False。
在这里插入图片描述
在这里插入图片描述

4. 位运算符

Python中的位运算符主要用于处理整数类型的二进制位操作。以下是Python中的6种主要位运算符:

  • &:按位与
  • |:按位或
  • ^:按位异或
  • ~:按位取反
  • <<:左移位
  • >>:右移位
  1. 按位与(&)

    • 表达式:a & b
    • 功能:对于每一位,如果a和b的相应位都是1,则结果位为1,否则为0。
    # 示例:计算两个二进制数的按位与
    a = 0b1011  # 二进制表示的11
    b = 0b1101  # 二进制表示的13
    result_and = a & b  # 计算两者之间的按位与
    print(bin(result_and))  # 输出:0b1001 (十进制为9)
    
  2. 按位或(|)

    • 表达式:a | b
    • 功能:对于每一位,只要a和b中至少有一位是1,则结果位为1,否则为0。
    # 示例:计算两个二进制数的按位或
    a = 0b1011
    b = 0b1101
    result_or = a | b  # 计算两者之间的按位或
    print(bin(result_or))  # 输出:0b1111 (十进制为15)
    
  3. 按位异或(^)

    • 表达式:a ^ b
    • 功能:对于每一位,如果a和b的相应位不同(一个为1,另一个为0),则结果位为1,否则为0。
    # 示例:计算两个二进制数的按位异或
    a = 0b1011
    b = 0b1101
    result_xor = a ^ b  # 计算两者之间的按位异或
    print(bin(result_xor))  # 输出:0b110 (十进制为6)
    
  4. 按位取反(~)

    • 表达式:~a
    • 功能:对操作数a的每一个二进制位进行取反,即将1变为0,0变为1。
    # 示例:计算一个二进制数的按位取反
    a = 0b1011
    result_not = ~a  # 计算a的按位取反
    print(bin(result_not))  # 输出:-0b1100
    
  5. 左移运算符(<<)

    • 表达式:a << b
    • 功能:将a的二进制表示向左移动b位,左边移出的部分会被丢弃,右边空出的位置补零。
    # 示例:将一个二进制数向左移动两位
    a = 0b1011
    result_left_shift = a << 2  # 将a向左移动两位
    print(bin(result_left_shift))  # 输出:0b101100 (十进制为44)
    
  6. 右移运算符(>>)

    • 表达式:a >> b
    • 功能:将a的二进制表示向右移动b位,对于无符号整数,右边移出的部分会被丢弃,左边空出的位置补零(通常补0);对于有符号整数,右移时取决于具体实现,可能是算术右移(符号位扩展)或者逻辑右移(补0)。
# 示例:将一个有符号二进制数向右移动一位
a = -0b1000  # 十进制为-8
result_right_shift = a >> 1  # 将a向右移动一位
print(bin(result_right_shift))  # 输出:-0b100 (十进制为-4)

# 对于无符号数的例子
unsigned_a = 0b1000
unsigned_result_right_shift = unsigned_a >> 1
print(bin(unsigned_result_right_shift))  # 输出:0b100 (十进制为4)

5. 赋值运算符

  • =:赋值

  • +=:加法赋值

  • -=:减法赋值

  • *=:乘法赋值

  • /=:除法赋值

  • %=:取模赋值

  • **=:幂运算赋值

  • //=:整除赋值

    注意:

    ​ 没有 a++、 a-- 这种自增自减运算符;

x=100
x%=3
print(x)#1

总结

学习到了数字的类型、不同进制的数字如何表示、怎么进行数字类型的转换和数字的一些运算符等知识。

  • 45
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值