自动数据类型转换:不需要做特殊处理。
强制数据类型转换:可通过内置函数来完成转换。
比喻说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) | 将一个整数转换成一个八进制字符串 |
有的时候要将不同数据类型的数据拼接在一起,就要用到数据类型转换:
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
© 版权声明
本站网络名称:
尤尤博客
本站永久网址:
https://www.yxfseo.cn
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,请在24H内删除。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
暂无评论内容