Python第五周作业

Python第五周作业

文章目录

  • Python第五周作业

1.编写一个闭包函数counter(),每次调用返回递增的整数(初始为1);;
2.解释nonlocalglobal关键字的区别,并举例说明
3.编写递归函数计算斐波那契数列的第 n 项(n≥1)
4.编写代码,使用sorted()函数对字典 {'a':3, 'b':1, 'c':2}按值升序排序,返回键的列表

1.编写一个闭包函数counter(),每次调用返回递增的整数(初始为1)

def counter():
    count = 0

    def inner():
        nonlocal count
        count += 1
        return count
    return inner

run_fn = counter()

# 设置调用5次的结果
for i in range(5):
    print(f"第{i}次调用: {run_fn()}")

2.解释nonlocalglobal关键字的区别,并举例说明

globalPython中的语句,用于在函数内部声明一个全局变量,使得函数可以访问和修改全局的变量;
nonlocal用于在闭包中声明一个外层函数中的局部变量,使得内层函数可以访问并修改该变量,但此变量并不是全局变量;
二者的主要区别在于,global是用来操作全局作用域中的变量,而nonlocal是用来操作封闭作用域中的变量;

print("--- global示例 ---")
g_v = 100
def fn_global():
    global g_v
    print(f"修改前的全局变量: {g_v}")
    g_v += 100
    print(f"修改后的全局变量: {g_v}")

fn_global()
print(f"运行完函数后的全局变量: {g_v}")

print("--- nonlocal示例 ---")

def outer():
    outer_var = "outer_local"

    def inner():
        nonlocal outer_var
        print(f"inner函数-修改前的变量: {outer_var}")
        outer_var = "inner_local"
        print(f"inner函数-修改后的变量: {outer_var}")
    print(f"运行inner函数前的变量: {outer_var}")
    inner()
    print(f"运行inner函数后的变量: {outer_var}")

outer()

3.编写递归函数计算斐波那契数列的第 n 项(n≥1)

# 方法一:
def fibonacci(n):
    if n <= 0:
        print("请输入大于等于1的整数")
        return
    elif n == 1 or n == 2:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)

print("1. 斐波那契数列的第3项:", fibonacci(3))

# 方法二:
def fibonacci_dict(n, data={}):
    if n in data:
        return data[n]
    elif n <= 0:
        print("请输入大于等于1的整数")
        return
    elif n == 1 or n == 2:
        return 1
    else:
        data[n] = fibonacci_dict(n-1, data) + fibonacci_dict(n-2, data)
        return data[n]

print("2. 斐波那契数列的第3项:", fibonacci_dict(3, data={}))

# 方法三:
def fibonacci_counts(n, a=1, b=1):
    if n < 3:
        return b
    a, b = b, a+b
    return fibonacci_counts(n-1, a, b)

print("3. 斐波那契数列的第3项:", fibonacci_counts(3))

4.编写代码,使用sorted()函数对字典 {'a': 3, 'b':1, 'c':2}按值升序排序,返回键的列表

ori_dict = {'a': 3, 'b': 1, 'c': 2}
print('排序结果:', sorted(ori_dict, key=lambda k: ori_dict[k]))

你可能感兴趣的:(大模型之旅,python,前端,开发语言)