【十四】Python全栈之路--内置_数学_随机模块

1. linux中pycharm安装

2. python内置函数

# ### python的内置函数
# abs    绝对值函数
print(abs(-1))
print(abs(100))

# round  四舍五入
"""奇进偶不进 n.5的情况特定发生;"""
res = round(3.87)
res = round(4.51)
# res = round(2.5)
# res = round(3.5)
res = round(6.51)
print(res)

# sum    计算一个序列得和
lst = [1,2,3,4,34]
res  = sum(lst)
print(res)

total = 0
for i in lst:
	total += i
print(total)

# max    获取一个序列里边的最大值
# min    获取一个序列里边的最小值
lst = (-100,1,2,3,4,34)
res = max(lst)
res = min(lst)
print(res)

# max / min 的高阶函数的使用方式
tup = (   ("赵万里",100)  , ("赵沈阳",101) , ("孟凡伟",99) )
def func(n):
	# print(n)
	# 按照年龄找到最小值元组
	return n[-1]
	
res = min(tup,key=func)
print(res)
res = max(tup,key=func)
print(res)


dic = {"赵万里":100,"赵沈阳":200,"孟凡伟":-5000}
def func(n):
	# 如果是字典,默认传递的是键
	# print(dic[n])
	return abs(dic[n])
res = min(dic,key=func)
res = max(dic,key=func)
print(res)



# pow    计算某个数值的x次方
"""如果是三个参数,前两个运算的结果和第三个参数取余"""
print(pow(2,3))
print(pow(2,3,7))
print(pow(2,3,4))
print(pow(2,3,5))

print("<======>")
# range  产生指定范围数据的可迭代对象
# 一个参数
for i in range(3): # 0 1 2
	print(i)
	
# 二个参数
for i in range(3, 8): # 3 4 5 6 7 
	print(i)

# 三个参数
# 正向操作
for i in range(1,9,5): # 1 6 留头舍尾
	print(i)
	
# 逆向操作
for i in range(9,1,-3): # 9 6 3 
	print(i)
	

# bin    将10进制数据转化为二进制
print(bin(8))
# oct    将10进制数据转化为八进制
print(oct(8))
# hex    将10进制数据转化为16进制
print(hex(16))
	
	
# chr    将ASCII编码转换为字符
print(chr(65))
# ord    将字符转换为ASCII编码
print(ord("A"))
	
	
# ### eval和exec在和第三方用户交互时候,谨慎使用;
# eval   将字符串当作python代码执行
strvar = "print(123)"
strvar = "int(15)"
print(strvar)
res = eval(strvar)
print(res,type(res))

# strvar = "a=3" error eval的局限性 不能创建变量
# eval(strvar)

# exec   将字符串当作python代码执行(功能更强大)
strvar = "a=3" 
exec(strvar)
print(a)

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


# repr   不转义字符输出字符串
strvar = "D:\nython32_gx\tay14"
res = repr(strvar)
print(res)

# input  接受输入字符串
"""
res = input("输入内容")
print(res , type(res))
"""

# hash   生成哈希值
# 文件校验
with open("ceshi1.py",mode="r",encoding="utf-8") as fp1, open("ceshi2.py",mode="r",encoding="utf-8") as fp2:
	res1 = hash(fp1.read())
	res2 = hash(fp2.read())
	if res1 == res2:
		print("文件校验成功")
	else:
		print("文件校验失败")

3. math_random模块

3.1 math模块

# ### 数学模块
import math

#ceil()  向上取整操作 (对比内置round) ***
res = math.ceil(3.01)
res = math.ceil(-3.45)
print(res)

#floor() 向下取整操作 (对比内置round) ***
res = math.floor(3.99)
res = math.floor(-3.99)
print(res)

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

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

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

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

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

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

#圆周率常数 pi ***
print(math.pi)

3.2 random模块

# ### 随机模块
import random

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

#randrange() 随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值) ***
# 一个参数
res = random.randrange(3)
print(res) # 0 1 2 

# 二个参数
res = random.randrange(3,6) # 3 4 5
print(res)

# 三个参数
res = random.randrange(1,9,4) # 1 5 
print(res)

res = random.randrange(7,3,-1) # 7 6 5 4
print(res)

#randint()   随机产生指定范围内的随机整数 (了解)
res = random.randint(1,3) # 1 2 3
# res = random.randint(3,5,1)  error
print(res)

#uniform() 获取指定范围内的随机小数(左闭右开)  ***
res = random.uniform(0,2) # 0<= x < 2
print(res)
res = random.uniform(2,0)
print(res)

"""
原码解析:
a = 2 , b = 0
return 2 + (0-2) * (0<=x<1)
x = 0 return 2 取到
x = 1 return 0 取不到
0 < x <= 2
return a + (b-a) * self.random()
"""

