递归,字典,集合,文件

递归:
递归就是函数自己调用自己
python默认递归层数是100, 通过导入模块import sys,
sys.setrecursionlimit(number)来设置递归最大为number层
汉诺塔例子:
def hannoi(n, x, y, z):
    if n == 1:
        print(x, '-->', z)
    else:
        hannoi(n - 1, x, z, y)# 将前n - 1个盘子从x移动到y上
        print(x, '-->', z) #将最底下的最后一个盘子从x移动到z上
        hannoi(n - 1, y, x, z)#将y上的n-1个盘子移动到z上
number = int(input("请输入汉诺塔的层数:"))
hannoi(number, 'X', 'Y', 'Z')


字典:
回顾:中括号表示列表,小括号或者逗号表示元组, 大括号表示字典
字典不是序列类型而是映射类型
字典的创建:
dict1 = {"李宁":"一切皆有可能", "耐克":"just do it", "阿迪达斯":"Impossible is nothing"}
dict2 = dict((("F", 70), ("i", 105), ("s", 115), ("h", 104), ("C", 67)))
dict3 = dict(李宁="一切皆有可能", 耐克="just do it") 这种创建方式会自动排序
dict3["李宁"] = "just do it"  这种方法如果dict3字典里面没有“李宁”这个键,
就会新建一个键和值, 如果有就改变对应的值
字典的索引:
dict1["李宁"]
fromkeys()方法:
dict1.fromkeys(range(32), "赞美")
键keys(), 值values(), 键和值items()
get()方法 试图访问没有的键不会报错
clear() 方法把字典清空
copy() 方法在这里是浅拷贝
id(sub)方法可以查看sub的地址
pop(number)  方法弹出键number和对应的值
popitem() 随机弹出一个项(键和值)
update(sub) 更新字典, 例如:dict1.update(dict2)用dict2去跟新dict1 (是添加进去)


集合(set):
集合里面没有重复的数据,重复的数据会自动删除, 集合不支持索引
注意:set里面的数据是无序的
集合的创建:
直接创建:set1 = {1, 3, 2, 5}
使用工厂函数创建: set1 = set{sub}   这里的sub是序列, 即str(), list(),
tuple()...
集合中的方法:
add()  添加数据
remove()   删除数据
不可变集合 (frozenset):不能添加和删除数据


文件:
文件的打开模式:
‘r’ 以只读方式打开文件(默认)
‘w’ 以写入方式打开文件, 会覆盖已存在的文件
‘x’ 如果文件已存在, 使用此模式打开文件将引发异常
‘a’ 以写入方式打开文件,如果文件存在,则在末尾追加写入
‘b’ 以二进制模式打开文件
‘t’ 以文本模式打开文件(默认)
‘+’ 可读写模式(可添加到其他模式中使用)
‘U’ 通用换行符支持
文件对象方法:
f.close() 关闭文件
f.read(size = -1) 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
f.readline() 以写入模式打开,如果文件存在,则在末尾追加写入
f.write(str) 将字符串str写入文件
f.writeline(seq) 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
f.seek(offset, from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.tell() 返回当前在文件中的位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值