Python数据类型转换(超全)

自动数据类型转换:不需要做特殊处理。

强制数据类型转换:可通过内置函数来完成转换。

比喻说input()接收用户输入的信息得到的是一个字符串类型,但是需要用它进行数学运算就需要通过使用int()来强制转换数据类型:

num1 = input('请输入第一个整数:')
num2 = input('请输入第二个整数:')
print(type(num1),type(num2))    #输出num1和num2的数据类型
print(num1+num2)    #不进行转换,就是字符串的拼接
m = int(num1)   #通过int()将字符串类型转换成int型
n = int(num2)
print(type(m),type(n))
print(m+n)

转换数据类型的函数:

函数说明
int(x)将x转换成整数
float(x)将x转换成浮点数
str(x)将x转换成字符串类型
repr(x)将x转换成表达式字符串
complex(real[,imag])创建复数,real为实部,imag为虚部(可以为0)
eval(str)计算在字符串中的有效python表达式,并返回一个对象
tuple(t)将序列t转换成一个元组
list(s)将序列s转换成一个列表
chr(x)将整数x转换成一个字符
ord(x)将一个字符x转换成ASCII整数值
hex(x)将一个整数转换成十六进制字符串
oct(x)将一个整数转换成一个八进制字符串

使用 type()来查看是否转换成功

有的时候要将不同数据类型的数据拼接在一起,就要用到数据类型转换:

name = 'Alice'
age = 20
print('我叫'+name+',今年'+age+'岁。') #TypeError: can only concatenate str (not "int") to str
print('我叫'+name+',今年'+str(age)+'岁。')

1、int() 将其他数据类型转换成整数(十进制)

文字类和小数类字符串无法转换成整数;非整数数字串不能转换成整型。

浮点数转换成整数,抹0取整。

#文字类和小数类字符串无法转换成整数
str1 = 'hello'
print(int(str1))    #ValueError: invalid literal for int() with base 10: 'hello'
str2 = '2.5'
print(int(str2))    #ValueError: invalid literal for int() with base 10: '2.5'
a = 12
b = True
f = False
s = '100'
c = 12.6
print(type(a),type(b),type(f),type(s),type(c))
print(int(a))   #12
print(int(b))   #1  将布尔型转换成整型
print(int(f))   #0  将布尔型转换成整型
print(int(s))   #100    将字符串型转换成整型,只能是整数字符串
print(int(c))   #12     将浮点型转换成整型,抹0取整,舍去小数部分

2、float() 将其他数据类型转换成浮点类型

整数转换成浮点型,末尾加上.0

非数字字符串不能转换成浮点型

int1 = 12       #<class 'int'>
str2 = '88.32'  #<class 'str'>
str3 = '78'     #<class 'str'>
bool5 = False   #<class 'bool'>
str4 = 'hello'  #<class 'str'>
print(type(int1),type(str2),type(str3),type(bool5),type(str4))

print(float(int1),type(float(int1)))    #12.0 <class 'float'>
print(float(str2),type(float(str2)))    #88.32 <class 'float'>
print(float(str3),type(float(str3)))    #78.0 <class 'float'>
print(float(bool5),type(float(bool5)))  #0.0 <class 'float'>
#非数字字符串不允许转换成float型
print(float(str4),type(float(str4)))    #ValueError: could not convert string to float: 'hello'

3、str() 将其他数据类型转换成字符串类型

也可以使用引号转换。

x = 10
y = 99.8
z = False
print(type(x),type(y),type(z))  #<class 'int'> <class 'float'> <class 'bool'>
m = str(x)   #int类型转换成str类型
n = str(y)   #float类型转换成str类型
p = str(z)   #bool类型转换成str类型
print(type(m),type(n),type(p))  #<class 'str'> <class 'str'> <class 'str'>
print(m,n,p)

4、eval(str) 计算在字符串中的有效python表达式,并返回一个对象

计算在字符串中的有效python表达式,并返回一个对象。就是把字符串tr中的数据转换成原本的样子,有计算结果的就计算一下,再把结果返回,不是计算式的就会返回错误。

str1 = '1'
str2 = '3.2'
str3 = '[11,22,33]'
str4 = '(55,66,77)'
str5 = '3+6'
str6 = 'hello'
s1 = eval(str1)
s2 = eval(str2)
s3 = eval(str3)
s4 = eval(str4)
s5 = eval(str5)
#s6 = eval(str6) #NameError: name 'hello' is not defined. Did you mean: 'help'?
print(s1,type(s1))  #1 <class 'int'>
print(s2,type(s2))  #3.2 <class 'float'>
print(s3,type(s3))  #[11, 22, 33] <class 'list'>
print(s4,type(s4))  #(55, 66, 77) <class 'tuple'>
print(s5,type(s5))  #9 <class 'int'>
#print(s6,type(s6))

print(eval('3+5d'))     #SyntaxError: invalid decimal literal

5、tuple(t) 将序列t转换成一个元组

lst = [10,20,30,40]
print(type(lst))    #<class 'list'>
t = tuple(lst)
print(t,type(t))    #(10, 20, 30, 40) <class 'tuple'>

6、list(s) 将序列s转换成一个列表

t1 = (66,77,88)
print(type(t1)) #<class 'tuple'>
list1 = list(t1)
print(list1,type(list1))    #[66, 77, 88] <class 'list'>

7、chr(x) 将整数x转换成一个字符

对照ASCII码表转换的

print(chr(97))  #a
print(chr(48))  #0

8、ord(x) 将一个字符x转换成对应的ASCII值

print(ord('9')) #57
print(ord('\n'))    #10

9、hex(x) 将一个整数转换成十六进制字符串

print(hex(23))  #0x17

10、oct(x) 将一个整数转换成八进制字符串

print(oct(23))  #0o27
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容