举例:使用Python实现超市的收银系统
name = input(‘请输入您要购买商品名称:’)
id = input(‘请输入您要购买商品编号:’)
price = input(‘请输入您要购买的商品价格:’)
print(f’您购买了{name},商品编号为{id},商品价格为{price},欢迎下次光临!')
以上程序虽然可以按照上图完成程序的正常输出,但是遗留了一个非常严重的问题:这个价格price变量无法参与数学运算(如买了两个奥利奥,应该是18.5 * 2),原因在于input()方法返回的所有的结果都是str字符串类型。
怎么解决以上问题呢? 答:使用数据类型转换
Python数据类型的转换方法
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
float(x) | 将x转换为一个浮点数 |
complex(real [,imag ]) | 创建一个复数,real为实部,imag为虚部 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
chr(x) | 将一个整数转换为一个Unicode字符 |
ord(x) | 将一个字符转换为它的ASCII整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
bin(x) | 将一个整数转换为一个二进制字符串 |
图示转换
案例1:把用户输入的幸运数字,转换为整型
num = input(‘请输入您的幸运数字:’)
print(type(num))
‘’‘数据类型转换,把str字符串类型转换为int类型’‘’
print(‘-’ * 20)
num = int(num)
print(type(num))
以上代码还可以简写为:
num = int(input(‘请输入您的幸运数字:’))
print(type(num))
注释:就是输出一个数字,把这个输出的数字字符串str前面,加一个int整型,变成整型,就可以了。
案例2:多种数据类型转换
案例3:eval()方法的使用,把字符串中的数字转换为原数据类型
price = input(‘请输入您购买商品的价格:’)
print(eval(price))
print(type(eval(price)))
str1 = ‘10’ 经过eval(str1) 转换为int类型
str2 = ‘10.88’ 经过eval(str1) 转换为float类型
3、总结
数据类型转换方法一共学了4个方法:
int() :转整型
float() :转浮点类型
str() :转字符串类型
eval() :把字符串转换为原数据类型
但是要特别注意:当float浮点类型转换为int整型时,其小数点后面的数据会丢失,一定要记住这个特性。
其他:
思考:为什么直接用int转换 字符串内为小数类型的变量,会报错???直接转换失败???
报错的意思就是:值异常,因为小数类型的字符串 ‘10.88’,不能使用int()进行强制转换,只有下面办法,可以选一种:
可以先用下面两种方式转换:-----先转换为小数,再用int转换为整数。
int(float(str2))
int(Decimal(str2))
Decimal 英 /ˈdesɪm(ə)l/ adj. 十进位的,小数的 n. 小数;十进制
最终效果如下