函数

是组织好,可以重复使用,用来实现特定功能的代码段

函数的定义

def 函数名(传入参数):

             函数体

            return 返回值

其中:传入参数和return可以省略

注:函数要先定义再使用

调用:函数名()

参数

在调用时,接收外部提供的数据

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

函数调用时:实际参数

注:实参要和形参的数目对的上

def sum(x,y): # 形参
    print(f"{x}+{y}={x+y}")
sum(1, 2) # 实参
def xinxi(name,age,hijh):# 形参
    print(f"我是{name},我今年{age}岁,我身高{hijh}cm!")
xinxi(1,1,1)# 实参

返回值

函数完成后,最后给调用者的结果,return执行后函数就结束了

def 函数(参数。。。。)

     函数体

    return 返回值

使用:变量=函数(参数)

def add(a, b, c):
    sum = a + b + c
    return sum


r = add(1, 2, 3)
print(r)
print(add(4, 5, 6))


def a_max(a, b, c):
    if a >= b and a >= c:
        return a
    elif b >= c and b >= a:
        return b
    else:
        return c


num = a_max(2, 2, 2)
print(num)

None类型

1.表示空值或者缺失返回值,当一个变量、函数返回值或对象属性没有具体值时,常用 None 表示

2  ,在if判断中用来进行判断要执行那个分支,在if中可以通过判断传入的参数

None或者0或者False执行别的分支

为True或者有参数的时候执行第一个分支

def get_user_age(username):
    """查询用户年龄,如果用户不存在则返回None"""
    # 假设这是一个用户数据库
    users = {
        "小明": 18,
        "小红": 20
    }

    # 如果用户存在就返回年龄,否则返回None
    return users.get(username)


# 测试查询
username = "小刚"  # 这是一个不存在的用户
age = get_user_age(username)

# 使用if判断结果
if age:
    # 当age有有效数值时执行(非None且非0)
    print(f"{username}的年龄是{age}岁")
else:
    # 当age是None或0时执行
    if age is None:
        print(f"抱歉,没有找到{username}的信息")
    else:
        print(f"{username}的年龄是0岁")
  1. 调用函数查询用户年龄
  2. 如果用户存在,返回实际年龄(数字)
  3. 如果用户不存在,返回None

if判断中:

  • 当拿到实际年龄(比如 18、20)时,if age会认为是True,执行第一个分支
  • 当拿到None时,if age会认为是False,进入 else 分支
  • 我们再用age is None精确判断是不是真的没找到用户

函数的嵌套

局部变量是定义在函数里面的变量

全局变量是定义在函数外部的变量

函数内部修改的变量不会对函数外部的变量造成影响

global关键字

global 变量:使函数使用全局变量

num=100
def a():

    print("a",num)
def b():
    global num
    num=200
    print("b",num)
a()
b()
print(num)

综合案例:

name = input("输入你的姓名")
money = 500000


# 主函数
def main():
    """
    :return: 返回的是输入的数字
    """
    print("-" * 10 + "主菜单" + "-" * 10)
    print(f"{name},您好,欢迎来到ATM,请选择操作:")
    print("查询余额\t[请输入1]")
    print("存款\t\t[请输入2]")
    print("取款\t\t[请输入3]")
    print("退出\t\t[请输入4]")
    return int(input("输入按钮"))


# 查询函数
def see_maney(title):
    """

    :param title: 用来判断是否需要输出查询余额这一行
    :return: None
    """
    if title:
        print("-" * 10 + "查询余额" + "-" * 10)
    print(f"{name},你好,你的余额剩余:{money}元")
# 存款函数
def add_money():
    """
    :return: None
    """
    global money
    print("-" * 10 + "存款" + "-" * 10)
    sum = int(input("输入你想存入的钱"))
    money += sum
    print(f"{name},您好,您存款{sum}元成功")
    see_maney(False)# 不会显示print("-" * 10 + "查询余额" + "-" * 10)

