知识点
隐式转换和显式转换的区别以及发生场景
- 区别:
- 隐式类型转换是由解释器自动进行的,在程序执行过程中,当不同数据类型进行操作时,解释器会自动将数据转换为合适的类型以完成操作。
- 显式类型转换(强制类型转换)是由程序员明确地将一种数据类型转换为另一种数据类型。
- 隐式类型转换发生情况:
- 当进行数学运算时,如整数和浮点数混合运算,整数会自动转换为浮点数。
- 在比较不同类型数据时,例如比较整数 5 和字符串 "5",Python 会尝试进行隐式类型转换以便比较(在 Python 2 中这种行为更复杂,Python 3 中会有更明确的规则,但仍会进行一定的隐式转换尝试)。
- 需要显式类型转换的情况:
- 当从用户输入获取的数据(默认是字符串)需要进行数学计算或其他特定类型操作时,如获取用户输入的数字字符串 "123",要进行乘法运算,需使用 int ("123") 转换为整数。
- 当需要将一种数据结构转换为另一种数据结构时,如将列表转换为元组,使用 tuple ([1, 2, 3])。
课后习题
选择题
对于表达式 “int ('5.6')”,执行后 的结果是?
A 5.6
B 5
C 6
D 报错
正确答案 D 我的答案 C
总结:
1.没有看清括号里是字符串,因为平常双引号用在字符串多,对单引号不敏感
2.不知道不能一次转化,即小数字符串不能直接转为整型
示例:
print(type(int('5.6')))
结果:ValueError: invalid literal for int() with base 10: '5.6'
正确解析:
int () 函数尝试将字符串转换为整数,但 '5.6' 包含小数点,无法直接转换为整数,会报错
print(type(int(float('5.6')))
结果:
<class 'int'>
主观题
1.请说明在 Python 中,将一种数据 类型转换为另一种数据类型时可能 会遇到哪些问题
参考答案 数据精度丢失:当将浮点数转 换为整数时,小数部分会被截 断。例如,将 3.9 转换为整 数,结果为 3,丢失了 0.9 的 精度。 非法转换:尝试将不合法的 符串转换为数字类型时会报 错。例如,int ("abc") 在转换 时会报错。 数据结构转换不匹配:当将不 适合的数据结构进行转换时可 能得到意外结果。比如 dict(1)。
浙公网安备 33010602011771号