遇到“18”加18却算不出结果,根源在于类型不匹配:带引号的“18”属于字符串,只能用于显示与拼接;不带引号的18属于整数,才能参与运算。Python为此配备了一套转换工具,int()负责把字符串还原成整数,str()负责给数字加上引号变成文本,float()、bool()、list()、dict()则各管一类,作用类似翻译官,让不同“语言”的数据互相转换。
有一条规律值得记住:从屏幕输入、文件读取、网络接收来的数据,绝大多数是字符串;一旦要参与计算,就得先转成数字。掌握这些转换函数来回倒换,数据就能出现在真正需要它的位置。
01|类型转换函数一次配齐:int()拆盒取数,str()贴签成文
用通俗的话说,int()相当于把贴了标签的盒子拆开,把里面的数字取出来;str()相当于给数字贴上一张标签,让它变成可以写进句子的文字。bool()、list()、dict()的原理相同,都是把数据换成目标类型。
int():字符串“18”转成整数18,转完即可参与运算。条件是该字符串里确实装着数字,例如int('18')=18;若写成int('十八')就会报错,因为“十八”并非数字字符。
str():整数18转成字符串“18”,转完即可拼接文字,例如'总营业额'+str(2192)+'元',拼成一句完整的话。

float():字符串“18.5”转成小数18.5。
bool():任何值都能转成True或False,0、空字符串、空列表转为False,其余值转为True,写判断条件时经常用到。
list()、tuple()、set()、dict()属于容器转换:list()把字符串拆成字符列表,tuple()转成不可修改的元组,set()自动去重,dict()把成对数据装进字典。
chr()与ord()负责字符和数字互转:ord(“中”)得到20013,chr(20013)又还原成“中”。bin()、oct()、hex()则把整数分别转成二进制、八进制、十六进制的字符串。
02|先看数据再看代码:五种饮品算出2192元
常用转换函数的速查结果如下:float('18.5')得到18.5,list('奶绿')拆成单个字符,tuple([18,15])得到元组,set([1,1,2])完成去重,dict([('奶茶',18)])装成字典,chr(20013)给出“中”。
以示例数据为例:五个价签都是字符串,另配一张对应销量表。做法是先用int()把字符串价格转成整数,再用单价乘以销量得出各自营业额,最后用str()把总营业额拼进提示语;其他类型按速查表各挑对应函数。

计算结果是五种饮品营业额合计2192元,提示语为“总营业额2192元”。
03|转换如同翻译:先查类型再动手
翻译之前要先弄清原文用什么语言,type()一查便知,查清楚再转就不容易出错。
字符串能拼接,整数能计算,两者混用就会报错。
int()和str()就像翻译官:把“18”翻成18才能算账,把2192翻成“2192”才能写进句子。
转换时机有两条:算数之前把字符串转成数字;拼文字之时把数字转成字符串。

容器转换各有各的脾气:list()拆字符串是逐字拆开,set()自动去重且顺序打乱,dict()只接收成对的数据,tuple()转完就锁死不可修改。动手前用type()看清类型,转换后用print看一眼结果。
04|一段可直接运行的代码:转换、算账与柱状图
将上述方法写成完整代码,复制到Python环境即可直接运行,观察字符串怎样转成整数、营业额怎样算出来,同时把数字、容器、字符码、进制这几类转换函数都跑一遍,并绘制转换后价格的柱状图。
代码使用Python3,点击代码块可全选复制。其中导入matplotlib.pyplot,用于配置中文字体避免图中中文乱码,相关字体设置为Noto Sans CJK SC与Arial Unicode MS,并处理负号显示。内置示例数据包含价签与对应销量,核心逻辑是用int()把字符串价格转成整数,按整数价格计算营业额,再用str()拼出提示语;随后依次演示float()把字符串转小数、bool()把0和空值转成False、list()把字符串拆成字符列表、tuple()把列表转成元组、set()转集合自动去重、dict()把成对数据转成字典、chr()与ord()互转字符与数字,以及bin()/oct()/hex()转二、八、十六进制。绘图部分设置画布尺寸,按名称与价格画柱,在每个柱顶标注具体价格,设置字号、纵轴范围保证最高柱标注完整显示,加上图表标题与纵轴标签“整数价格”,显示浅色网格方便读数,最终以chart.png存图。
运行输出显示:转换后价格为[18, 15, 12, 22, 16],各饮品营业额为[810, 450, 300, 440, 192],总营业额2192元;转小数得到18.5;bool(0)是False;list(字符串)得到['奶', '绿'];tuple(列表)得到(18, 15);set(列表)得到{1, 2};dict(成对)得到{'奶茶': 18, '奶绿': 15};ord(“中”)为20013,chr(20013)为“中”;bin(5)为0b101,oct(8)为0o10,hex(255)为0xff。文中的图1展示了转换后的整数价格柱状图。
05|三个要点收进工具箱
第一,数字转换最常用:int()/float()负责转成数字,str()负责转成文字,算数前先把数据转成数字。第二,容器转换有脾气:list()拆开、tuple()锁死、set()去重、dict()配对。第三,先查后转:type()看清类型再动手,chr()/ord()、bin()/oct()/hex()各管一摊。
小结:Python类型转换的核心在于“先认类型、再选函数”,int()、float()、str()覆盖了绝大多数算账与拼文字场景,容器与进制函数按需选用;文中的饮品示例用int()与str()算出2192元总营业额,说明类型对齐后代码才能正常出结果。
