回顾
# 变量和运算符
# 判断和循环
# Number(int float) /String / list [] / tuple () / dict {:} / set {}
# 6 中常用数据类型
# 函数 function
# 参数列表也叫形参
# def 函数名(参数列表):
# 函数体
# [return]
def func(x):
y = 5*x + 2
return y
# 函数的调用
# 函数名(实参)
result = func(100)
print(result)
def hello():
print("hello")
def hello2(name):
print("Hi, {}".format(name))
hello()
hello2("eric")
函数的分类
按照参数和返回值
# 无参无返回
def hi():
print("Hi")
return
print(hi())
# 无参有返回
def hi2():
return "hello"
print(hi2())
# 有参无返回
def twoSum(x, y):
print("x + y = ", x + y)
twoSum(10, 20)
# 有参有返回
def calcuteSum(n):
mySum = 0
for i in range(1, n+1):
mySum += i
return mySum
print(calcuteSum(10))
print(calcuteSum(100))
# []列表 求出最大值 , 最大值 + c
ls = [i for i in range(10)]
print(ls)
def getMax(ls):
if len(ls) ==0 :
# return 2个作用 返回值, 第二个结束函数
return
maxNum = ls[0]
for num in ls:
if num > maxNum:
maxNum = num
return maxNum
print(getMax([]))
c = 100
twoSum(getMax(ls), c)
twoSum(calcuteSum(10), c)
函数的参数
- 必须参数和关键字参数
# 函数的参数
# 必须参数 : 声明是传入的顺序和调用时要保持一致
def func(fuhao, x, y):
if fuhao == "+":
print("做加法")
return x + y
elif fuhao == "-":
print("做减法")
return x - y
elif fuhao == "*":
print("做乘法")
return x * y
elif fuhao == "/":
print("做除法")
return x / y
else:
print("输入错误")
return
print(func("+", 10, 20))
print(func("-", 10, 20))
print(func("*", 10, 20))
print(func("/", 10, 20))
# 关键字参数 调用时的顺序可和声明不一样
# key = value 形参 = 实参
print(func(x=20, y=100, fuhao="/"))
print(func(y=100, fuhao="/", x=20))
- 默认参数
# 函数的参数
# 默认参数, 必须在必须参数后面
def func(x, y, fuhao= "+" ):
if fuhao == "+":
print("做加法")
return x + y
elif fuhao == "-":
print("做减法")
return x - y
elif fuhao == "*":
print("做乘法")
return x * y
elif fuhao == "/":
print("做除法")
return x / y
else:
print("输入错误")
return
print(func(10, 20, "*"))
print(func(10, 20))
递归函数
函数自己调用自己
# def func():
# return 100
# def func2():
# return func() + 200
#
# print(func2())
# 1 + 2 + 3....+ n
# 递归需要设置终止条件
def f(n):
if n == 1:
return 1
return f(n-1) + n
# 把问题转化成更小大规律单元
print(f(5))
print(f(100))
# 1 * 2 * 3....* n
def f(n):
if n==1:
return 1
return f(n-1)*n
print(f(12))
# 斐波那契数列数列
# 1, 1, 2, 3, 5, 8, 13, 21
# 求斐波那契数列数列的第n项
def fibo(n):
if n in [1, 2]:
return 1
return fibo(n-1) + fibo(n-2)
print(fibo(5))
print(fibo(6))
print(fibo(7))
print(fibo(8))
from random import randint
ls = [randint(1, 20) for _ in range(10)]
print(ls)
print(sum(ls))
# 用递归求列表的累加和
def f(ls):
if len(ls) == 1:
return ls[0]
return ls[0] + f(ls[1:])
print(f(ls))