#choice()  随机获取序列中的值(多选一)  **
lst = ["孙凯喜","王永飞","于朝志","须臾间","含税小"]
res = random.choice(lst)
print(res)

def mychoice(lst):
	index_num = random.randrange(len(lst))
	return lst[index_num]
print(mychoice(lst))

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


#sample()  随机获取序列中的值(多选多) [返回列表] **
tup = ("孙凯喜","王永飞","于朝志","须臾间","含税小")
res = random.sample(tup,3)
print(res)

#shuffle() 随机打乱序列中的值(直接打乱原序列) **
lst = ["孙凯喜","王永飞","于朝志","须臾间","含税小"]
random.shuffle(lst)
print(lst)


# ### 验证码效果
# 验证码里面有大写字母 65 ~ 90
# 小写字母 97 ~ 122
# 数字     0 ~ 9
def yanzhengma():
	strvar = ""
	for i in range(4):
		# 大写字母
		b_c = chr(random.randrange(65,91))
		# 小写字母
		s_c = chr(random.randrange(97,123))
		# 数字
		num = str(random.randrange(10))
		# 把可能出现的数据都放到列表中,让系统抽一个
		lst = [b_c,s_c,num]
		# 抽完之后累计拼接在字符串strvar当中
		strvar += random.choice(lst)
	# 循环四次拼接终止,返回随机码
	return strvar
	
res = yanzhengma()
print(res)

4. 面试题

# 1.结果
def extendList(val,list=[]):
    list.append(val)
    return list
list1 = extendList(10)   
print(list1)  
list2 = extendList(123 , []) 
print(list2)  
list3 = extendList('a')   
print(list3) 

# 2.res是多少?
def func():
	return [lambda x : i*x    for i in range(4)]
# res = [m(2) for m in func()]

# 3.打印结果是多少?
def add(a,b):                     
    return a + b
def test():                       
    for r in range(4): 
        yield r
g=test() 
for n in [2,10]:
	g=(add(n,i) for i in g)
print(list(g))
	
# 4.如何判断输入的数是质数( 1.通用方法完成 2.使用for .. else 完成 )

答案:

# 1.结果
""" 默认参数身上的默认值会提前在内存中驻留 , 方便找到默认值 """
def extendList(val,list=[]):
    list.append(val)
    return list
list1 = extendList(10)   
print(list1)  # [10]
list2 = extendList(123 , []) 
print(list2)  # [123]
list3 = extendList('a')   
print(list3)  # [10,a]

# 2.res是多少?
def func():
	return [lambda x : i*x    for i in range(4)]
res = [m(2) for m in func()]

# [    lambda x : i*x    for i in range(4)      ]
res = [     lambda x : i*x        for i in range(4)      ]

def func():
	lst = []
	for i in range(4):
		def niming(x): # x=2 i=3
			return i*x
		lst.append(i*x)
	return lst
lst = func()
print(lst)
[

<function func.<locals>.niming at 0x000001D6761EB8C8>,  
<function func.<locals>.niming at 0x000001D6761EB950>, 
<function func.<locals>.niming at 0x000001D6761EB9D8>, 
<function func.<locals>.niming at 0x000001D6761EBA60>

]

res = [m(2) for m in lst] #  0 2 4 6 
res = [i for i in range(34)]
res = [ 1 for i in range(4) ]
# 为什么i是3
"""
for i in range(4):
	print(i)

print(i)
print(i)
print(i)
print(i)
print(i)
print(i)
"""

"""
1.判断返回值到底是推导式还是匿名函数.
2.定义函数时,里面的代码一句都不走
3.只有在调用函数时,才会执行其中的代码块,此刻去找寻当时的i , 已经通过循环遍历到3 了.
4.由于当时变量i与内函数发生绑定,延长该变量的生命周期,所以内存没有释放,仍然可以找到
5.在列表中是4个函数,通过传递参数x = 2 , i = 3 return 6  , 返回 4个 6
"""


# 3.打印结果是多少?
def add(a,b):                     
    return a + b
def test():                       
    for r in range(4): 
        yield r
g=test() 
for n in [2,10]:
	g=(add(n,i) for i in g)
print(n)
print(list(g))
	
for n in [2,10]:
	print(n)
	
	
print(n)
print(n)
print(n)
print(n)
	
# 4.如何判断输入的数是质数( 1.通用方法完成 2.使用for .. else 完成 )
"""大于1的自然数,除了1和他本身,没有任何因数"""
"""如果循环被意外终止,else这个分支不执行"""
n = 13
if n > 1:
	for i in range(2,n):
		if n % i == 0:
			print("不是质数")
			break			
	else:
		print("是质数")		
else:
	print("不是质数")


n = 13
sign = False
if n > 1:
	for i in range(2,n):
		if n % i == 0 :
			sign = True
			break			
	if sign:
		print("不是质数")
	else:
		print("是质数")
		
else:
	print("不是质数")



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值