目录
- 一、bin()函数------转换为二进制字符串形式
- 二、bool函数------转换为bool类型
- 三、chr()函数------将数值类型转换为字符串类型
- 四、float()函数------整数和字符串转换为浮点数
- 五、hex()函数------将整数转换为十六进制字符串形式
- 六、int()函数------浮点数转换为整数
- 七、oct()函数------将整数转换为八进制字符串形式
- 八、ord()函数------将字符转换为对应的整数
- 九、str()函数------各种类型转换为字符串类型
Python 是动态类型的语言,不需要像 Java 或者 C语言一样在使用变量前声明变量的类型。虽然 Python 不需要先声明变量的类型,但有时仍然需要用到类型转换。例如,要想通过 print() 函数输出提示文字 您的身高:
和 浮点型变量 height 的值,就需要将浮点类型变量 height 转换为字符串,否则将显示下图所示的错误:
接下来本文就会详细介绍 Python 中常用的数据类型转换函数。
一、bin()函数------转换为二进制字符串形式
Convert an integer number to a binary string prefixed with 0b
. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__()
method that returns an integer。语法:
python
bin(x)
# ①: x: 要转换的整数.
# ②: 返回值: 返回以ob开头的二进制字符串.
示例1:将整数转换为二进制字符串形式。
python
print(bin(0)) # 输出对应的二进制数,输出: 0b0
print(bin(101)) # 输出: 0b1100101
print(bin(-101)) # 输出: -0b1100101
示例2:十进制数转换为二进制数。
python
number = int(input('输入一个十进制数:')) # 输入用户需要转换的数字
print(bin(number)) # 输出对应的二进制数
示例3:将十进制数转换为二进制字符串并去掉前缀。
python
def binary(n):
s = bin(n) # 转换为二进制数
print('%d 转换为二进制后%s ' % (n, s))
start = s.index('b') + 1 # 获取前缀的长度
s = s[start:]
print('去掉前缀为: %s ' % (s,))
binary(-36) # 负数
binary(10) # 正数
二、bool函数------转换为bool类型
bool 是 Boolean 的缩写,只有真(True) 和 假(False) 两种取值。bool() 函数只有一个参数,并根据这个参数的值返回真或者假值。语法:
python
bool([x])
参数说明:
- x:要转换的参数,可以是数值、字符串、列表、元组等;
- 返回值:返回 Ture 或 False。
- 当 bool() 函数没有参数时,则返回 False;
- 当对布尔类型使用 bool() 函数时,则按原值返回;
- 当对数字使用 bool() 函数时,0 值返回 False,其他值都返回 True;
- 当对字符串使用 bool() 函数时,对于没有值的字符(None 或者空字符串)返回 False,否则返回 True。
- 当 bool() 函数对于空的列表、字典、元组等对象时,返回 False,否则返回 True。
注意:在 python 中,除了 ''/""/0/()/[]/{}/None
转换后返回值为 False,其他转换后返回值都为 True。也就是说字符串如果不为空,则永远转换为 True。bool 是 int 的子类。
示例1:将数字转为 bool 类型。
python
print(bool(0)) # 输出: False
print(bool(1)) # 输出: True
print(bool(-1)) # 输出: True
print(bool(3.1415926)) # 输出: True
示例2:将字符串转为 bool 类型。
python
print(bool('')) # 输出: False
print(bool(None)) # 输出: False
print(bool('Python')) # 输出: True
print(bool('人生苦短,我用Python!')) # 输出: True
示例3:将列表、字典和元组转为 bool 类型。
python
list1 = []
list2 = ['Amo', 'Jerry', 'Paul']
print(bool(list1)) # 输出:False
print(bool(list2)) # 输出:True
dict1 = {}
dict2 = {'name': 'Amo', 'age': 18, 'address': '重庆市沙坪坝区'}
print(bool(dict1)) # 输出:False
print(bool(dict2)) # 输出:True
tuple1 = ()
tuple2 = ('Amo', 'Jerry', 'Paul')
print(bool(tuple1)) # 输出:False
print(bool(tuple2)) # 输出:True
示例4:使用 bool 函数验证数据。
python
x = input('请输入密码:')
print(bool(x.strip()))
x = input('请输入密码:')
print(bool(x.strip()))
运行程序,输出结果为:
text
请输入密码:
False
请输入密码:admin123456
True
上述结果中第一种情况是没有输入密码,返回值为 False;第二种情况是输入了密码 admin123456,返回值为 True。
三、chr()函数------将数值类型转换为字符串类型
chr() 函数返回整型参数值所对应的 Unicode 字符,如 chr(65) 返回 'A'
,chr(42) 返回 '*'
,与 ord() 函数作用相反。chr() 函数的语法格式如下:
python
chr(i)
参数说明:
- i:可以是十进制或十六进制形式的数字,传入的参数值范围必须在0~1114111(十六进制为 0x10ffff)之间;
- 返回值:返回当前参数值所对应的 Unicode 字符。
示例:
python
import random # 导入random模块
# 示例1:使用chr()函数获取十进制数和十六进制数对应的Unicode字符
print(chr(65), chr(97)) # 获取十进制数对应的Unicode字符,输出:A a
print(chr(0x41), chr(0x61)) # 获取十六进制数对应的Unicode字符,输出:A a
# 示例2:输出十进制数对应的Unicode字符
for i in range(9800, 9812):
print(chr(i), end="\t") # 获取对应的Unicode字符
# 示例3:使用chr()函数输出特殊符号
print(chr(9824), chr(9827), chr(9829), chr(9830)) # 输出:♠ ♣ ♥ ♦
# 示例4:输出小写英文字母列表
l1 = [chr(i) for i in range(97, 123)]
print(l1)
s1 = ''.join([chr(i) for i in range(97, 123)])
print(s1)
# 示例5:自动生成单个随机字母(a-Z)
a = random.randint(65, 123) # 生成65~123之间的随机数
# 将a表示的ASCII码使用chr()函数转换为对应的字母
a1 = chr(a)
print(a1) # 输出:B
如果参数 i 的取值超出取值范围(0 <= i <= 0x10ffff),则会抛出 ValueError 错误。如下:
python
print(chr(1114112)) # ValueError: chr() arg not in range(0x110000)
四、float()函数------整数和字符串转换为浮点数
float() 函数用于将整数和字符串转换为浮点数。float() 函数的语法格式如下:
python
float([x])
参数说明:
- x:整数或字符串;
- 返回值:返回浮点数;如果参数 x 未提供,则返回 0.0。
示例:
python
# 示例1:使用float()函数将数字转为浮点型
print(float()) # 不提供参数,返回0.0,输出:0.0
print(float(-88)) # 将整数转换为浮点数,输出:-88.0
print(float(10 / 3)) # 将运算结果转换为浮点数,输出:3.3333333333333335
print(float(2024)) # 将整数转换为浮点数,输出:2024.0
# 示例2:使用float()函数将字符串转为浮点型
print(float('88')) # 将字符串转换为浮点数,输出:88.0
print(float('-3.1415926')) # 将字符串转换为浮点数,输出:-3.1415926
print(float('+88.678')) # 将字符串转换为浮点数,输出:88.678
print(float(' -12345\n')) # 输出:-12345.0
print(float('1e-003')) # 输出:0.001
print(float('+1E6')) # 输出:1000000.0
print(float('-Infinity')) # 输出:-inf
提示:如果 float() 函数的参数x是一个字符串,则参数x应该是一个十进制数字的字符串表示形式(即参数x必须为能正确转换成浮点型数值的参数),否则会提示 ValueError。
python
# ValueError: could not convert string to float: '1.23我们'
print(float('1.23我们'))
五、hex()函数------将整数转换为十六进制字符串形式
hex() 函数用于将整数转换为以 0x 开头的十六进制字符串形式。hex() 函数的语法格式如下:
python
hex(x)
参数说明:
- 参数x:要转换的整数;
- 返回值:返回一个以 0x 开头的十六进制字符串。
示例:
python
# 输出对应的十六进制数
print(hex(2)) # 输出:0x2
print(hex(8)) # 输出:0x8
print(hex(19)) # 输出:0x13
print(hex(-88)) # 输出:-0x58
print(hex(250)) # 输出:0xfa
# bytes与hex字符串之间的相互转换
a = '0C B1 15 02 C0 27 01 20'
a_bytes = bytes.fromhex(a)
print(a_bytes)
b = a_bytes.hex()
print(b)
# RGB颜色值转换为十六进制颜色值
def rgb_to16(num1, num2, num3): # 定义函数
num_16_1 = hex(int(num1)) # 转换为十六进制形式
num_16_2 = hex(int(num2))
num_16_3 = hex(int(num3))
str1 = str(num_16_1) # 转换为字符串
str2 = str(num_16_2)
str3 = str(num_16_3)
my_str = [str1[2:], str2[2:], str3[2:]]
return ''.join(my_str)
# 通过调用自定义rgb_to16函数,实现RGB转换功能
while 1:
r1 = input('请输入RGB颜色值R:')
g1 = input('请输入RGB颜色值G:')
b1 = input('请输入RGB颜色值B:')
my_color = rgb_to16(r1, g1, b1)
print(r1 + ',' + g1 + ',' + b1 + '的16进制颜色值为:', my_color)
六、int()函数------浮点数转换为整数
int() 函数可用来把浮点数转换为整数,或者把字符串按指定进制数转换为整数。int() 函数的语法格式如下:
python
int(x [,base])
参数说明:
- x:数字或者字符串;
- base:表示进制数,默认值为10,即默认为十进制数,用中括号括起来,意思是可以省略;
- 返回值:返回整数;int() 函数不提供任何参数时,返回的结果为0。
注意:int() 函数中参数 x 可以是数字或字符串,但是参数 base 被赋值后,参数 x 只能是字符串,否则会提示 TypeError: int() can't convert non-string with explicit base
错误(当参数 base 存在时,int() 函数不能转换非字符串类型)。提示:如果 int() 函数中参数x为浮点数,则只取整数部分。
示例:
python
# 示例1:将数字或字符串转换为整数
print(int('123')) # 输出:123
print(int('+2205')) # 输出:2205
print(int('-18')) # 输出:-18
print(int())
print(int(8.8))
print(int('01', 2)) # 输出:1
print(int('12345', 8)) # 输出:5349
print(int('0x20', 16)) # 输出:32
# 示例2:将input()函数输入的数字转换为整数
my_val = input('请输入数字:') # 请输入数字:888
print(type(int(my_val))) # <class 'int'>
# 示例3:解决input()函数输入小数转换为整数出错的问题
val1 = input('请输入小数:') # 请输入小数:8.8
# 在input()函数中将小数转换为整数之前,需要先使用float()函数将其转换为浮点型
print(type(int(float(val1)))) # <class 'int'>
七、oct()函数------将整数转换为八进制字符串形式
oct() 函数用于将整数转换为前缀以 0o
开头的八进制字符串形式,oct() 函数的语法格式如下:
python
oct(x)
参数说明:
- x:要转换的整数;
- 返回值:返回前缀以
0o
开头的八进制字符串形式。
示例:
python
# 1.将整数转换为八进制字符串形式
print(oct(50))
print(oct(45))
print(oct(-33))
# 2.输出十进制数字的八进制字符串形式
i = 0 # 变量i初始化为0
while i < 11: # while循环条件
print(oct(i), end=' ') # 使用oct()函数将变量i转换为八进制输出
i += 1 # 变量i自增
八、ord()函数------将字符转换为对应的整数
ord() 函数用于把一个字符串表示的 Unicode 字符转换为该字符相对应的整数,如 ord('a')
返回整数 97,ord('√')
返回整数 8730。该函数与 chr() 函数的功能正好相反,ord()函数的语法格式如下:
python
ord(c)
参数说明:
- c:要转换的字符;
- 返回值:返回 Unicode 字符对应的整数数值。
示例:
python
# 1.返回对应的整数值
print(ord('A')) # 输出:65
print(ord('z')) # 输出:122
print(ord('我')) # 输出:25105
print(ord('0')) # 输出:48
print(ord('9')) # 输出:57
print(ord('*')) # 输出:42
print(ord('①')) # 输出:9312
print(ord('√')) # 输出:8730
# 2.大小写字母转换
s1 = input('请输入字母:')
if s1.islower(): # 判断字母是否为小写
print(chr(ord(s1) - 32)) # ord()函数转换成ASCII码,然后-32通过chr()函数将小写变成大写
else:
print(chr(ord(s1) + 32)) # ord()函数转换成ASCII码,然后+32通过chr()函数将大写变成小写
九、str()函数------各种类型转换为字符串类型
str() 函数用于将整数、浮点数、列表、元组、字典和集合转换为字符串类型。str() 函数的语法格式如下:
python
str(object='')
参数说明:
- object:表示被转换成字符串的参数,该参数可以省略;
- 返回值:返回一个 object(对象)的字符串形式。
当 str() 函数的参数都省略时,该函数将返回空字符串。这种情况常用来创建空字符串或者初始化字符串变量。另外,str() 函数还可以将字节类型转换为字符串类型,语法格式略有不同。语法格式如下:
python
str(object=b'', encoding='utf-8', errors='strict')
参数说明:
-
object=
b''
:表示要进行转换的字节型(bytes)数据; -
encoding:表示进行转换时所采用的编码方式,默认为 utf-8;
-
errors:表示错误处理方式(报错级别)。常见的报错级别有:
'strict'
:严格级别,字符编码有报错即抛出异常,默认级别,errors 参数值传入 None 即按此级别处理。'ignore'
:忽略级别,字符编码有错,忽略掉。'replace'
:替换级别,字符编码有错的,替换成?
。
-
返回值:返回一个 object(对象) 的字符串形式。
str() 函数返回一个字符串对象。如果 object 不提供,则默认返回空字符串,否则,str() 函数的行为依赖于 encoding 参数或者 errors 参数是否提供:
- encoding 参数和 errors 参数都不提供,str() 函数返回 object 的字符串描述,就是它本身。
- encoding 参数和 errors 参数其中有一个被提供,str() 函数返回 object 的字符串形式。
示例:
python
# 1.将数值型数据转换为字符串
print(str(88)) # 整型,输出:88
print(str(-2147483648)) # 整型,输出:-2147483648
print(str(52.1314)) # 浮点型,输出:52.1314
print(str(2345E67)) # 浮点型,输出:2.345e+70
print(str(-2.402823E38)) # 浮点型,输出:-2.402823e+38
print(str(10 / 3)) # 表达式,输出:3.3333333333333335
# 2.将列表转换为字符串
list1 = ['Amo', 'Jerry', 'Paul', 'Ben']
print(list1) # 输出列表
print(type(list1)) # 列表类型
print(str(list1)) # 列表转换为字符串
print(type(str(list1))) # 字符串类型
# 3.将元组转换为字符串并去掉特殊符号
tuple1 = (('苏大强', '苏明玉'), ('苏大强', '苏明成'), ('苏大强', '苏明哲'),
('苏大强', '苏母'), ('苏明玉', '柳青'), ('柳青', '蒙总')
, ('苏明玉', '苏明成'), ('苏明玉', '苏明哲'), ('苏母', '苏明哲')
, ('苏明玉', '蒙总'), ('苏母', '苏明成'), ('苏明成', '苏明哲')
, ('苏明哲', '吴非'), ('苏明玉', '石天冬'), ('苏明玉', '吴非')
, ('蒙总', '蒙太'), ('苏明成', '朱莉'))
a = str(tuple1) # 元组转换为字符串
# 多次使用replace()方法去除字符串中的标点符号
a1 = a.replace('(', '').replace(')', '').replace("'", '').replace(',', '')
print(a1)
# 4.将字典转换为字符串
d1 = {'我的小伙伴': {'1': 'Amo', '2': 'Jerry', '3': 'Paul', '4': 'Ben'}}
my_str = str(d1) # 字典转换为字符串
print(my_str) # 输出字符串
print(type(my_str)) # 查看类型
# 5.将集合转换为字符串
s1 = {'Amo', 'Jerry', 'Paul', 'Ben'}
my_str = str(s1) # 集合转换为字符串
print(my_str) # 输出字符串
print(type(my_str)) # 查看类型
# 6.将字节类型(bytes对象)转换为字符串
s1 = '云从科技' # 定义字符串
s2 = s1.encode(encoding='utf-8') # 采用utf-8编码
print(s2) # 输出字节类型
print(str(s2, encoding='utf-8')) # 将字节类型转换为字符串
# 7.字符串与数值型数据混合输出
str1 = 'Amo今年' # 定义字符串
num = 18 # 定义一个整数
print(str1 + str(num) + '岁。') # 对字符串和整数进行拼接