python基础-5 冒泡排序、递归
上节总结
一、上节内容补充回顾
1、lambda
func = lambda x,y: 9+x
参数: x,y
函数体:9+x ==》 return 9+x
func: 函数名 def func(x,y):
return x + 9
def func(x,y):
return x + 9 func = lambda x,y: 9+x 扩展:函数名可以当做参数传递
函数名() ==》 执行函数
函数名 ==》 代指函数 2、内置
xxx
3、open文件操作
open()
1、文件路径
2、模式
基本操作:
r,只读
w,只写(先清空)
x,不存在,创建,存在,报错: 只写
a,追加,只写,不可读
二进制
rb
wb
xb
ab
+
r+,读写:
读,0开始读取
写,先读了,往最后追加。
先读,最后追加
主动seek,写从当前指针向后写
==》 w+,读写
x+,读写
a+,读写
读,最后位置读取
写,
最后追加
主动seek,还是最后追加 r+ 最常用
3、文件操作 truncate,截取前面
read
read(1) :无b,字符,取决于打开的方式
read(1) :有b,字节,
write
str :无b,字符串
bytes :有b,字节 readline
只读取一行 readlines:
[“第一行”, "第二行"] xrealines: 2.7
for line in f.xrealines():
line f = open()
for i in f:
print(i) flush
强行刷入硬盘 close tell() 获取指针位置
seek() 跳转到某个位置 4、 whth open(xx) as f:
print 5、with open(xx) as f1 ,open(xx) as f2: 查看总结内容
函数作为参数传入另一个函数
# 2 函数参数
def f1():
return "F1"
def f2(arg):
arg()
return 'F2' # 变量 x =123
# 函数名 f1 = 对应def f1 内存地址
# 函数名 f2 = 对应def f2 内存地址
# print(f1) # 执行f2函数,f1当传参
f2(f1)
f1,代指这个函数名,没有执行。这时f1就是一个变量,可以当作参数传入另外一个函数
f1(),去执行这个函数。
filter 方法的实现
def myfilter(func, args):
#func,函数名,func=func_t
result = []
for i in args:
if func(i):#执行接收的函数,并获取返回值
result.append(i)
return result def func_t(x):
if x > 22:
return True
else:
return False r = myfilter(func_t, [11, 22, 33, 44, 55])
print(r) C:\Python35\python3.exe E:/py/55/learn-python/oldboy/5/myFilter.py
[33, 44, 55]
map方法实现
def mymap(func, args):
# func=>f1函数
# args=>[11,22,33,44,55]
result = []
for i in args:
result.append(func(i)) # func(11)=》f1(11)
return result def f1(x):
return x + 100 r = mymap(f1, [11, 22, 33, 44, 55])
print(r) C:\Python35\python3.exe E:/py/55/learn-python/oldboy/5/my_map.py
[111, 122, 133, 144, 155]
1、冒泡排序
#互换两个参数值
a1 = 123
a2 = 456 #引入temp中间值
# # temp = a1
# # a1 = a2
# # a2 = temp
# # print(a1, a2) #不引入temp
a1 = a1 + a2 #先将两个数的和赋值给其中一个
a2 = a1 - a2 #用和减去自己,就是新的值,a1
a1 = a1 - a2 #在用和减去新的另外一个数,就变换了。a2
print(a1, a2)

需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序
思路:相邻两个值进行比较,将较大的值放在右侧,依次比较!
li = [13, 22, 6, 99, 11] for m in range(4): # 等价于 #for m in range(len(li)-1):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp 第一步
li = [13, 22, 6, 99, 11] for m in range(4): # 等价于 #for m in range(len(li)-1):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp for m in range(3): # 等价于 #for m in range(len(li)-2):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp for m in range(2): # 等价于 #for m in range(len(li)-3):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp for m in range(1): # 等价于 #for m in range(len(li)-4):
if li[m]> li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp
print li 第二步
li = [13, 22, 6, 99, 11] for i in range(1,5):
for m in range(len(li)-i):
if li[m] > li[m+1]:
temp = li[m+1]
li[m+1] = li[m]
li[m] = temp 第三步
#冒泡排序练习
li = [1, 22, 11, 55, 23, 33, 12, 56, 4, 7]
le = len(li)
while le > 0:
for i in range(le - 1):
if li[i] > li[i + 1]:
li[i] = li[i] + li[i + 1]
li[i + 1] = li[i] - li[i + 1]
li[i] = li[i] - li[i + 1]
le -= 1
print(li)
2、递归
利用函数编写如下数列:
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368
def func(arg1,arg2):
if arg1 == 0:
print arg1, arg2
arg3 = arg1 + arg2
print arg3
func(arg2, arg3) func(0,1)

