2023.4.28
努力学习python,想为以后可以有一份额外收入,如果有大神可以指点一下,我将不胜感激
如果有大神想以后拥有一个合作伙伴进行交流,我会尽力赶上您的脚步!
1. 牛刀小试,简单小算法
'''题目:给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第i位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。
客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。
例如
输入:accounts = [[1,2,3],[3,2,1]]
输出:6
解释:
第 1 位客户的资产总量 = 1 + 2 + 3 = 6
第 2 位客户的资产总量 = 3 + 2 + 1 = 6
两位客户都是最富有的,资产总量都是 6 ,所以返回 6
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/richest-customer-wealth
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。'''
#函数写法
class Solution(object):
def maximumWealth(self, accounts):
list1 = [] #该空列表要放在外面,否则会循环
for i in range(len(accounts)): #4-7行计算各元素和
sum = 0 #首先根据总长度循环
for n in range(len(accounts[i])): #再根据元素长度循环,并拿出其中值相加
sum += accounts[i][n]
list1.append(sum) #将各个元素进行加入列表
return max(list1) #使用函数输出最大
#初学者,代码比较繁琐
#非函数写法
accounts = [[1,2,2],[3,2,1]]
list1 = []
for i in range(len(accounts)):
sum_1 = 0
for n in range(len(accounts[i])):
sum_1 += accounts[i][n]
list1.append(sum_1)
print(max(list1))
2.牛刀小试,简单小算法
'''题目:
给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:
answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
answer[i] == "Fizz" 如果 i 是 3 的倍数。
answer[i] == "Buzz" 如果 i 是 5 的倍数。
answer[i] == i (以字符串形式)如果上述条件全不满足。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/fizz-buzz
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。'''
#函数解法
class Solution(object):
def fizzBuzz(self, n):
list1 = []
for i in range(1, n + 1):
if i % 5 == 0 and i % 3 == 0:
i = "FizzBuzz"
elif i % 5 == 0:
i = "Buzz"
elif i % 3 == 0:
i = "Fizz"
else:
i = '{}'.format(i)
list1.append(i)
return list1
#非函数做法
list1 = []
n = 15
for i in range(1,n+1):
if i % 3 == 0 and i % 5 == 0:
i = 'FizzBuzz'
elif i % 5 == 0:
i = "Buzz"
elif i % 3 == 0:
i = 'Fizz'
else:
i = "{}".format(i)
list1.append(i)
print(list1)
3.1闭包函数 举例1:
def func(a,b):
c = 10
def inner_func():
s = a + b + c
print('相加结果是:',s)
return inner_func()
ifunc = func(6,9)
ifunc1 = func(2,8)
3.2 闭包函数 举例 计数器:
def generate_count():
container = [0] #可变列表
def add_one():
container[0] = container[0] + 1
print('当前是第{}次访问'.format(container[0]))
return add_one #闭包
counter = generate_count()
counter() #第一次访问
counter()
counter()
#内部函数记录访问值,每调用一次增加一次访问,将内部函数可以当作为计数器
4. 装饰器
#定义一个装饰器 decorate(装饰) wrapper(包装)
def decorate(func): #装饰器传参
a = 100
print('wrapper外层打印测试')
def wrapper():
func()
print('---------->刷漆')
print('---------->铺地板',a)
print('wrapper加载完成....')
return wrapper
#使用装饰器 在装饰的上层,添加@装饰器函数
@decorate #如果不调用,默认做了任务
def house(): #对下面这个房子进行装修,如何使用装饰器呢?
print('我是毛坯房....')
#不改变原函数的情况下,对函数进行装饰,丰富'''
5. 登录校验 装饰器 案例
import time
def decorate(func): #装饰器
def wrapper():
print('正在校验中....')
time.sleep(2)
print('校验完毕....')
#调用原函数
func()
return wrapper
@decorate
def f1(): #此时的f1就是wrapper
print('--------f1--------')
f1()
def f2(name): #在f2里面增加参数
print('--------f2--------',name)
f2()
def f3(students):
for stu in students:
print(stu)
f3()
6. 三层装饰器 的 例子
def outer(a): #第一层,负责接收参数
def decorate(func): #第二层:负责接收函数的
def wrapper(*args,**kwargs): #第三层:负责接收函数的
func(*args)
print('--->铺地砖{}块'.format(a))
return wrapper #返回出来第三层
return decorate #返回出来第二层
@outer(a = 10)
def house(time):
print('我{}拿到了房子钥匙'.format(time))
house(20)
7.使用装饰器写 登录支付 函数 案例
#使用装饰器写一个登录函数
import time
islogin = False
#定义一个装饰器,用来判断是否登录
def login():
username = input('请输入用户名:')
password = input('请输入密码: ')
if username == 'admin' and password == '123456': #判断是否正确
return True #如果正确返回True 那么 islogin = login() 就等于 islogin = True
else:
return False
def login_required(func): #第二步,定义判断登录装饰器
def wrapper(*args,**kwargs):
global islogin
#这里需要验证登录
if islogin: #判断是否登录,默认为没有登录 , 在第三步过后,该函数发现了错误,原因是修改外部变量,需要添加global 变量
func(*args,**kwargs)
else:
#跳转到登录
print('你还没有登录呢!')
islogin = login() #在这里需要定义 用户登录函数,用来登录,进入第三步
print('结果是:',islogin)
return wrapper #记得要返回
#定义一个支付的函数,用来支付
@login_required
def pay(money): #第一步,定义付款函数
print('-------付款--------')
print('正在付款,付款金额是{}'.format(money))
print('付款中...')
time.sleep(2)
print('付款成功!')
#有了付款,但是没有判断函数,是否判断登录,需要定义装饰器用来判断是否登录
pay(1000)
pay(800)
8. 匿名函数举例
#匿名函数
#普通函数举例
def add(a,b):
s = a + b
return s
result = add(1,2)
print(result)
#改变为匿名函数
s = lambda a , b: a + b
result = s(1,2)
print(result)
s1 = lambda x , y:x * y
result = s1(2,5)
print(result)
9. 匿名函数作为参数
def func(x,y,func):
print(x,y) #首先对x,y传参
print(func) #使用匿名函数传参,无值
s = func(x,y) #正确的调用匿名函数方式
print(s) #输出为3
#调用func
func(1,2,lambda a,b:a + b)
#列表,字典,匿名函数的使用
list1 = [3,5,6,1,2,3]
m = max(list1)
print('列表最大的值:',m)
#如果列表是字典类型呢?那么无法正常比较,需要使用匿名函数
list2 = [{'a': 10, 'b': 20},{'a': 13, 'b': 23},{'a': 16, 'b': 25}]
m = max(list2,key = lambda x: x['a'])
print('列表最大的值:',m)
以上为总结知识点,出自哔哩哔哩千峰宋如宁老师课程