# 取钱函数
def qu_money():
    """
    :return: None
    """
    global money
    print("-" * 10 + "取钱" + "-" * 10)
    qu = int(input("输入你想取的钱"))
    if qu>money:
        print("余额不足")
    else:
        money-=qu
        print(f"{name},您好,您取款{qu}元成功")
        see_maney(True) # 会显示print("-" * 10 + "查询余额" + "-" * 10)

# 返回主界面的while
while True:
    num=main()
    if num==1:
        see_maney(True)
    if num==2:
        add_money()
    if num==3:
        qu_money()
    if num==4:
        print("欢迎下次光临")
        break

这个案例就通过判断传入的参数是True还是False来决定是否输入print("-" * 10 + "查询余额" + "-" * 10)

数据容器

一种可以容纳多分数据的数据类型,每一份数据称之为一个元素

列表,元组,字典,字符串,集合

列表

# 列表
var = [1, 2, 3, 4, 5]
var2 = ["yanw", 1, 3, 4, "wen"]
print(var)
print(var2)
# 空列表
l1 = []
l2 = list()
print(type(l1))
print(type(l2))

列表的下标索引

列表的元素下标是从0开始的

-1是最右边的索引

# 列表的下标索引
var4 = [1, 3, 4, "abc", "haha", True, False, 3.14]
print(var4[5])
print(var4[-1])
#嵌套列表的下标索引
var = [[1, 2, 3, 4, 5], ["a", "b", "c", "d", "e"]]
print(var[0][2])
print(var[1][-5])
var[1][1] = "yan"
print(var)

列表名[1][2]

[1]:选择的列表

[2]:选择的列表元素

赋值:列表[下标]=值

嵌套列表

# 列表的嵌套
var3 = [var, var2]
print(var3)
var4 = [1,3,4,"abc","haha",True,False,3.14]
print(var4)

方法

定义在class类中的函数

使用:类名.函数名

列表中的方法

# 列表索引
var4 = [1, 3, 4, "abc", "haha", True, False, 3.14]
print(var4.index("haha"))  # 4
# 修改
var4[2] = "abc"
print(var4)  # [1, 3, 'abc', 'abc', 'haha', True, False, 3.14]
# 插入
var4.insert(1, "yws")  # [1, 'yws', 3, 'abc', 'abc', 'haha', True, False, 3.14]
print(var4)
# 追加
var4.append("aaa")  # [1, 'yws', 3, 'abc', 'abc', 'haha', True, False, 3.14, 'aaa']
print(var4)
# 追加一批
va1 = [1, 2, 3]
var4.extend(va1)
print(var4)  # [1, 'yws', 3, 'abc', 'abc', 'haha', True, False, 3.14, 'aaa', 1, 2, 3]
# 删除元素
del var4[0]  # ['yws', 3, 'abc', 'abc', 'haha', True, False, 3.14, 'aaa', 1, 2, 3]
print(var4)
# 删除元素2
var4.pop(4)  # ['yws', 3, 'abc', 'abc', True, False, 3.14, 'aaa', 1, 2, 3]
print(var4)
# 删除列表中第一次出现的元素
var4.remove("abc")
print(var4)  # ['yws', 3, 'abc', True, False, 3.14, 'aaa', 1, 2, 3]
# 清空列表
var4.clear()  # []
print(var4)
num = var4.count(3)  # 2
print(num)
num2 = len(var4)  # 10
print(num2)
# 练习
number=[21,25,21,23,22,20]
# 追加31
number.append(31)
print(number)
# 追加列表[29,33,30]
number.extend([29,33,30])
print(number)
# 取第一个元素
print(number[0])
# 取最后一个元素
print(number[-1])
# 查找31在那个位置
print(number.index(31))

使用while或者for循环进行函数的遍历

# while循环遍历列表
tests = [1, 3, 4, "abc", "haha", True, False, 3.14]
i = 0
while i < len(tests):
    print(tests[i])
    i += 1
# for 循环
print("------------------")

for i in tests:
    print(i)

在新的列表中进行追加内容

num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new=[] # 空列表
new1=list()
for i in num:
    if i % 2 == 0:
        new.append(i)
        new1.append(i)
print(num)
print(new)
print(new1)

更多推荐