知识点

隐式转换和显式转换的区别以及发生场景

  • 区别:
    • 隐式类型转换是由解释器自动进行的,在程序执行过程中,当不同数据类型进行操作时,解释器会自动将数据转换为合适的类型以完成操作。
    • 显式类型转换(强制类型转换)是由程序员明确地将一种数据类型转换为另一种数据类型。
  • 隐式类型转换发生情况:
    • 当进行数学运算时,如整数和浮点数混合运算,整数会自动转换为浮点数。
    • 在比较不同类型数据时,例如比较整数 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)。