10.数字相关模块与方法

主要内容:

  • 小目标:数字相关模块
  • 主要内容:math模块,random模块,decimal模块;

1.math模块

math模块主要用于数学计算,例如:开发,三角函数,log函数等;

1.1 导入方式:

Python中非内置模块需要导入,导入基本语法:

import 模块
#from ... import 用于从模块导入指定的属性,类,函数
from 模块 import xxx

math模块导入之后才能使用:

import math

1.2 查看模块相关属性与方法

dir或者help

dir(math)

输出结果, math某块相关属性与支持函数:


['__doc__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__',
 'acos',
 'acosh',
 'asin',
 'asinh',
 'atan',
 ...

1.3 常量:

相关属性:

属性 说明
pi 表示圆周率,3.141592653589793
e 自然对数的底, 2.718281828459045

1.4 三角函数:

相关函数:

函数 说明
sin(x)/cos(x) 返回的x弧度的正/余弦值
asin(x)acos(x) 返回x的反正/反余弦弧度值
tan(x) 返回x弧度的正切值
atan(x) 返回x的反正切弧度值

两个例子:

import math
#pi/2 正弦值
print(math.sin(math.pi/2))
#pi 余弦值
print(math.cos(math.pi))

结果:

1.0
-1.0

1.5 常用函数:

函数 说明
factorial(x) 计算阶乘,返回x!
sqrt(x) 返回x的平方根
floor(x) 取最接近x的整数,返回整数<x
log(x[, base]) 以 Base 为底的 x 的对数
log10(x) 以10为底的x的对数
log2(x) 以2为底的x的对数

几个例子:

print('math.floor(-0.1) =', math.floor(-0.1))
print('math.floor(3.21) =', math.floor(3.1))
print('math.factorial(5)=', math.factorial(5))
print('    math.sqrt(25)=', math.sqrt(25))
print('     math.log2(4)=', math.log2(4))

结果:

math.floor(-0.1) = -1
math.floor(3.21) = 3
math.factorial(5)= 120
    math.sqrt(25)= 5.0
     math.log2(4)= 2.0

对于math模块我们大概了解下即可。

2. random模块

random模块用于产生随机数,导入方式:

import random

2.1 random模块相关方法:

random模块常用的方法:

方法 说明
random() 产生[0,1]之间随机浮点数
uniform(a,b) 产生(min(a,b), max(a,b))之间随机浮点数
randint(a,b) 产生[a,b] 之间随机整数
randrange([start], stop, [,step]) 指定范围内,按step递增的集合中取一个随机数,step缺省值为1
choice(sequence) 在序列中随机选取一个元素
shuffle(x[, random]) 将列表中元素顺序打乱
sample(sequence, k) 在序列中随机选取不重复k个元素,返回列表,k<seq长度
choices(population, ..., k=1) 在 给定序列中选取k个元素,返回列表

来个几个例子:

a = 1
b = 20
print(random.random())
print(random.randint(a,b))
print(random.uniform(a,b))

结果:

0.6382030344136873
16
18.40443193784904

2.2 猜数字小游戏:

需求:产生一个1~100之间随机数,用于输入数值,对用户进行友好提示,直到猜中或者‘q’退出。

到了这里,大家可以尝试自己去实现这个题目,不要觉得简单,自己试试看看能不能做到最好。

题目分析:

  1. 产生随机数x, 范围[1, 100],
  2. 循环读取输入,如果是q退出;
  3. 如果输入数值不等于x,进行大小提示;
  4. 直到猜中退出;

使用知识点:

  1. 输入语句:input;
  2. 字符串转整数:int;
  3. 循环语句,逻辑语句,break,continue语句;

代码实现:

import random
def get_random(a, b):
    return random.randint(a, b)
#猜数字函数,不需要返回值
def guess(x):
    while True:
        #提示用户输入
        n = input('请输入:')
        if n == 'q':
            print('这局不猜了!')
            break
        #字符串转数字,这里必须确保输入是数字
        n = int(n)
        if n > x:
            print('输入太大!')
        elif n < x:
            print('输入太小!')
        else:
            #猜对后退出本次游戏
            print('输入正确:%d!'%x)
            break
x = get_random(1, 10)
guess(x)

测试结果:

请输入:5
输入太大!
请输入:4
输入太大!
请输入:3
输入正确:3!

通过这个练习,希望对杜正朋友解题思路有一定帮助;

3. max/min函数

max/min两个方法:

#找到可迭代对象中最大/最小值
max/min(iterable, *[, default=obj, key=func])
#找到arg1, arg2, args中最大/最小值
min/min(arg1, arg2, *args, *[, key=func])

对于key理解:
key如果指定为函数,则根据函数返回值去最大最小值。

  • 基本使用:
    获取最大最小值
max_val = max(1,2,3,4,5,100, -10000)
print('max val:', max_val)
min_val = min(-1,2,3,4,5,100, 10000)
print('min val:', min_val)

结果:

max val: 100
min val: -1
  • 改变策略
    给定几个数值,取绝对值最大,最小的数;
    分析:绝对值函数:abs, 将key指定为abs试试。
max_val = max(1,2,3,4,5,100, -10000, key=abs)
print('max val:', max_val)
min_val = min(-1,2,3,4,5,100, -10000,key=abs)
print('min val:', min_val)

结果:

max val: -10000
min val: -1

指定key之后,max/min会根据abs的返回值进行比较。
这里我们常将key函数称为回调函数;

  • 自定义key函数:
    给定数值改变正负号后,取最大最小值;
    实现思路:

    1. 定义一个取反函数,
    2. 传入一个参数为:x,
    3. 返回值为:x*-1

代码实现:

def func(x):
    return x*-1
max_val = max(1,2,3,4,5,100, -10000, key=func)
print('max val:', max_val)
min_val = min(-1,2,3,4,5,100, -10000,key=func)
print('min val:', min_val)

结果:

max val: -10000
min val: 100

这里我们要理解key的作用,key对应函数的参数与返回值;

总结:

  • 了解下math模块中常用的方法,使用的时候能够去查文档;
  • 掌握random随机数模块
  • 掌握max/min函数,重点理解key的作用。

版权声明:
作者:WaterBear
链接:https://l-t.top/2870.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录