AI项目博客
记录 AI 工程实践与大模型应用

Python 学习笔记 07|数据类型转换

6. 数据类型转换

6.1. 概述

何为数据类型转换?—— 把一种类型的数据,变成另一种类型。

6.2. 为什么要数据类型转换

例如下面这些场景中,我们得到的数据类型,和最终要用的数据类型是不一致的,那就需要类型转换:

  • 用户输入的内容是都是字符串,若需要进行数学运算,就必须进行数据类型转换。
  • 对文件进行写入操作时,要将其他类型的数据转为字符串。
  • 从数据库中读取出的内容都是字符串若需要进行数学运算,也需要数据类型转换

……

6.3. 具体转换方式

通过以下函数,可以对数据类型进行转换

函数 说明 示例
int(x) 将x转换为一个整数
float(x) 将x转换为一个浮点数
str(x) 将对象x转换为一个字符串

7. 运算符

7.1. 算数运算符

常用的算数运算符如下:

测试代码

# 加
print(9 + 7)
# 减
print(7 - 2)
# 乘
print(3 * 4)
# 除
print(9 / 3)
# 取整
print(9 // 6)
# 取余
print(9 % 6)
# 指数
print(2 ** 3)

7.2. 赋值运算符

常用的赋值运算符如下:

测试代码:

age = 18
print(age)

price = 52
print(price)
age = 18

# 加法复合运算符
age += 1  # 等价于:age = age + 1
print(age)

# 减法复合运算符
age = 18
age -= 1  # 等价于:age = age - 1
print(age)

# 乘法复合运算符
price = 100
discount = 0.8
price *= discount  # 等价于:price = price * discount
print(price)

# 除法复合运算符
pay = 100
num = 5
pay /= 5  # 等价于:pay = pay / num
print(pay)

# 取整赋值运算符
apple = 31
num = 14
apple //= num  # 等价于:apple = apple // num
print(apple)

# 取模赋值运算符
seconds = 386
minutes = 60
seconds %= minutes  # 等价于:seconds = seconds % minutes
print(seconds)

# 指数赋值运算符
a = 2
b = 3
a **= b  # 等价于:a = a ** b
print(a)

7.3. 比较运算符

常用的比较运算符如下:

📋备注:True 和 False 是布尔类型,会在下一小节讲,暂且先知道:True 表示真,False 表示假。

# 使用==判断左右两侧是否相等
a = 5
b = 7
c = '5'
result = a == c
print(result)

# 使用!=判断左右两侧是否不等
a = 5
b = 7
c = '5'
result = a != c
print(result)

# 使用>判断左侧是否大于右侧
a = 9
b = 7
c = '5'
result = a > b
print(result)

# 使用<判断左侧是否小于右侧
a = 3
b = 7
c = '5'
result = a < b
print(result)

# 使用>=判断左侧是否大于等于右侧
a = 6
b = 7
c = '5'
result = a >= b
print(result)

# 使用<=判断左侧是否小于等于右侧
a = 9
b = 7
c = '5'
result = a <= b
print(result)

# 以上这些比较运算符,同样适用于字符串
msg1 = 'abc'
msg2 = 'abc666'
print(msg1 == msg2)

msg1 = 'abc'
msg2 = 'abc'
print(msg1 != msg2)

📌小贴士:

  • 字符串进行比较时,是依次比较每个字符的 Unicode 编码。
  • Unicode 编码是一种全球通用的字符编码标准,它会给每个字符都分配一个“身份证号”。

具体比较规则是:

  • 从左到右,依次比较两个字符串中的字符。
  • 先比较第一个字符:
  • 如果两个字符不相等,就直接根据它们的 Unicode 码值比较大小。
  • 如果相等,则继续下一步。
  • 继续比较下一个字符,依次往后进行,直到遇到不相等的字符为止。
  • 当出现不相等的字符时,比较它们的 Unicode 码大小,后续的字符将不再参与比较。

# 使用ord()查看指定字符的Unicode编码
print(ord('a'))
print(ord('我'))

# 使用chr()将Unicode编码转为字符
print(chr(97))
print(chr(25105))

msg1 = 'abc'
msg2 = 'xyz'
msg3 = '我爱你'
msg4 = '中国'
msg5 = 'abc'
msg6 = 'abcdef'
print(msg3 <= msg1)

7.4. 布尔类型

我们之前讲的这些类型:字符串、整型、浮点型,这些类型中,每一种类型都有无限多的具体值。

但布尔类型的具体值,只有两个,分别是:True和False,其中:True表示真,False表示假。

布尔值常用于表示:条件是否成立、事件是否发生、操作是否成功、等逻辑状态。

📢注意:True 和 False 的首字母必须大写。

# 自己定义的布尔值
a = True
b = False

# 靠程序执行得到的布尔值
c = 5 > 3
d = 7 < 2

print(type(a), a)  # True
print(type(b), b)  # Flase
print(type(c), c)  # True
print(type(d), d)  # Flase

布尔类型是int类型的子类型,底层的本质是用1表示True,用0表示False。

# 布尔类型是int类型的子类型,底层的本质是用1表示True,用0表示False
print(int(True))   # 1
print(int(False))  # 0

print(4 + True)   # 5
print(8 - False)  # 8

print(True + True)   # 2
print(True - False)  # 1

print(7 > True)    # True
print(False <= 0)  # True

Python中除0以外的任何数,转为布尔值后都为 True

# 使用bool()将指定内容转为布尔类型
print(bool(1))  # True
print(bool(0))  # False

print(bool(300))  	# True
print(bool(25.6))  	# True
print(bool(1.8e3))  # True
print(bool(12_000)) # True
print(bool(-10))  	# True

Python中除空字符串以外的任何字符串,转为布尔值都是 True

print(bool('hello')) # True
print(bool('0'))	 # True
print(bool('18.5'))	 # True
print(bool('-9'))	 # True
print(bool(''))	     # False

7.5. 逻辑运算符

常用的逻辑运算符如下:

1️⃣and 运算符:用于判断其两侧的值,是否都为True

print(True and True)   # True
print(True and False)  # False
print(False and True)  # False
print(False and False) # False

print(8 > 7 and 8 > 7) # True
print(8 > 7 and 2 > 3) # False
print(2 > 3 and 8 > 7) # False
print(2 > 3 and 2 > 3) # False

and具备“逻辑短路”能力,以下代码中包含3/0这种错误代码,但最终没有报错。

print(False and 3 / 0)  # False
print(3 > 9 and 3 / 0)  # False

and返回的不一定是布尔值,它返回的是某个参与计算的值本身,and会先看左边,如果左边是“假”,就直接返回左边,否则返回右边;若参与and运算的值不是布尔值,那 Python 会自动转为布尔值,然后再进行逻辑操作。

print(2 - 2 and True) # 0
print('' and True)
print(True and 8 / 2)  # 4.0
print(3 + 3 and 3 * 4) # 12

2️⃣or 运算符:用于判断其两侧,是否至少有一个为True(只要有一个是True,那就返回True)

print(True or True)    # True
print(True or False)   # True
print(False or True)   # True
print(False or False)  # False

print(9 > 2 or 9 > 2)  # True
print(9 > 2 or 3 < 1)  # True
print(3 < 1 or 9 > 2)  # True
print(3 < 1 or 3 < 1)  # False

or同样具备“逻辑短路”的能力,以下代码中包含3/0这种错误代码,但最终没有报错。

print(True or 3 / 0) # True
print(9 > 3 or 3 / 0) # True

or返回的也不一定是布尔值,它返回的是参与计算的值本身,or会先看左边,如果左边为“真”,就直接返回左边,否则返回右边;若参与or运算的值不是布尔值,那 Python 会自动转为布尔值,然后再进行逻辑操作。

print(7 - 2 or False)    # 5
print('你好' or '') # 你好
print(False or 8 / 2)	 # 4.0
print(2 - 2 or 3 * 4)    # 12

3️⃣not 运算符:not用于取反,不过要注意:如果参与not运算的值不是布尔值,那 Python 会自动将其转为布尔值,然后再进行逻辑操作。

print(not True)  # False
print(not False) # True
print(not 3 > 2) # False
print(not 3 < 2) # True

not返回的值,一定是布尔值!

print(not 0) 	  # True
print(not 3 > 2)  # False
print(not 9 // 4) # False
print(not 'abc')  # False

8. 进制

8.1. 概述

进制是指:用多少个符号,来表示数值的一种『记数方式』。比如我们平时使用的『十进制』,就是用0 ~ 9这十个符号来表示所有的数,而计算机中存储和运算的数据,都是二进制,常见的进制与规则如下:

二进制:0 ~ 1,满2进1。

八进制:0 ~ 7,满8进1。

十进制:0 ~ 9,满10进1。

十六进制:0 ~ 9,A-F,满16进1。

📋备注: 在十六进制中,除了0 ~ 9这十个数字外,还引入了字母,以便表示超过9的值,字母A对应十进制的10,字母B对应十进制的11,同理字母 C、D、E、F 分别对应十进制的:12、13、14、15。

各进制的表示如下图:

十进制数:9527

二进制数:1010

八进制数:1034

十六进制数:1CF

8.2. 代码中如何表示不同进制

在 Python 中,不同进制的数,有不同的前缀:

二进制:以0b或0B开头表示。

八进制:以0o开头表示

十进制:无需前缀,正常编写即可。

十六进制:以0x或0X开头表示,此处的A-F不区分大小写。

# 0b开头表示二进制
num1 = 0b11001
# 0o开头表示八进制
num2 = 0o1034
# 0x开头表示十六进制
num3 = 0x1cf

📋备注:Python 中所有的『非十进制』数字,只是代码层面的编写方式,只是给程序员看的,Python 在进行:计算、打印等操作时,会自动将这些『非十进制』数字,转为『十进制』数字。

# 0b开头表示二进制
num1 = 0b11001
# 0o开头表示八进制
num2 = 0o1034
# 0x开头表示十六进制
num3 = 0x1cf

# Python 在对上面的 num1、num2、num3进行计算、打印等操作时,会自动将其转为十进制
print(num1, num2, num3)  # 25  540  463
print(num1 + 1)  # 26
print(str(num2)) # 540
print(num3 > 400) # True

8.3. 不同进制之间的转换

1️⃣手动转换:使用连除法

十进制转二进制:不断用 2 去除这个数,直到商为 0,然后把每次的余数倒着写即可。

十进制转八进制:不断用 8 去除这个数,直到商为 0,然后把每次的余数倒着写即可。

十进制转十六进制:不断用 16 去除这个数,直到商为 0,把每次的余数倒着写,若余数 ≥ 10,则依次用 A、B、C、D、E、F 表示 10~15。

2️⃣借助 Python 提供的内置函数,实现进制转换

9. 输入语句

在 Python 中,输入语句用于:从键盘接收用户输入的内容。

# 使用input()获取用户的输入
name = input('请输入你的姓名:')
age = input('请输入你的年龄:')

# input()获取到的内容全都是字符串类型
print(type(age))

📋备注:程序执行到 input() 时,会暂停等待用户的输入,用户输入后敲下回车,程序继续运行。

input()所获取到的内容全都是字符串类型,不过我们可以手动进行数据类型转换。

age = int(input('请输入你的年龄:'))
赞(0)
未经允许不得转载:AI项目博客 » Python 学习笔记 07|数据类型转换

评论 抢沙发

AI项目博客

专注 AI 工程化落地 —— 覆盖智能体、大模型、Java AI 与 Python 的学习笔记,以及 AI 平台的项目实战记录。

关于本站文章归档

登录

找回密码

注册