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("不是质数")