这一篇非常实用。很多新手写 Python 时,真正频繁踩坑的,不是语法本身,而是类型没转对。
学到这里,你已经接触过不少数据类型了。
整数 int浮点数 float字符串 str布尔值 bool
表面上看,好像都认识了。 可一旦真正开始写程序,很多问题就会冒出来。
为什么输入数字以后,不能直接拿来做加法 为什么 18 和 '18' 看起来一样,结果却完全不同 为什么有时候要把数字转成字符串 为什么有时候又得把字符串转成数字
这些问题,背后其实都指向同一个核心能力。
类型转换。
你可以先记住一句很重要的话:
程序不仅要处理值,还要处理值的类型。 而类型转换,就是在不同类型之间搭桥。
这一篇,我们就把最常用的三种转换讲透:
int()float()str()
学完以后,你会对输入、计算、拼接、输出之间的关系清楚很多。
一、什么是类型转换
先说最直白的定义。
类型转换,就是把一种类型的数据,变成另一种类型。
比如把字符串 '18' 变成整数 18。 比如把整数 3 变成浮点数 3.0。 比如把数字 100 变成字符串 '100'。
看起来像是换了个写法, 但对程序来说,这不是表面变化,而是真正的类型变化。
比如:
a = '18'b = int(a)print(a, type(a))print(b, type(b))
运行结果大概会是:
18 <class 'str'>18 <class 'int'>
值看起来都像 18, 但前一个是字符串,后一个是整数。
这就是类型转换最核心的意义。
二、为什么一定要学类型转换
因为不同类型能做的事不一样。
比如两个字符串相加,做的是拼接:
a = '10'b = '20'print(a + b)
结果是:
1020
因为这是把两段文字连起来。
可如果你想做数学加法,就必须把它们转成数字:
a = int('10')b = int('20')print(a + b)
结果才会是:
30
所以类型转换不是花哨技巧, 而是程序能不能按你的预期工作的关键。
说白了就是:
你想让数据拿来干什么, 往往决定了你要不要先转换类型。
三、最常用的三种转换函数
当前阶段,你最需要掌握的就是这三个:
int()把数据转成整数
float()把数据转成浮点数
str()把数据转成字符串
它们的写法很像,你可以先感受一下:
print(int('18'))print(float('18.5'))print(str(100))
输出结果:
1818.5100
你现在不用急着背全部规则, 先从最常用的开始理解。
四、int():把数据转成整数
int() 是最常见的类型转换之一。
它的作用就是:
把合适的数据转成整数。
比如字符串形式的数字:
age = int('18')print(age)print(type(age))
结果:
18<class 'int'>
再比如浮点数转整数:
num = int(19.9)print(num)print(type(num))
结果通常是:
19<class 'int'>
这里你要注意一个点。
int(19.9) 不是四舍五入, 而是直接去掉小数部分。
所以:
int(19.9) 得到 19int(19.1) 也是 19int(-3.8) 会变成 -3
你现在先记住这个现象就行。
五、什么时候最常用 int()
第一个高频场景,就是输入年龄、数量、分数这类整数数据。
比如:
age = int(input('请输入你的年龄:'))print(age)print(type(age))
如果用户输入:
18
那么 age 最后就是整数,不再是字符串。
第二个高频场景,是把本来是字符串形式的数字,变成真正可计算的整数。
比如:
a = '15'b = '5'print(int(a) + int(b))
结果是:
20
第三个场景,是你明确知道这个结果就应该是整数。
比如人数、件数、次数、年龄这些数据, 通常都更适合用 int。
六、int() 最容易踩的坑
不是所有字符串都能转成整数。
比如这个就可以:
print(int('18'))
但下面这些通常都不行:
print(int('18.5'))print(int('十八'))print(int('abc'))
为什么。
因为 int() 期待的是“整数形式的内容”。 像 '18.5' 是小数字符串,'十八' 是中文文字,'abc' 更不是数字。
所以你一定要记住:
int() 不是万能转换器, 它只能处理符合整数格式的数据。
七、float():把数据转成浮点数
接下来是 float()。
它的作用是:
把数据转成浮点数,也就是小数。
比如:
price = float('19.9')print(price)print(type(price))
输出:
19.9<class 'float'>
它也可以把整数转成浮点数:
num = float(10)print(num)print(type(num))
结果:
10.0<class 'float'>
所以你可以把 float() 理解成:
只要是能表示成数字的内容, 尽量把它转成“带小数能力”的形式。
八、什么时候该用 float()
最常见的场景,就是处理价格、身高、体重、平均分这种可能带小数的数据。
比如商品价格:
price = float(input('请输入商品单价:'))count = int(input('请输入购买数量:'))total = price * countprint(total)
这里单价用 float(),是因为价格很可能是 19.9、8.5、99.99 这种形式。
再比如身高:
height = float(input('请输入你的身高:'))print(height)
如果你输入 1.75, 它就会被正确保存成浮点数。
所以你以后只要遇到这种情况:
数据可能有小数 那就优先想到 float()
九、float() 和 int() 的一个关键区别
来看这两个例子:
print(int('18'))print(float('18'))
结果分别是:
1818.0
虽然值很接近, 但类型不同。
再看:
print(int(10.9))print(float(10))
结果分别是:
1010.0
所以:
int() 更偏向“变成整数”float() 更偏向“变成带小数能力的数字”
你以后别光看数字长得像什么, 还要看你程序需要它以什么方式参与后续运算。
十、str():把数据转成字符串
第三个特别常用的,就是 str()。
它的作用是:
把数据转成字符串。
比如把整数转成字符串:
age = str(18)print(age)print(type(age))
结果:
18<class 'str'>
再比如把浮点数转成字符串:
price = str(19.9)print(price)print(type(price))
结果:
19.9<class 'str'>
甚至布尔值也可以转成字符串:
result = str(True)print(result)print(type(result))
结果:
True<class 'str'>
这说明 str() 的适用范围很广。 它常常用来把本来不是文本的数据,变成可显示、可拼接的文本。
十一、什么时候最常用 str()
最典型的场景,就是你要把数字和文字拼接成一句完整的话。
比如下面这种写法就容易出问题:
age = 18print('我今年' + age + '岁')
因为左边是字符串,右边是整数, 不能这样直接相加。
这时候你就可以用 str():
age = 18print('我今年' + str(age) + '岁')
结果:
我今年18岁
再比如:
score = 95message = '本次考试分数:' + str(score)print(message)
这就是 str() 特别常见的用法。
当然,你现在也学过更自然的写法,比如 f-string:
score = 95print(f'本次考试分数:{score}')
这个以后日常会更常用。 但 str() 本身你还是得会,因为它是底层转换思路的一部分。
十二、输入为什么总是绕不开类型转换
这是新手最应该真正想明白的一件事。
因为 input() 拿到的内容,默认都是字符串。
比如:
age = input('请输入年龄:')print(age)print(type(age))
无论你输入的是:
18
还是:
100
拿到的类型通常都是:
<class 'str'>
所以你以后只要写:
输入数字 做数学运算 做大小比较
脑子里就该立刻响起一个提醒:
要不要先转类型
这是非常重要的编程习惯。
十三、最典型的错误,就是没转类型就开始算
比如下面这段代码:
a = input('请输入第一个数字:')b = input('请输入第二个数字:')print(a + b)
如果输入 10 和 20,结果不是 30,而是:
1020
因为它们还是字符串。 字符串相加是拼接,不是加法。
正确写法应该是:
a = int(input('请输入第一个数字:'))b = int(input('请输入第二个数字:'))print(a + b)
这样结果才会是:
30
这个坑你以后还会反复遇到, 所以现在一定要把它刻进脑子里。
十四、什么时候该用 int(),什么时候该用 float()
这个问题很实用。
你可以先按这个简单标准来判断。
如果这个数据本来就应该是整数, 比如年龄、人数、件数、次数、分数, 优先考虑 int()。
如果这个数据可能带小数, 比如价格、身高、体重、平均分、温度, 优先考虑 float()。
比如:
age = int(input('请输入年龄:'))price = float(input('请输入价格:'))count = int(input('请输入数量:'))height = float(input('请输入身高:'))
这个思路对入门阶段已经非常够用了。
十五、字符串转数字时,先想“内容到底像不像数字”
这个判断非常关键。
比如这些一般都能成功:
print(int('18'))print(float('18'))print(float('18.5'))
这些通常不行:
print(int('18岁'))print(float('19.9元'))print(int('一百'))
因为它们不是“纯数字形式”的内容。
所以你以后在做类型转换时, 不要想当然地直接转。 先想一句:
这个字符串本身,长得真的像一个合法数字吗
如果不像,转换很可能就会报错。
十六、自己动手做一个最基础的转换练习
下面这段代码,你最好亲手敲一遍。
a = '100'b = '25.5'c = 88d = 3.14print(int(a), type(int(a)))print(float(b), type(float(b)))print(str(c), type(str(c)))print(str(d), type(str(d)))
这个练习很适合你现在做, 因为它能让你直接看到不同类型之间的变化。
看一遍不如跑一遍。 跑一遍不如自己改一遍。
你可以把里面的数据换掉再试试。
十七、实操,做一个两数相加程序
这个练习特别经典,而且特别适合巩固 int()。
a = int(input('请输入第一个整数:'))b = int(input('请输入第二个整数:'))result = a + bprint(f'两数之和是:{result}')
你可以多试几组数据:
10 和 20 3 和 9 100 和 250
然后你再故意把 int() 去掉,看看结果会发生什么变化。
这样你会更直观地理解:
为什么类型转换不是可有可无,而是必须的。
十八、实操,做一个商品总价计算程序
这个练习适合巩固 float() 和 int() 一起使用的场景。
price = float(input('请输入商品单价:'))count = int(input('请输入购买数量:'))total = price * countprint(f'商品总价是:{total}')
这里:
单价用 float()数量用 int()
这个搭配特别常见。 你以后做订单、购物车、库存计算时,都会经常碰到。
你可以试着输入:
19.9 和 3 8.5 和 10 100 和 2
然后观察结果。
十九、实操,做一个字符串拼接输出程序
这个练习用来感受 str()。
name = input('请输入姓名:')age = int(input('请输入年龄:'))message = '大家好,我叫' + name + ',我今年' + str(age) + '岁'print(message)
这段代码特别值得看懂。
name 本来就是字符串,所以可以直接拼接。age 是整数,所以要先用 str(age) 变成字符串,才能拼进去。
然后你也可以对比一下 f-string 的写法:
name = input('请输入姓名:')age = int(input('请输入年龄:'))print(f'大家好,我叫{name},我今年{age}岁')
两种都能实现。 但从理解类型转换的角度来说,前一种特别值得练。
二十、int()、float()、str() 之间是可以来回转的
这点你要有个整体印象。
比如:
a = '18'b = int(a)c = float(b)d = str(c)print(a, type(a))print(b, type(b))print(c, type(c))print(d, type(d))
这里你会看到:
字符串 变成整数 再变成浮点数 最后又变成字符串
也就是说,数据不是一旦定型就永远不能变。 你可以根据程序当前的需要,转换成更合适的类型。
这就是类型转换的灵活性。
二十一、最常见的报错,其实很多都和类型转换有关
比如:
你拿字符串和整数做大小比较 你拿字符串和数字做加法 你把 '18.5' 强行用 int() 转 你把 'abc' 强行转成数字
这些问题,表面看像是程序报错。 其实根源常常都是:
数据类型没处理对。
所以很多新手学一段时间以后会发现, 真正让代码顺起来的,不是学会更多新概念, 而是对类型越来越敏感。
你一看到输入, 就会先想它现在是什么类型。 你一看到拼接, 就会先想是不是都得是字符串。 你一看到计算, 就会先想是不是得先转成数字。
这种感觉一旦建立起来,写代码会稳很多。
二十二、新手最容易犯的几个类型转换错误
第一个错误,忘了输入默认是字符串。
这是头号高频坑。 只要是 input(),先默认它拿到的是字符串。
第二个错误,该用 float() 的地方用了 int()。
比如:
price = int(input('请输入价格:'))
如果用户输入 19.9,就容易出问题。
第三个错误,把带文字的内容直接转数字。
比如:
int('18岁')float('29.9元')
这都不行。
第四个错误,把数字和字符串直接拼接。
比如:
age = 18print('年龄是' + age)
这时你就该立刻想到 str(age),或者改用 f-string。
第五个错误,不知道转换后的值已经是新类型了。
比如:
a = int('10')
这时候 a 已经不是字符串了,而是整数。 后面你对它的处理方式,也要跟着变。
二十三、今天一定要亲手做的 3 个练习
第一个,字符串转整数。
a = '25'b = '5'print(int(a) + int(b))print(int(a) - int(b))
第二个,字符串转浮点数。
price = '19.9'count = 3total = float(price) * countprint(total)
第三个,数字转字符串再拼接。
score = 98message = '你的成绩是:' + str(score)print(message)
这三个练习都不复杂, 但非常值得你亲手敲一遍。
二十四、再做一个综合小练习
下面这个程序很适合拿来做阶段巩固。
需求:
输入姓名、年龄、身高、数学成绩 然后输出一段完整信息
代码如下:
name = input('请输入姓名:')age = int(input('请输入年龄:'))height = float(input('请输入身高:'))score = int(input('请输入数学成绩:'))print('------ 个人信息 ------')print('姓名:' + name)print('年龄:' + str(age))print('身高:' + str(height))print('数学成绩:' + str(score))
你敲完以后,可以再升级一下,改成 f-string:
name = input('请输入姓名:')age = int(input('请输入年龄:'))height = float(input('请输入身高:'))score = int(input('请输入数学成绩:'))print('------ 个人信息 ------')print(f'姓名:{name}')print(f'年龄:{age}')print(f'身高:{height}')print(f'数学成绩:{score}')
两种都值得你体验一下。
二十五、写在最后
类型转换这个知识点,看起来只是几个函数。 但它的实际重要性,远比表面看起来大。
因为程序里很多问题,说到底都不是逻辑多复杂, 而是数据类型没处理对。
字符串明明像数字,却不是数字 数字明明能显示,却不能直接和字符串拼接 输入明明是用户打的数字,却默认还是文本
这些小地方,最容易让新手反复卡住。
所以你现在最需要建立的,不是死记 int()、float()、str() 这三个名字, 而是慢慢形成一种反应:
这个值现在是什么类型 我接下来要拿它做什么 那我是不是该先转一下
一旦这种反应建立起来,你后面写代码会顺很多。
本文小结
类型转换就是把一种类型的数据变成另一种类型。int() 用来转整数,float() 用来转浮点数,str() 用来转字符串。input() 获取到的内容默认都是字符串。 做数字运算前,通常要先转成 int() 或 float()。 把数字和字符串拼接时,通常要先转成 str(),或者直接用 f-string。 学习类型转换最关键的,不是背规则,而是对“当前类型”和“目标用途”保持敏感。
下篇预告
第 18 篇,我们来讲一个看起来简单,但特别容易被忽视的知识点。
认识 None:Python 里“什么都没有”是什么
很多新手对 None 一开始没感觉,但后面越学越会发现,它在程序里出现的频率比想象中高得多。