数学模块(文件) 随机模块 内置方法

本文介绍了Python中的math数学模块、random随机模块以及内置方法的使用,包括自定义choice函数、随机验证码生成、绝对值、四舍五入、序列求和、最大值与最小值、排序、指数和取余、范围生成、进制转换、字符与ASCII编码的相互转换,以及在使用eval和exec时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

### math 数学模块

"""模块.方法()"""
import math

#ceil()  向上取整操作 *****
#小数点后去掉,不存在四舍五入,整数加1
res = math.ceil(3.01)
print(res)==>4

#floor() 向下取整操作 *****
#只保留整数部分,不存在四舍五入
res = math.floor(4.1)
print(res)==>4

#pow()  计算一个数值的N次方(结果为浮点数) (对比内置pow)
res = math.pow(2,3)
print(res)

#sqrt() 开平方运算(结果浮点数)
res = math.sqrt(9)
print(res)

#fabs() 计算一个数值的绝对值 (结果浮点数) (对比内置abs)
res = math.fabs(-9)
print(res)

#modf() 将一个数值拆分为整数和小数两部分组成元组
res = math.modf(-19.8)
print(res)


#copysign()  将参数第二个数值的正负号拷贝给第一个 (返回一个小数)
res = math.copysign(-90,-18)
print(res)# -90.0

#fsum() 将一个容器数据中的数据进行求和运算 (结果浮点数)(对比内置sum)
lst = [1,2,3,4]
res = math.fsum(lst)
print(res)


#圆周率常数 pi
res = math.pi

print(res)

### 随机模块 random

import random

#random() 获取随机0-1之间的小数(左闭右开) 0 <= x < 1
res = random.random()
print(res)

#randrange() 随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值) 					同range *****
 一个参数的用法
res = random.randrange(3) # 0 1
 二个参数的用法
res = random.randrange(3,7) # 3 4 5 6
 三个参数的用法
res = random.randrange(3,10,2) # 3 5 7 9 
print(res)

#randint() 随机产生指定范围内的随机整数(可以取到最大值)[ 了解 ]
res = random.randint(1,3) # 1 2 3
print(res)

#uniform() 获取指定范围内的随机小数(左闭右开) 1<=x < 3的小数
res = random.uniform(1,3) 
res = random.uniform(3,1)
print(res)
"""
"Get a random number in the range [a, b) or [a, b] depending on rounding."
return a + (b-a) * self.random()

a = 3 , b = 1
return a + (b-a) * 0~1
return 3 + (1-3) * 0~1
return 3 + -2 * (0~1)

最大值:3 + -2 * 0 = 3
最小值:3 + -2 * 1 = 1

1< x <=3
"""

#choice()  随机获取序列中的值(多选一)
lst = ["周杰伦","蔡徐坤","易烊千玺","神秘boy"]
res = random.choice(lst)
print(res)

自定义choice函数

def mychoice(lst):
	# 随机获取0 ~ 3的下标
	num = random.randrange(len(lst))
	# 通过下标来获取列表的值
	return lst[num]
print(mychoice(lst))

lambda表达式

mychoice = lambda lst : lst[random.randrange(len(lst))]
print(mychoice(lst))

#sample()  随机获取序列中的值(多选多) [返回列表]
lst = ["周杰伦","蔡徐坤","易烊千玺","神秘boy"]
res = random.sample(lst,2)
print(res)

#shuffle() 随机打乱序列中的值(直接打乱原序列)
lst = ["周杰伦","蔡徐坤","易烊千玺","神秘boy"]
random.shuffle(lst)
print(lst)

随机验证码 4位 大小写字母数字

chr => 给ascii码返回对应的字符

'''
A~Z
a~z
0~9
'''
# A => 65
# a => 97
print(chr(65))

def yanzhengma():
strvar = ""
for i in range(4):
	# 大写字母 A-Z 65~90
	b_word = chr(  random.randrange(65,91)  )
	# 小写字母 a-z 97~122
	s_word = chr(  random.randrange(97,123) )
	# 数字 0 ~ 9
	num = str( random.randrange(10) )
	# 把可能的字符都放在列表里 , 一次抽一个
	lst = [b_word,s_word,num]
	strvar += random.choice(lst)
return strvar

res = yanzhengma()
print(res)

### 内置方法

abs 绝对值函数

val = -16
res = abs(val)
print(res)

round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数,则进一!)

"""奇进偶不进"""
val = 3.5
val = 4.5
val = 4.51
val = 4.12
val = 4.6
res = round(val)

print(res)

sum 计算一个序列得和

lst = [1,2,3,4,5]
res = sum(lst)

max 获取一个序列里边的最大值

lst = [10,100,-3,40]
res1 = max(lst)
res2 = min(lst)
print(res1,res2)

sorted 找出最小值和最大值

lst_new = sorted(lst)
min_val = lst_new[0]
max_val = lst_new[-1]
print(min_val,max_val)

min 获取一个序列里边的最小值

sorted(iterable,key=函数) max和min 同sorted用法

'''找出年龄最小的元组'''
lst = [("王振",25),("刘伟",50),("刘思敏",18)]
def func(n):
	# print(n)
	return n[-1] # 返回的值是判断参考的依据
res = min(lst,key=func)
res = max(lst,key=func)
print(res)

dic = {"云超":100,"朱胜":200,"杨浩":-300}
def func(n):
	# print(n)
	# print(dic[n])
	return abs(dic[n])
res = max(dic,key=func)
print(res)

pow 计算某个数值的x次方

res = pow(2,3) # 8

第三个参数的用作是取余

res = pow(2,3,5) #  3
print(res)

range 产生指定范围数据的可迭代对象

for i in range(1,11,3): # 1 4 7 10
	print(i)
for i in range(10,0,-3):#`10 7 4 1
	print(i)

bin 将10进制数据转化为二进制

res = bin(5) # 0b10
print(res)

oct 将10进制数据转化为八进制

res = oct(8) # 01234567  8 => 7+1 =>0o10
print(res)

hex 将10进制数据转化为16进制

res = hex(255)
res = hex(16) # 0x10
print(res)

chr 将ASCII编码转换为字符

"""大小字母相差的ascii编码是32.小写字母a => 97"""
res = chr(65)
print(res)

ord 将字符转换为ASCII编码

res = ord("A")
print(res)

谨慎使用eval 和 exec 尤其是在和用户交互数据时候注意;

eval 将字符串当作python代码执行

strvar = "print(111)"

strvar = “a = 10” eval执行不了

print(strvar)
eval(strvar)

exec 将字符串当作python代码执行(功能更强大)

strvar = "a = 10"
strvar = """
for i in range(10):
	print(i)

“”"
exec(strvar)

print(a)

repr 不转义字符输出字符串

strvar = "E:\nython30\tay15"
print(repr(strvar))

input 接受输入字符串

 username = input("你好,你妈贵姓~")
print(username)

hash 生成哈希值

两个相同的字符串,无论哈希多少次,都会产生相同的唯一值"""

(1) 让密码加密 hashlib
(2) 文件的校验 比较文件内容


strvar1 = "abcccc"
strvar2 = "abcccc"
print(hash(strvar1))
print(hash(strvar2))

with open("ceshi1.txt",mode="r",encoding="utf-8") as fp:
	strvar = fp.read()
	res1 = hash(strvar)

with open("ceshi2.txt",mode="r",encoding="utf-8") as fp:
	strvar = fp.read()
	res2 = hash(strvar)

print(res1,res2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值