Python数值类型与数学函数:深入理解与高效应用

本文详细介绍了Python中的数值类型(整型、浮点型和复数),以及它们之间的转换方法。此外,还涵盖了Python的数学函数,如绝对值、向上取整、对数、随机数生成等。
摘要由CSDN通过智能技术生成


一、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 类来进行精确的十进制计算。

  1. 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)
  1. 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数值类型与数学函数。

感谢你的观看,谢谢!

在这里插入图片描述

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobuding_QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值