8. 递归

递归

递归的特点:
1. 函数内部自己调用自己
2. 必须要有出口

递归案例

def sum_numbers(num):
    # 2. 出口
    if num == 1:   #  将 if 则两行注释后则会提示 超出最大出口的错误
        return 1
    # 1. 函数内部自己调用自己
    return num + sum_numbers(num-1)

result = sum_numbers(3)
print(result)

# 没有出口,则会报错, 错误提示是超出了最大出口


1. lambda 匿名函数 作用: 简化函数代码

# lambda 匿名函数
# 1.  不带参数
test = lambda: 100

print(test) # 输出 test 的内存地址

print(test()) # 输出值

# 2.  带参数
test = lambda a, b: a + b

print(test) # 输出 test 的内存地址

print(test(2, 3)) # 输出值

2. lambda 参数形式

# 1. 无参数
fn1 = lambda: 100

print(fn1())

# 2. 一个参数
fn2 = lambda a: a

print(fn2('hello world'))

# 3. 默认参数 (缺省参数)
fn3 = lambda a, b, c=100: a + b + c

print(fn3(10, 20))
print(fn3(10, 20, 200))

# 4. 可变参数:*args  返回的是 元组
fn4 = lambda *args: args

print(fn4(10, 20))

# 5. 可变参数:**kwargs 返回的是  字典
fn5 = lambda **kwargs: kwargs

print(fn5(name='python', age=18))

# 6. 带判断的lambda
fn6 = lambda a, b: a if a > b else b

print(fn6(1000, 500))

3. abs() 和 round() 和 高阶函数

# abs(): 求绝对值
print(abs(-10))

# round(): 四舍五入
print(round(1.2))
print(round(1.9))
# 普通函数
def add_num(a, b):
    return abs(a) + abs(b)

result = add_num(-1, -2)
print(result)

# 高阶函数
def sum_num(a, b, f):
    return f(a) + f(b)

result1 = sum_num(1.2, 3.6, round)
print(result1)

result2 = sum_num(-1, -1, abs)
print(result2)
# 高阶函数 map()使用

list1 = [1, 2, 3, 4, 5]

def func(x):
    return x ** 2

result = map(func, list1)

print(result) # 返回 内存地址

print(list(result)) # 注意:list表示转化为列表数据  [1, 4, 9, 16, 25]
# 高阶函数 reduce()使用  reduce作用: 将数据累加
import functools

list2 = [1, 2, 3, 4, 5]

def func2(a, b):
    return a + b

result2 = functools.reduce(func2, list2)
print(result2) # 15
# 高阶函数 filter()使用  filter作用: 过滤掉不需要的数据, 返回一个新的 filter 对象
list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def func3(x):
    return x % 2 == 0

result3 = filter(func3, list3)

print(result3)
print(list(result3)) # list 将数据转化为 列表  [2, 4, 6, 8, 10]

4. 文件操作

# 1. 打开 open()
f = open('test.txt', 'w')

# 2. 读写操作 write() read()
f.write('创建一个test.txt新文件zz')

# 3. 关闭 close()
f.close()
文件访问模式

# r 只读   如果文件不存在,报错  不支持写入操作,表示只读

# w 只写  如果文件不存在,新建文件   执行写入,会覆盖原有内容

# a 追加  如果文件不存在,新建文件  在原有内容基础上,追加新内容

# 访问模式可以省略, 省略后默认为 r 只读

\n 换行  会占用一个字符



# 1. 打开 open()
f = open('test.txt', 'a+') # a 表示追加 指针在最后

# seek() 改变指针的位置
f.seek(0, 0) # 或者 f.seek(0)

# 2. 读写操作 write() read()
con = f.read()
print(con)

# 3. 关闭 close()
f.close()

5. python 代码文件备份

# 1. 需要备份 的文件  sound.txt.mp3
old_name = input('请输入需要备份的文件名:')

print(old_name)

# 2. rfind 获取 . 的下标 (获取 .的下标)
index = old_name.rfind('.')

print(index)

# 3. 截取字符串 [开始:结束:步长]
print(old_name[:index]) # 文件名
print(old_name[index:]) # 后缀

if index > 0:
    postfix = old_name[index:]

# 4. 将 文件名转化为 文件名 + [备份] +后缀
new_name = old_name[:index] + '[备份]' + postfix

print(new_name)

# 备份文件
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')

while True:
    con = old_f.read(1024)

    # 判断字符写入是否完毕,结束就终止循环
    if len(con) == 0:
        break

    # 将 文件内容写入到 新文件中
    new_f.write(con)

# 关闭文件
old_f.close()
new_f.close()

6. turtle 库 海龟绘图





posted @ 2022-03-10 09:19  伴你如风  阅读(23)  评论(0编辑  收藏  举报