文章目录
- 一、Python的数字
- 1.数值类型
- 1.1 整型(int)
- 1.2 浮点型(float)
- 1.3 复数(complex)
- 2.数字类型转换
- 2.1 int(x)
- 2.2 float(x)
- 2.3 complex(x)
- 2.4 complex(x, y)
- 3.数字运算
- 3.1 round
- 二、函数
- 1.数学函数
- 1.1 abs(x)
- 1.2 ceil(x)
- 1.3 cmp(x, y)
- 1.4 exp(x)
- 1.5 fabs(x)
- 1.6 floor(x)
- 1.7 log(x)
- 1.8 log10(x)
- 1.9 max(x1, x2,...)
- 1.10 min(x1, x2,...)
- 1.11 modf(x)
- 1.12 pow(x, y)
- 1.13 sqrt(x)
- 2.随机数函数
- 2.1 random()
- 2.2 randint(a, b)
- 2.3 choice(seq)
- 2.4 shuffle(seq)
- 2.5 sample(population, k)
- 3.三角函数
- 三、总结
一、Python的数字
1.数值类型
python 的数据类型,主要包括 Number(数值)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)、Set(集合)。Python 中的数值类型通常包括整数、浮点数和复数,布尔类型本质上也属于数值类型。本文中,主要讲Python 中的数值类型及相关操作,其他的数据类型将在另外文章中讲解。
1.1 整型(int)
通常被称为是整型或整数,是正或负整数,不带小数点。例如 42 和 -10。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。布尔(bool)是整型的子类型。
# 整型
x = 42
y = -10
print(x) # 输出: 42
print(y) # 输出: -10
在Python中,布尔类型(bool)是整型的子类型。布尔类型只有两个值:True和False。通常用于控制程序流程,例如在if语句中判断条件是否成立。
# 定义布尔类型变量
a = True
b = False
# 在if语句中使用布尔类型
if a:
print("a is true")
else:
print("a is false")
if not b:
print("b is false")
else:
print("b is true")
# 使用布尔类型进行逻辑运算
c = True and False
d = True or False
e = not True
print(c) # 输出: False
print(d) # 输出: True
print(e) # 输出: False
请注意,Python将布尔类型视为整数类型的子类型,其中True被视为等于整数值1,而False被视为等于整数值0。因此,您可以将布尔类型与整数类型混合使用,并对其进行运算。
x = True + 1
y = False + 2
print(x) # 输出: 2
print(y) # 输出: 2
1.2 浮点型(float)
浮点型由整数部分与小数部分组成,用于表示带有小数部分的数值,例如 3.14 和 -0.5。
# 浮点型
a = 3.14
b = -0.5
print(a) # 输出: 3.14
print(b) # 输出: -0.5
1.3 复数(complex)
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。例如 1 + 2j 和 -3j。
c = 1 + 2j
d = -3j
print(c) # 输出: (1+2j)
print(d) # 输出: (-0-3j)
请注意,Python是一种动态类型语言,因此您不需要显式地声明变量的类型。根据赋给变量的值,Python会自动确定适当的数值类型。
2.数字类型转换
2.1 int(x)
int(x) 将x转换为一个整数。
# 整数转换
a = 10
b = int(3.14)
c = int("5")
print(a, type(a)) # 输出: 10 <class 'int'>
print(b, type(b)) # 输出: 3 <class 'int'>
print(c, type(c)) # 输出: 5 <class 'int'>
2.2 float(x)
float(x) 将x转换到一个浮点数。
# 浮点数转换
d = float(10)
e = float("3.14")
print(d, type(d)) # 输出: 10.0 <class 'float'>
print(e, type(e)) # 输出: 3.14 <class 'float'>
2.3 complex(x)
complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
a = complex(3)
print(a) # 输出: (3+0j)
b = complex(3.14)
print(b) # 输出: (3.14+0j)
2.4 complex(x, y)
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
# 复数转换
f = complex(2, 3)
g = complex("4+5j")
print(f, type(f)) # 输出: (2+3j) <class 'complex'>
print(g, type(g)) # 输出: (4+5j) <class 'complex'>
需要注意的是,转换函数只能在数字类型之间进行转换,对于无效的转换则会导致错误。例如,将一个非数字字符串转换为数字类型会引发ValueError。
h = int("abc") # ValueError: invalid literal for int() with base 10: 'abc'
3.数字运算
这边就简单介绍下round,如需其他更详细的可参考我的另外一篇博客揭秘Python的运算符:从加减乘除到幂次开方,一网打尽!
3.1 round
在Python中,round()函数可以对一个数字执行四舍五入操作。该函数的语法如下:
round(number, ndigits=None)
#其中,number是要进行四舍五入的数字,ndigits是指定四舍五入到小数点后几位。如果省略ndigits参数,则默认为0,即四舍五入到整数。
示例代码如下:
print(round(3.14159)) # 输出: 3
print(round(3.14159, 2))# 输出: 3.14
print(round(12345, -3))# 输出: 12000
这里有个关于 round 函数的小坑,请看下面:
print(round(10.4)) #10
print(round(10.5)) #10
print(round(10.6)) #11
print()
print(round(11.4)) #11
print(round(11.5)) #12
print(round(11.6)) #12
这个结果可以解释为:
当小数部分小于0.5时,round()函数会向下舍入到最接近的整数。
当小数部分大于0.5时,round()函数会向上舍入到最接近的整数。
当小数部分为5时,会向最接近的偶数舍入。
二、函数
1.数学函数
1.1 abs(x)
abs(x):返回数字的绝对值,如abs(-3) 返回 3
import math
print(abs(-3)) # 3
1.2 ceil(x)
ceil(x):返回不小于 x 的最小整数(向上取整)。示例:import math
math.ceil(3.2) 返回 4,math.ceil(-1.8) 返回 -1。
import math
print(math.ceil(3.2)) # 4
print(math.ceil(-1.8)) # -1
1.3 cmp(x, y)
cmp(x, y):如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。Python已经在版本2.7中移除了cmp函数。
可以使用 (x>y)-(x<y) 来代替 cmp(x, y) 函数,(x>y)-(x<y) 这个表达式的含义是,如果 x > y,则返回 1,如果 x < y,则返回 -1,如果 x == y,则返回 0。
print((1>2)-(1<2)) # 输出 -1
print((2>2)-(2<2)) # 输出 0
print((3>2)-(3<2)) # 输出 1
1.4 exp(x)
exp(x):返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
import math
print(math.exp(1)) # 2.718281828459045
1.5 fabs(x)
fabs(x):以浮点数形式返回数字的绝对值,如math.fabs(-5) 返回5.0
import math
print(math.fabs(-5)) # 5.0
print(math.fabs(-4.6)) # 4.6
1.6 floor(x)
floor(x):返回不大于 x 的最大整数(向下取整)。示例:import math
math.floor(3.7) 返回 3,math.floor(-2.5) 返回 -3。
import math
print(math.floor(3.7)) # 3
print(math.floor(-2.5)) # -3
1.7 log(x)
log(x):返回 x 的自然对数(以 e 为底)。示例:import math
math.log(1) 返回 0,math.log(math.e) 返回 1。
import math
print(math.log(1)) # 0.0
print(math.log(math.e)) # 1.0
1.8 log10(x)
log10(x):返回以10为基数的x的对数,示例:import math
math.log10(10)返回 1.0,math.log10(100)返回 2.0
import math
print(math.log10(10)) # 1.0
print(math.log10(100)) # 2.0
1.9 max(x1, x2,…)
max(x1, x2,…):返回给定参数的最大值,参数可以为序列。
import math
print(max(3, 7, 2, 9)) # 9
1.10 min(x1, x2,…)
min(x1, x2,…):返回给定参数的最小值,参数可以为序列。
import math
print(min(5, 1, 8, 4)) # 1
1.11 modf(x)
modf(x):返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
import math
result = math.modf(10.6)
print(result) # (0.5999999999999996, 10.0)
这里为啥是0.5999999999999996一大串数字,而不是0.6呢?
这个是因为在 Python 中,在进行浮点数运算时,会使用有限的位数来表示小数部分,因此会存在一定的精度损失。
如果为了避免这种问题,可以使用适当的方法来处理浮点数的舍入误差,例如使用 round() 函数来控制保留的小数位数,或者使用 Decimal 类来进行精确的十进制计算。
- round() 函数
import math
result = math.modf(10.6)
rounded_result = round(result[0], 1), round(result[1], 1)
print(rounded_result) # (0.6, 10.0)
- Decimal 类
from decimal import Decimal
import math
result = math.modf(10.6)
rounded_result = Decimal(str(result[0])).quantize(Decimal('.00')), Decimal(str(result[1])).quantize(Decimal('.00'))
print(rounded_result) # (Decimal('0.60'), Decimal('10.00'))
1.12 pow(x, y)
pow(x, y):返回 x 的 y 次方
import math
print(math.pow(2, 3)) # 8.0
1.13 sqrt(x)
sqrt(x):返回数字x的平方根。
import math
print(math.sqrt(9)) # 3.0
2.随机数函数
2.1 random()
random():随机生成下一个实数
示例:函数返回一个[0.0, 1.0)之间的随机小数。
import random
print(random.random()) # 输出一个随机小数,如 0.5718236770913483
2.2 randint(a, b)
randint(a, b):函数返回一个[a, b]之间的整数。
示例:函数返回一个[1, 10)之间的随机整数。
import random
print(random.randint(1, 10)) # 输出一个1~10之间的整数,如 8
2.3 choice(seq)
choice(seq):函数从序列seq中随机选择一个元素。
示例:从0到9中随机挑选一个整数。
import random
print(random.choice(range(10))) # 输出序列中的一个元素,如 7
2.4 shuffle(seq)
shuffle(seq): 将序列的所有元素随机排序
import random
seq = [1, 2, 3, 4, 5]
random.shuffle(seq)
print(seq) # 输出随机排序后的序列,如 [5, 2, 3, 1, 4]
2.5 sample(population, k)
sample(population, k):函数从总体population中随机选择k个元素,不会改变总体population。
import random
population = [1, 2, 3, 4, 5]
print(random.sample(population, 3)) # 输出从总体中随机选择的3个元素,如 [2, 4, 1]
3.三角函数
函数 | 描述 |
---|---|
acos(x) | 返回x的反余弦弧度值。 |
asin(x) | 返回x的反正弦弧度值。 |
atan(x) | 返回x的反正切弧度值。 |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值。 |
cos(x) | 返回x的弧度的余弦值。 |
hypot(x, y) | 返回欧几里德范数 sqrt(xx + yy)。 |
sin(x) | 返回的x弧度的正弦值。 |
tan(x) | 返回x弧度的正切值。 |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) | 将角度转换为弧度 |
三、总结
今天主要讲了Python数值类型与数学函数。
感谢你的观看,谢谢!