递归中的return返回值
函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。
以上要点中,比较重要有参数和返回值:
如下 n5 返回值 返回给其调用者 再返回给上一层调用者。 如果 n4 n3 n2 n1 其中一个不加return 则返回none
def n5():
return 5
def n4():
return n5()
def n3():
return n4()
def n2():
return n3()
def n1():
return n2() ret1 = n1()
print(ret1)
总结: return 函数()
先调用函数,然后在return将获取的返回这返回给调用这个函数的变量
函数返回值

递归返回值图理解、
同上图类似,只不过函数名为同一个了

练习 利用递归 打印 斐波那契数列第10个数
def func(d, a1, a2):
print(a1,a2)
if d == 10:
return a1
a3 = a1 + a2
return func(d+1, a2, a3) ret = func(1, 0, 1)
print(ret)
python基础-5 冒泡排序、递归的更多相关文章
- Python基础(函数-递归)
本章内容: 深浅拷贝 函数(全局与局部变量) 内置函数 文件处理 三元运算 lambda 表达式 递归(斐波那契数列) 冒泡排序 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝 ...
- python基础4之递归、lambda、深浅copy
内容概要: 一.递归 二.匿名函数 三.关于python中的深浅拷贝与赋值 一.递归 递归就是函数本身调用自己,直到满足指定条件之后一层层退出函数 递归特性: 必须有一个明确的结束条件 每次进入更深一 ...
- python 基础篇 16 递归和二分数查找与编码补充回顾
编码回顾补充: 回顾编码问题: 编码相当于密码本,关系到二进制与看懂的文字的的对应关系. 最早期的密码本: ascii码:只包含英文字母,数字,特殊字符. ...
- Python基础之初识递归
初识递归 递归的定义: 在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归. 递归的最大深度--997 递归函数不受外力的阻止会一直执行下去,python为了杜绝此类现象,强制将递归层 ...
- Python开发【第一篇】Python基础之函数递归
函数递归 递归的本质: 就是一个函数调用另外一个函数. def d(): return '123' def c(): r = d() return r def b(): r = c() return ...
- python基础——异常处理、递归
异常处理 while True: try: num1 = int(input('num1:')) num2 = int(input('num2:')) result = num1 + num2 exc ...
- Day3 - Python基础3 函数、递归、内置函数
Python之路,Day3 - Python基础3 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...
- Python基础(协程函数、内置函数、递归、模块和包)-day05
写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04 ...
- 十四. Python基础(14)--递归
十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...
随机推荐
- ascii 八进制
int main() 4 { 5 char buf[20] = {'\101','\102','\103',0}; 6 printf("%s",buf); 7 return 0; ...
- python time、datetime模块
时间的三种格式:1)时间戳 2)格式化的时间字符串 3)元组(struct_time):time.struct_time(tm_year=1970, tm_mon=5, tm_mday=23, tm_ ...
- CF1103C Johnny Solving (Codeforces Round #534 (Div. 1)) 思维+构造
题目传送门 https://codeforces.com/contest/1103/problem/C 题解 这个题还算一个有难度的不错的题目吧. 题目给出了两种回答方式: 找出一条长度 \(\geq ...
- 唤醒 App
一.Deep Link 1.什么是 Deep Link? Deep Link 是 App 的深度连接,当单击链接或编程请求调用Web URI意图时,Android系统按顺序依次尝试以下每一个操作,直到 ...
- CTF Jarvisoj Web(session.upload_progress.name php 上传进度)
Jarvisoj Web 题目地址:http://web.jarvisoj.com:32784/index.php <?php //A webshell is wait for you ini_ ...
- hihocoder 1582 : Territorial Dispute (计算几何)(2017 北京网络赛E)
题目链接 题意:给出n个点.用两种颜色来给每个点染色.问能否存在一种染色方式,使不同颜色的点不能被划分到一条直线的两侧. 题解:求个凸包(其实只考虑四个点就行.但因为有板子,所以感觉这样写更休闲一些. ...
- 事物Spring boot @Transactional
事物:dr @Override @UDS(value="fq") @Transactional public BaseResultMessage testTransactional ...
- ecshop 除去版权信息
ECSHOP 2.73彻底去版权的方法 前台部分: 1. 去掉头部TITLE “- Powered by ecshop” 后者打开includes/lib_main.php $page_title = ...
- 网络抓包wireshark2
1.基本使用详见网络抓包wireshark,第一篇 2.中文版 2.1打开首页 2.2选择网卡 菜单栏->捕获->选项->输入(选择当前计算机网络ip对于的接口)->点击开始 ...
- java导入ldif文件
网上导入ldif文件的方式都是基于命令,或者相应工具如LDAP Browser \Editor v2.8.2. 但用java去实现这样的功能好像网上很少,于是我参照相应的开源代码并整理了一下,亲自测试 ...