目录
- 一、数值类型
- 二、基本运算的函数
- 三、数学函数模块math
- 四、随机函数random模块
- 五、关于算法的小知识
- 5.1pow(x, y)函数的内部逻辑实现
- 5.2关于sqrt(x)函数的内部逻辑实现
一、数值类型
在Python3.x种有三种数值类型,分别是:整形(int),浮点型(float),复数(comlpex),如果你使用的还是低版本Python2.x,那么还包括长整型(long)
整形(int)
包括正整数、负整数。如:10,-10.整数有四种进制可以表示。分别位:二进制、八进制、十进制、十六进制。
种类 | 描述 | 引导符 |
---|---|---|
二进制 | 由0和1组成 | 0b或0B |
八进制 | 由0到7组成 | 0o或0O |
十进制 | 默认情况为十进制 | 无 |
十六进制 | 由0到9,a到f,A到F组成,不区分大小写 | 0x或0X |
浮点型
由整数部分和小数部分组成。例如:1.23、3.14。
复数
由实数部分和虚数部分组成。例如:5+4i、6-i
二、基本运算的函数
函数 | 描述 |
---|---|
abs(x) | x的绝对值 |
int(x) | 将x转换为整数 |
float(x) | 将x转换为浮点数 |
complex(x, y) | 一个带有实部x和虚部y的复数,默认y为0 |
divmod(x, y) | 计算(x // y, x % y)的数值 |
pow(x, y) | x的y次幂 |
三、数学函数模块math
要想使用数学模块math,首先需要导入math模块:
import math
引入之后我们就可以使用了,
import math
mth.sqrt(27)
math模块中的一些函数
函数 | 描述 |
---|---|
ceil(x) | 返回x的上整数,比如math.ceil(1.3),返回2 |
floor(x) | 返回x的下整数,比如math.ceil(1.6),返回1 |
exp(x) | 返回e的x次幂 |
math.log(x[, base]) | 返回以base为底x的对数 |
log10(x) | 返回以10为底x的对数 |
sqrt(x) | 返回x的平方根 |
factorial(x) | 返回x的阶乘 |
四、随机函数random模块
首先导入random模块:
import random
random(x)函数
随机生成一个0到1的范围内的实数。
a = random(31)
prrint(a)
uniform(x, y)函数
随机生成一个x到y范围内的实数
import random
random.uniform(1,25)
注意: 都是左开右闭的区间。
五、关于算法的小知识
5.1pow(x, y)函数的内部逻辑实现
通过分而治之的方法————划分成递归的子问题
def pow(x, y): # 计算x的y次幂
if y == 0: # 任何数字的0次幂都为1
return 1
if y >= 0: # 如果幂y为正数
y1 = pow(x, y // 2) # 划分y的数值
if y % 2 == 0: # 如果y为偶数
return y1 * y1
else: # 如果y为奇数
return y1 * y1 * x
else:
return 1.0 / (pow(x, -y))
5.2关于sqrt(x)函数的内部逻辑实现
通过高中学过的二分法来进行实现。
实现算术平方根的计算(返回结果为整数)
def sqrt(x): # 计算x的算术平方根
left, right, ans = 0, x, 0.0 # 左边界,右边界,最终结果
while left <= right: # 当左边界小于等于右边界
mid = (left + right) // 2 # 计算中间的数值
if mid * mid <= x:
ans = mid # 存储结果
left = mid + 1 # 左边界右移
else:
right = mid - 1 # 右边界左移
return ans
实现算术平方根的计算(返回结果为整数)
牛顿迭代法来计算:
以上公式接受一个值n,并且通过再每一次迭代中将newguess赋值给oldguess来反复猜测平方根。大概反复迭代20次左右返回的就是n的平方根。
def sqrt(n):
Newguess = n / 2
for k in range(20):
Newguess = (1 / 2) * (Newguess + n / Newguess)
return Newguess