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’退出。
到了这里,大家可以尝试自己去实现这个题目,不要觉得简单,自己试试看看能不能做到最好。
题目分析:
- 产生随机数x, 范围[1, 100],
- 循环读取输入,如果是q退出;
- 如果输入数值不等于x,进行大小提示;
- 直到猜中退出;
使用知识点:
- 输入语句:input;
- 字符串转整数:int;
- 循环语句,逻辑语句,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函数:
给定数值改变正负号后,取最大最小值;
实现思路:- 定义一个取反函数,
- 传入一个参数为:x,
- 返回值为: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的作用。
文章目录
关闭