**
22.递归(分治思想)
**
例:实现累乘
def fun1(num):
if num == 1:
return 1
else:
return num*fun1(num- 1)
print(fun1(5))
实现斐波那契数列
汉诺塔分析:
一、 如果个数为1,则直接移动
二、 数量大于1
- 将n-1个从x移到y上
- 将第n个从x移到z上
- 将n-1个从y移到z上
代码实现:
def hannuota(num,x,y,z):
global temp
temp += 1
if num == 1:
print(x+"->"+z)
else:
#将n-1个从x移到y上
hannuota(num-1,x,z,y)
#将第n个从x移到z上
print(x+"->"+z)
#将n-1个从y移到z上
hannuota(num-1,y,x,z)
temp = 0
hannuota(3,'x','y','z')
print(temp)
**
23.字典
**
a = { } 或a = dict()
或:a = dict( ( (1,a),(2,b),(3,c) ) ) )
或:a = dict( 哈哈 = ‘哈’,略略 = ‘略’,嘻嘻 = ‘嘻’ ) 注意键不能加引号,相当于变量
通过a【‘哈哈’】= ‘开学’ 这种形式修改,通过 a [‘’酷酷‘’] = ‘酷’ 可以添加新项
1.fromkeys( x[,y] ) –- 新建一个字典
将值y赋给键x
2.keys()–输出字典的键
3.values() — 输出值
4.items()—输出项
5.gets(x[,y])-- 查找是否存在
X为键,若键存在则输出键对应的值,否则不输出(none,若设置了y则输出y)
6.clear()—清空字典
7.copy() — 复制字典
8.setdefuault(x,y)—添加键为x,值为y的项
9.字典1.update(字典2)—将2的项覆盖到1
**
24.集合
**
注意:
- 集合内部元素没有顺序,不能用下标读取
- 可以用for输出和用in & not in
- 可以用list(set(【1,2,3,0】))输出,但形成的列表不是按照集合的顺序排列,而是排过序
- 集合会自动去除重复元素
1.创建
a = {1,2,3} ----里面直接写值,不能写键
a = set( ) —可在里面加列表,如set(【1,2,3】)
2.a.add()—添加
3.a.remove() —删除
4.frozenset()—固定集合,不可更改
25.文件
1.读取类型
2.语法
f = open(“路径”,“读取方式”) 或 with open(“路径”,“读取方式”)as f
路径:”C:\TEXT.txt” 或 “C:/TEXT.txt”
3.方法
4.可以用for 将文件按行读取出来
for lines in file:
print(lines)