博主昵称:摆烂阳
博主主页跳转链接
博主研究方向:web渗透测试 、python编程
博主寄语:希望本篇文章能给大家带来帮助,有不足的地方,希望友友们给予指导
推荐《牛客网》——找工作神器
|笔试题库
|>面试经验
|实习经验内推
|求职就业
|
点击链接开始学习
这次给大家推荐个宝藏网站牛客网
点击跳转到刷题页面
牛客网的优点在于纯中文网站,不用担心各种术语,对于每一个题目,都给出了顶层的框图以及接口定义,也给出题解思路,可以说对初学者极其友好.而且,牛客网的编程界面,设计的也很舒服,左右对称式,读题的时候非常舒服,如果没读懂题目,可以看题解,牛客网的题解都是每道题配套的,而不是向其他刷题网站的题解只给你解释这个知识点。
在牛客上刷题的时候,有3个部分可以重点刷一下:
一个是公司真题页面,这里面的试卷都是企业提供的真实校招笔试题,可以选择公司和岗位方向,真实体验题目难易程度;
一个是在线编程页面,不仅有剑指offer,leetcode等经典编程题,还有历年校招编程真题汇总,多在牛客上练习,也是为以后的校招笔试做准备,因为越来越多的公司都选择用牛客的笔试系统了,一定要熟悉牛客的oj,为校招提前做准备;
还有一个专项练习部分,可以根据知识点选择具体的题目进行练习,对于复习基础知识部分是非常有帮助的。
大家刚开始刷牛客题的时候,可以先去找简单的题目去刷,缓慢的过渡到别的难度。
刷题一定要坚持,不要半途而废。牛客上面的题目还是蛮不错的,大家加油!
点击链接开始刷题学习
递归:如果一个函数内部调用了自己那么就叫递归。
def f():
print("你好,我叫aa")
f()
f()
1.如果要定义递归函数,必须要有出口,因为无限递归会导致内存溢出
2.设计一个出口,不断的向出口接近
def f(x):
print("你好,我叫aa")
if x == 10:
return # 结束函数
f(x + 1)
f(1)
案例:求987654321 的结果,就是9的阶乘
n! = n * (n-1)!
9的阶乘 = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
9的阶乘 = 9 * 8!
8的阶乘 = 8 * 7!
7的阶乘 = 7 * 6!
6的阶乘 = 6 * 5!
5的阶乘 = 5 * 4!
4的阶乘 = 4 * 3!
3的阶乘 = 3 * 2!
2的阶乘 = 2 * 1!
f(x) = x * f(x-1) # 阶乘公式
def f(x):
if x == 1:
return 1
return x * f(x - 1)
print(f(5))
f(5) = 5 * f(4)
5 * 4 * f(3)
5 * 4 * 3 * f(2)
5 * 4 * 3 * 2 * f(1) # f(1) = 1
在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。 在调用生成器运行的过程中,每次遇到yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next () 方法时从当前位置继续运行。
生成器:相当于存储一种厨师
# s = [x for x in range(10000000)]
f = (x for x in range(10))
print(next(f)) # 输出f的第1个值
print(next(f)) # 输出f的第2个值
print(next(f)) # 输出f的第3个值
....
一次性做出所有菜
for i in f:
print(i)
def f():
print("f1")
yield 1 # 挂起
print("f2")
yield 2 # 挂起
def g():
print("g1")
yield 1
print("g2")
yield 2
可以使用生成器 多个任务 交叉执行
g1 = f()
g2 = g()
next(g1)
next(g2)
next(g1)
next(g2)
# f1 g1 f2 g2
生成器的两种创建方式
1.(i for i in range(1,10))
2.yiled 关键字实现
def f():
print("f1")
yield 1 # 挂起
print("f2")
yield 2 # 挂起
print("f3")
yield 3
g = f()
迭代遍历的本质:
不断通过 i = next(g)
for i in g:
print(i)
for i in 可迭代对象
从现象来说,只要是可以for循环的都是可迭代对象
从本质来说,是内置有iter方法的是可迭代对象
能for循环是因为有一个__iter__()
方法
可迭代对象:对象拥有iter方法的
在Python中,迭代器是遵循迭代协议的对象。 使用iter ()从任何序列对象中得到迭代器(如
list, tuple, dictionary, set
等)。
生成器就是迭代器
迭代器需要满足两个条件:
1.有iter方法
2.有next方法
l = [1,2,3,4]
l.__iter__()
iter(l) # 本质上就是 l.__iter__()
iter : 返回一个迭代器对象
for循环内部本质3个事情
1.调用可迭代对象的iter方法返回一个迭代器
2.不断调用迭代器的next方法
3.处理异常
学习完本章节内容后,最好能够结合题目巩固相关知识。学习的步骤就是学习基础知识
+不断的刷题
点击下方链接进入牛客刷题
点击跳转到刷题页面
本文是本人以前笔记,博主主页跳转链接
如果有哪里不对的话欢迎各位大佬指出问题,本人也是初学python,希望可以和各位朋友一起学习进步。点击跳转到博主python专栏:
如果有喜欢web安全的朋友,请在web渗透专栏中进行查看
点击跳转到博主web渗透专栏