Python3 数据类型转换

为什么要转换

用户输入、文件读取得到的数据大多是字符串,参与数学运算前需转成数字;反过来,要把结果拼进文本时又需要转回字符串,这就是类型转换的常见场景。

基础类型转换

int() 转整数、float() 转浮点、str() 转字符串、bool() 转布尔:

print(int("42"))          # 输出:42,字符串 → 整数
print(float(3))           # 输出:3.0,整数 → 浮点
print(str(3.14))          # 输出:3.14,数字 → 字符串
print(bool(1), bool(0))   # 输出:True False,非 0 即为真
print(int(3.99))          # 输出:3,浮点转整数直接截断小数

容器类型转换

list()、tuple()、set()、dict() 可在容器之间互转:

t = (1, 2, 2)
print(list(t))                     # 输出:[1, 2, 2],元组 → 列表
print(set(t))                      # 输出:{1, 2},转集合顺便去重
print(tuple([1, 2]))               # 输出:(1, 2),列表 → 元组
print(dict([("a", 1), ("b", 2)]))  # 输出:{'a': 1, 'b': 2}

字符串与数字互转陷阱

数字转字符串永远成功;但并非所有字符串都能转数字,转不了会抛 ValueError:

print(int("  8  "))   # 输出:8,字符串两端空白会被忽略
print(int("3.5"))     # 报错:ValueError,整数转换不接受小数点
print(float("3.5"))   # 输出:3.5,带小数必须用 float()
print(int("abc"))     # 报错:ValueError: invalid literal

转换前用字符串方法做安全判断是常见做法:

s = "123"
if s.isdigit():
    print(int(s) * 2)    # 输出:246
else:
    print("不是纯数字")

进制与字符转换

bin()/oct()/hex() 输出 2、8、16 进制字符串;ord()/chr() 在字符与 Unicode 编号之间互相转换:

print(bin(10), oct(10), hex(255))
# 输出:0b1010 0o12 0xff
print(int("ff", 16))       # 输出:255,int() 第二参数指定进制
print(ord("A"), ord("中"))    # 输出:65 20013
print(chr(65), chr(20013))   # 输出:A 中

隐式转换

混合运算时 Python 会自动把"窄类型"提升为"宽类型",顺序为 bool → int → float → complex:

print(1 + 2.0)     # 输出:3.0,int 自动变为 float
print(True + 1)    # 输出:2,bool 自动变为 int

用 int()/float()/str()/list() 等构造函数做显式转换;记住"字符串转数字可能失败、需先 isdigit() 判断",并理解隐式转换的自动提升方向,即可应对绝大多数转换场景。

笔记加载中…