Python3 数字:编程世界的数学基础

我是陈默,一个正拼命上岸的码农。
你觉得编程最基础的东西是什么?
不是循环,不是函数,不是类。
是数字。
你算价格、算库存、算时间、算得分——哪一样离得开数字?
今天我们来聊聊 Python 里的数字类型。放心,很简单。
1. 整数:最纯粹的数字
整数就是没有小数点的数:1、100、-50、0。
定义整数
# 正数age = 25print(age) # 输出: 25# 负数temperature = -10print(temperature) # 输出: -10# 零count = 0print(count) # 输出: 0# 大数(Python 整数没有大小限制!)big = 999999999999999999999999999print(big) # 输出: 999999999999999999999999999
Python 的整数没有上限。 这一点和很多其他语言不一样。
不同进制的整数
# 二进制(以 0b 开头)binary = 0b1010print(binary) # 输出: 10(二进制 1010 = 十进制 10)# 八进制(以 0o 开头)octal = 0o17print(octal) # 输出: 15(八进制 17 = 十进制 15)# 十六进制(以 0x 开头)hex_num = 0xFFprint(hex_num) # 输出: 255(十六进制 FF = 十进制 255)
日常编程用得不多,但面试可能会问。
数字里的下划线
很长的数字,可以用下划线分隔,更易读:
# 这两个是一样的num1 = 1000000num2 = 1_000_000print(num1) # 输出: 1000000print(num2) # 输出: 1000000print(num1 == num2) # 输出: True
2. 浮点数:带小数的数字
浮点数就是小数:3.14、-0.5、2.0。
定义浮点数
# 普通小数price = 19.9print(price) # 输出: 19.9# 整数后面加 .0 也是浮点数score = 100.0print(score) # 输出: 100.0# 小数点前或后可以省略num1 = .5# 等于 0.5num2 = 5.# 等于 5.0print(num1) # 输出: 0.5print(num2) # 输出: 5.0
科学计数法
处理很大或很小的数时很方便:
# e 表示 10 的多少次方big = 1.5e6# 1.5 × 10⁶print(big) # 输出: 1500000.0small = 3e-3# 3 × 10⁻³print(small) # 输出: 0.003
浮点数的精度问题
这是浮点数的一个"坑":
result = 0.1 + 0.2print(result) # 输出: 0.30000000000000004# 为什么不是 0.3?这是计算机存储浮点数的方式导致的
解决方法: 用 round() 四舍五入
result = 0.1 + 0.2print(round(result, 1)) # 输出: 0.3
3. 数字运算:加减乘除
基本运算
a = 10b = 3print(a + b) # 输出: 13(加)print(a - b) # 输出: 7(减)print(a * b) # 输出: 30(乘)print(a / b) # 输出: 3.3333333333333335(除,结果是浮点数)
特殊除法
a = 10b = 3# 整除(只保留整数部分)print(a // b) # 输出: 3# 取余(除法的余数)print(a % b) # 输出: 1# 幂运算(多少次方)print(a ** b) # 输出: 1000(10 的 3 次方)
整数除法 vs 浮点除法
# 两个整数相除,结果也是浮点数print(8 / 2) # 输出: 4.0(不是 4!)# 要得到整数结果,用 //print(8 // 2) # 输出: 4
4. 内置数学函数
Python 自带了一些常用的数学函数,不用导入任何东西。
绝对值:abs()
print(abs(-5)) # 输出: 5print(abs(5)) # 输出: 5print(abs(-3.14)) # 输出: 3.14
四舍五入:round()
# 不指定小数位数,默认取整print(round(3.4)) # 输出: 3print(round(3.5)) # 输出: 4print(round(3.6)) # 输出: 4# 指定保留几位小数print(round(3.14159, 2)) # 输出: 3.14print(round(3.14159, 3)) # 输出: 3.142
最大最小值:max()、min()
# 可以传多个数字print(max(1, 5, 3, 9, 2)) # 输出: 9print(min(1, 5, 3, 9, 2)) # 输出: 1
幂运算:pow()
# pow(x, y) 等于 x ** yprint(pow(2, 10)) # 输出: 1024(2 的 10 次方)# 可以加第三个参数,对结果取余print(pow(2, 10, 7)) # 输出: 2(1024 % 7 = 2)
求和:sum()
numbers = [1, 2, 3, 4, 5]print(sum(numbers)) # 输出: 15
5. 类型判断和转换
判断类型
a = 10b = 3.14print(type(a)) # 输出: <class 'int'>print(type(b)) # 输出: <class 'float'># 判断是否是某种类型print(isinstance(a, int)) # 输出: Trueprint(isinstance(b, int)) # 输出: Falseprint(isinstance(b, float)) # 输出: True
类型转换
# 整数转浮点数print(float(10)) # 输出: 10.0# 浮点数转整数(直接截断小数)print(int(3.9)) # 输出: 3(不是 4!)# 字符串转数字print(int("123")) # 输出: 123print(float("3.14")) # 输出: 3.14
6. 实用技巧
交换两个数
a = 5b = 10# Python 的方式,不需要临时变量a, b = b, aprint(a) # 输出: 10print(b) # 输出: 5
判断奇偶
num = 7if num % 2 == 0: print("偶数")else: print("奇数")# 输出: 奇数
判断能否整除
num = 15# 能否被 3 整除print(num % 3 == 0) # 输出: True# 能否被 5 整除print(num % 5 == 0) # 输出: True# 能否同时被 3 和 5 整除print(num % 3 == 0and num % 5 == 0) # 输出: True
数字格式化输出
price = 19.9# 保留 2 位小数print(f"价格:{price:.2f}元") # 输出: 价格:19.90元# 加千分位big_num = 1234567print(f"{big_num:,}") # 输出: 1,234,567# 百分比ratio = 0.856print(f"完成度:{ratio:.1%}") # 输出: 完成度:85.6%
7. 常见错误
整数除以 0
# print(10 / 0) # ZeroDivisionError! 会报错
除法之前,先检查除数是否为 0。
混用整数和浮点数
# 整数和浮点数运算,结果是浮点数result = 10 + 3.0print(result) # 输出: 13.0print(type(result)) # 输出: <class 'float'>
这通常不是问题,但要注意。
最后
数字是编程的基础。价格、数量、分数、时间——几乎所有程序都离不开数字。
记住三点:
- 浮点数有精度问题,比较时用 round() 或判断差值是否足够小
我的建议:
打开 Python,把这些代码敲一遍。自己造几个数字,做做运算,看看结果。
数学不好没关系,编程用到的数学很简单。
今天就到这里。
我是陈默,我们下期再见。
如果你觉得这篇文章有帮助,欢迎关注我。我会持续分享 Python 学习的干货。