看不到代码请重新刷新此页面

函数

函数的定义和使用----定义函数

函数:组织好的,可重复使用的,用来实现单一,或相关关联的代码段。

def Max(a,b):
    # 函数体
    # 如果a大于b
    if a > b:
        # 返回a
        return a
    else:
        # 返回b
        return b

例题

def jiecheng(x):
    # 函数体
    ans = 1
    for i in range(1, x+1):
        ans *= i

    return ans
ans = 0
for i in range(1,11):
    ans += jiecheng(i) 
print(ans)

解释

  1. 定义阶乘函数 jiecheng(x)

def jiecheng(x):
    # 函数体
    ans = 1
    for i in range(1, x+1):
        ans *= i

    return ans
  • 这个函数接受一个参数 x

  • 初始化变量 ans1,因为阶乘的计算是从 1 开始的乘积。

  • 使用 for 循环从 1 遍历到 x(包含 x),在每次迭代中将 ans 乘以当前的循环变量 i

  • 循环结束后,ans 将包含 x 的阶乘值。

  • 函数返回 ans

  1. 计算从 110 的阶乘之和

ans = 0
for i in range(1,11):
    ans += jiecheng(i) 
  • 初始化变量 ans0,用于累加阶乘的和。

  • 使用 for 循环从 1 遍历到 10(包含 10)。

  • 在每次循环中,调用 jiecheng(i) 计算当前数 i 的阶乘,并将结果加到 ans 上。

  1. 打印结果

print(ans)
  • 打印变量 ans 的值,即从 110 的所有整数的阶乘之和。

计算过程

  • jiecheng(1) = 1

  • jiecheng(2) = 2

  • jiecheng(3) = 6

  • jiecheng(4) = 24

  • jiecheng(5) = 120

  • jiecheng(6) = 720

  • jiecheng(7) = 5040

  • jiecheng(8) = 40320

  • jiecheng(9) = 362880

  • jiecheng(10) = 3628800

将这些值相加得到:

1 + 2 + 6 + 24 + 120 + 720 + 5040 + 40320 + 362880 + 3628800 = 4037913

因此,最终打印的结果是 4037913

函数的定义和使用----返回值

使用return返回函数计算结果

可以有多个return语句,但是真正执行时最多运行1次,碰到return语句,函数结束

没有return语句,函数返回值为None

return可以返回多个变量

z

def Max(a,b):
    if a > b:
        return a
    else:
        return b
    #程序不会执行到这里
    print("a =",a)
    print("b =",b)
x = Max(3,5)
print(x)
输出:5

传参机制----形参与实参

形式参数:定义函数时的输入参数

实际参数:调用函数时传递的参数

剧本中的角色相当于形参,演员相当于实参

def f(x):
    x*=2
    print("这是形式参数:x = {}".format(x))
x = 100
print("这是实际参数:x = {}".format(x))
f(x)
print("这是实际参数x = {}".format(x))

输出:

这是实际参数:x = 100
这是形式参数:x = 200
这是实际参数x = 100

传参机制----值传递

值传递:函数中的形式参数变化,不会导致实际参数的变化,这是由于传递的是数值,单方向,参数为不可变类型,字符串,数字,元组

def Swap(x,y):
    x,y = y,x
    print("这是swap函数")
    print("x =",x,"y =",y)
    print("id(x)=",id(x),"id(y)=",id(y))

x,y = 3,5
print("这是主函数")
print("x =",x,"y =",y)
print("id(x)=",id(x),"id(y)=",id(y))
Swap(x,y)
print("这是主函数")
print("x =",x,"y =",y)
print("id(x)=",id(x),"id(y)=",id(y))

输出
这是主函数
x = 3 y = 5
id(x)= 140728476236280 id(y)= 140728476236344
这是swap函数
x = 5 y = 3
id(x)= 140728476236344 id(y)= 140728476236280
这是主函数
x = 3 y = 5

传参机制----引用传递

引用传递:函数中形式参数变化,会导致实际参数一起变化,这是由于传递是变量。参数为可变类型,列表、字典

def F(x):
    x.append(4)
    print("这是f函数")
    print("x =",x)
    print("id(x)=",id(x))

x = [1,2,3]
print("这是主函数")
print("x =",x)
print("id(x)=",id(x))
F(x)
print("这是主函数")
print("x =",x)
print("id(x)=",id(x))

输出
这是主函数
x = [1, 2, 3]
id(x)= 1907313006848
这是f函数
x = [1, 2, 3, 4]
id(x)= 1907313006848
这是主函数
x = [1, 2, 3, 4]
id(x)= 1907313006848

最大公约数:使用欧几里得算法来高效地计算最大公约数。

def gcd(a,b):
    while b:
        a,b = b,a%b
    return a

最小公倍数:

def lcm(a, b):
    return a * b // gcd(a, b)

质数

import math

def is_prime(x):
    if x <= 1:
        return False
    if x <= 3:
        return True
    if x % 2 == 0 or x % 3 == 0:
        return False
    i = 5
    while i * i <= x:
        if x % i == 0 or x % (i + 2) == 0:
            return False
        i += 6
    return True

求面积

首先检查输入的边长是否合法(即任意两边之和大于第三边)。如果合法,则使用海伦公式计算面积。

import math

def Area(a, b, c):
    if a + b <= c or a + c <= b or b + c <= a:
        return None
    s = (a + b + c) / 2
    return math.sqrt(s * (s - a) * (s - b) * (s - c))

math

collectcions