• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

从0开始学Python(二、数字的美)

互联网 diligentman 39分钟前 1次浏览

目录

    • 一、数值类型
    • 二、基本运算的函数
    • 三、数学函数模块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

实现算术平方根的计算(返回结果为整数)

牛顿迭代法来计算:
从0开始学Python(二、数字的美)

以上公式接受一个值n,并且通过再每一次迭代中将newguess赋值给oldguess来反复猜测平方根。大概反复迭代20次左右返回的就是n的平方根。

def sqrt(n):
    Newguess = n / 2
    for k in range(20):
        Newguess = (1 / 2) * (Newguess + n / Newguess)
    return Newguess


程序员灯塔
转载请注明原文链接:从0开始学Python(二、数字的美)
喜欢 (0)