从这一篇开始,我们正式进入第二阶段,开始系统讲 Python 里的基础数据类型。
学 Python,迟早都会碰到数字。
年龄是数字 分数是数字 价格是数字 身高体重是数字 程序里的加减乘除,更离不开数字
但很多新手一开始会以为,数字不就是数字吗,为什么还要分类型。
其实在 Python 里,数字并不只有一种。最常见的就有三类:
整数 int 浮点数 float 复数 complex
今天这篇,我们就把它们讲清楚。重点会放在前两种,因为这是你平时写程序最常用的。第三种复数,你先知道它是什么就够了。
一、为什么数字还要分类型
先想一个最简单的问题。
18 和 18.5 一样吗
从生活角度看,它们当然都算数字。 但从程序角度看,它们不一样。
18 是整数,没有小数部分。 18.5 是小数,有小数部分。
程序为什么要区分它们。
因为不同类型的数据,处理方式可能不一样。 比如显示方式不同,占用空间不同,参与运算时的结果也可能不同。
所以 Python 在内部不会把所有数字都一锅端,而是会分门别类地处理。
你可以先记住一句很重要的话:
在编程里,值很重要,类型也很重要。
二、第一种数字类型,int 整数
先看最常见的。
整数,也就是 int,英文全称是 integer。
它表示没有小数部分的数字。
比如:
age = 18year = 2025count = 100temperature = -5print(age)print(year)print(count)print(temperature)
这些都是整数。
你会发现,整数不只是正数。 0、负数,也都属于整数。
比如:
a = 0b = -10c = 256print(type(a))print(type(b))print(type(c))
运行后你会看到:
<class 'int'><class 'int'><class 'int'>
这里的 type() 很有用。 它的作用就是查看一个数据的类型。
所以你以后不确定某个值到底是什么类型时,可以先用:
print(type(变量名))
来看看。
三、整数最常见的使用场景
整数几乎到处都在用。
比如年龄:
age = 20
比如库存数量:
stock = 300
比如学生人数:
student_count = 45
比如循环次数,后面你学循环时会经常见到:
times = 10
只要这个数不需要小数,通常就可以用整数。
你现在可以做个小练习。
新建一个文件 int_test.py,写入:
age = 21score = 95count = 8print(age)print(score)print(count)print(type(age))print(type(score))print(type(count))
自己运行一下,感受一下整数的使用方式。
四、第二种数字类型,float 浮点数
接下来是小数。
在 Python 里,小数通常属于 float,也就是浮点数。
比如:
price = 19.9height = 1.75weight = 60.5pi = 3.14159print(price)print(height)print(weight)print(pi)
你也可以用 type() 看看:
price = 19.9print(type(price))
输出通常是:
<class 'float'>
所以只要一个数字里有小数点,Python 一般就会把它识别为 float。
比如:
a = 10.0b = 0.5c = -3.14print(type(a))print(type(b))print(type(c))
这几个都是浮点数。
五、浮点数最常见的使用场景
浮点数特别适合表示那些可能带小数的数据。
比如价格:
price = 29.9
比如身高:
height = 1.82
比如体温:
temperature = 36.5
比如平均分:
average_score = 88.6
这些数据如果用整数表示,就会丢失精度。
所以以后你看到有小数的场景,通常就要想到 float。
六、整数和浮点数看起来很像,但类型不一样
这一点特别值得你注意。
比如下面这两个值:
a = 10b = 10.0
看起来都像 10。 但它们不是同一种类型。
你可以自己验证:
a = 10b = 10.0print(type(a))print(type(b))
输出会是:
<class 'int'><class 'float'>
也就是说:
10 是整数10.0 是浮点数
这一点以后做运算、做类型判断时会很重要。
七、整数和浮点数怎么运算
先看整数和整数。
a = 10b = 3print(a + b)print(a - b)print(a * b)print(a / b)
输出会是:
137303.3333333333333335
注意最后这个除法结果。 虽然 a 和 b 都是整数,但只要做普通除法 /,结果通常会变成浮点数。
这点很重要。
再看一个例子:
print(type(10 / 2))
你会发现结果仍然是:
<class 'float'>
也就是说,在 Python 里,普通除法的结果默认是浮点数。
八、还有几种很常用的数字运算
除了加减乘除,还有几个你后面会经常见到。
print(10 // 3)
结果是:
3
整除的意思,就是只保留整数部分。
print(10 % 3)
结果是:
1
取余就是看除完以后还剩多少。
print(2 ** 3)
结果是:
8
这个表示 2 的 3 次方。
你可以自己做个小练习:
a = 15b = 4print(a + b)print(a - b)print(a * b)print(a / b)print(a // b)print(a % b)print(a ** b)
把每个结果都跑出来看看。
九、为什么有时候小数计算结果看起来怪怪的
这也是新手经常遇到的情况。
比如:
print(0.1 + 0.2)
你可能以为结果会是:
0.3
但实际很可能看到:
0.30000000000000004
很多人第一次看到会怀疑人生,觉得是不是 Python 算错了。
其实不是。
这是因为计算机内部表示浮点数的方式决定的。 有些十进制小数,转换成二进制后没法精确表示,所以会出现这种看起来很奇怪的小误差。
你现在不用深究底层原理。 只要先知道两件事:
第一,这很正常,不是你写错了。 第二,做金额、成绩这类场景时,通常会配合格式化显示来处理。
比如你可以先这样做:
result = 0.1 + 0.2print(result)print(f'{result:.1f}')
输出会类似这样:
0.300000000000000040.3
这里的 :.1f 表示保留 1 位小数。 这个用法你现在先会用就行,后面讲字符串格式化时还会更详细展开。
十、第三种数字类型,complex 复数
这个类型在入门阶段用得不多,但你最好先知道它存在。
复数一般长这样:
a = 3 + 4jprint(a)print(type(a))
输出通常是:
(3+4j)<class 'complex'>
这里的 j 表示虚数单位。
如果你以前学过数学里的复数,这里就很好理解。 如果你没学过,也完全没关系。
你现在只需要知道:
Python 支持复数 复数类型叫 complex但在日常入门练习、办公自动化、基础开发里,几乎很少用到
所以现阶段,把重点放在 int 和 float 就够了。
十一、怎么把字符串转换成数字
前面讲输入输出时,你已经见过这个问题。
input() 获取到的内容,默认都是字符串。 如果你想让它参与数字计算,就要做类型转换。
先看整数转换。
age = int(input('请输入你的年龄:'))print(age)print(type(age))
如果输入:
18
那么 age 就会变成整数。
再看浮点数转换。
price = float(input('请输入商品单价:'))print(price)print(type(price))
如果输入:
19.9
那么 price 就会变成浮点数。
这两个转换以后会非常常用,一定要练熟。
十二、实操,做一个数字类型识别小程序
下面这个练习很适合你现在做。
age = 20price = 39.9number = 3 + 2jprint(age, type(age))print(price, type(price))print(number, type(number))
运行一下,看看这三种数字类型分别长什么样。
然后你再自己改。
把 age 改成别的整数 把 price 改成别的小数 把 number 改成别的复数
不用怕麻烦,自己改一遍,比看十遍都强。
十三、实操,做一个商品计算小程序
这个更贴近日常使用。
需求是这样的:
输入商品单价和购买数量 输出总价
代码如下:
price = float(input('请输入商品单价:'))count = int(input('请输入购买数量:'))total = price * countprint(f'商品总价是:{total}')
这里为什么一个用 float(),一个用 int()。
因为单价可能带小数,比如 19.9。 而数量通常是整数,比如 3 件、5 件。
你可以自己试几组输入:
19.9 和 3 8.5 和 10 100 和 2
看看输出结果分别是什么。
然后你再升级一下,让程序多输出一句:
print(f'单价类型是:{type(price)}')print(f'数量类型是:{type(count)}')
这样你对数字类型会更有感觉。
十四、再做一个平均分小程序
这个例子也特别适合练习 int 和 float。
chinese = int(input('请输入语文成绩:'))math = int(input('请输入数学成绩:'))english = int(input('请输入英语成绩:'))total = chinese + math + englishaverage = total / 3print(f'总分是:{total}')print(f'平均分是:{average}')print(type(total))print(type(average))
你可以观察一下:
total 一般是整数average 往往会变成浮点数
为什么。
因为总分是整数相加。 但平均分做了除法,所以结果通常会是浮点数。
这个例子特别好,因为它能让你真实感受到:
同样是数字,经过不同运算,类型也可能变化。
十五、新手最容易犯的几个数字类型错误
第一,明明要算数,却忘了做类型转换。
比如:
a = input('请输入第一个数字:')b = input('请输入第二个数字:')print(a + b)
如果输入 10 和 20,结果会变成:
1020
因为它们还是字符串,不是数字。
正确写法:
a = int(input('请输入第一个数字:'))b = int(input('请输入第二个数字:'))print(a + b)
第二,把小数强行转成整数。
比如:
price = int('19.9')
这通常会报错。因为 '19.9' 不是一个纯整数形式的字符串。
如果你确实要处理这种值,应该先用:
price = float('19.9')
第三,不清楚什么时候该用 int,什么时候该用 float。
最简单的判断方法就是:
没有小数,用 int 可能有小数,用 float
虽然不是所有场景都绝对这样,但对入门阶段来说已经够用了。
十六、做一个今天一定要亲手敲的综合练习
下面这个小程序,很适合你现在练。
需求:
输入一个人的姓名、年龄、身高、体重 最后输出这些信息,并显示每个数字的类型
代码如下:
name = input('请输入姓名:')age = int(input('请输入年龄:'))height = float(input('请输入身高,单位米:'))weight = float(input('请输入体重,单位公斤:'))print('------ 个人信息 ------')print(f'姓名:{name}')print(f'年龄:{age},类型是:{type(age)}')print(f'身高:{height},类型是:{type(height)}')print(f'体重:{weight},类型是:{type(weight)}')
你亲手敲一遍以后,再自己改造一下。
比如增加一个月收入 或者增加一个考试平均分 或者增加一个商品价格
只要你开始自己加字段,说明你已经在真正掌握这些内容了。
十七、写在最后
数字类型这个东西,看起来像很基础的知识点,甚至有点像在讲常识。 但它其实特别重要。
因为后面你写判断、做运算、处理用户输入、分析数据,几乎都离不开它。
你现在最需要建立的,不是死记概念,而是这种直觉:
整数和小数不一样 不同类型参与运算时,结果可能变化 输入进来的内容不一定就是数字 程序处理数字时,类型本身就是信息的一部分
当你慢慢有了这种感觉,后面的代码会好理解很多。
本文小结
Python 里最常见的数字类型有 int、float、complex。 int 表示整数,float 表示小数,complex 表示复数。 入门阶段最常用的是 int 和 float。 普通除法 / 的结果通常是 float。 输入得到的内容默认是字符串,做数字计算前通常要用 int() 或 float() 转换。 学习数字类型最好的方式,不是背定义,而是多写几个真实小程序。
下篇预告
第 12 篇,我们来讲另一个特别常用的数据类型。
字符串入门:最常用也最容易忽视的数据类型
你写名字、城市、文本、提示语、文件内容,几乎都离不开字符串。 学会它,后面很多程序都会更顺手。