Day10_函数进阶

29 篇文章 0 订阅
11 篇文章 0 订阅
Day10_函数进阶

笔记:

函数的参数

1.位置参数和关键字参数

  • 根据实参提供的不同分为位置参数和关键字参数
"""
1)位置参数:调用函数的时候让形参和实参在位置上一一对应
2)关键字参数:调用函数的时候以"形参名 = 值"的形式确定对应实参。
3)位置参数和关键字参数混用:位置参数必须在关键字参数前面,同一形参不能多次赋值,所有形参都必须赋值
"""
  1. 参数默认值
  • 定义函数的时候可以直接在形参后面用 = 给形参赋默认值
  • 有默认值的参数在调用的时候可以不用传参
  • 如果有的参数有默认值,有的没有,有默认值的参数必须放在没有默认值参数的后面
  1. 参数类型说明
  • 无默认值参数的类型说明 - :类型名
  • 有默认值的参数,默认值的类型就是参数对应类型
  1. 不定长参数
"""
1)*的不定长参数:在某个形参前面加*,那么这个形参就是一个不定长参数,它可以接受任意多个实参。
            带*的参数本质就是一个元组,对应实参就是元组中的元素
    注意:带*的不定长参数对应的实参必须用位置参数传参
2)**的不定长参数:在某个形参前加**,那么这个形参就是一个不定长参数,它可以接受任意多个实参。
               带**的参数本质就是一个字典,对应的关键字参数就是字典中的键值对
    注意:**的不定长参数对应的实参必须使用关键字参数传参
  • 定长参数在*的不定长参数前,定长和不定长都适用位置参数传参
  • 定长在*的不定长参数后面,*后面的不定长参数必须是用关键字参数传参
  • 定长参数在**的不定长前,定长既可以用位置参数也可以用关键字参数
  • 定长参数不能放在**对应不定长参数后面
  • 的不定长参数和带**的不定参数可以一起用,带的必须放在带**的前面

函数返回值

  1. 返回值
  • 返回值的作用就是将函数内部的数据传递到函数外部
  1. 怎么确定函数返回值 - 怎么将函数内容的数据传递到外部
  • 在函数体中用return关键字来返回返回值(一个函数只有一个返回值)
  • 什么时候需要返回值:如果函数的功能产生了新的数据,将新的数据都返回
  1. 怎么获取函数的返回值
  • 获取函数调用表达式的值就是获取函数返回值
  • 函数调用表达式 - 调用函数的语句
  • 函数表达式的值就是函数返回值,函数返回值能做的事情,函数调用表达式都可以做
  1. 函数调用过程
"""
第一步:回到函数定义的位置
第二步:传参(用实参给形参赋值,这个时候要保证每个参数都有值)
第三步:执行函数体
第四步:执行完函数体的时候确定函数返回值
        (看执行函数体的时候有没有遇到return,如果遇到return后面的值是什么,函数
        返回值就是什么,并且函数在遇到return直接结束。如果没有遇到return,函数返回值是None)
第五步:回到函数调用的位置(这个时候函数调用表达式的值才是函数的返回值)
"""

变量的作用域

  1. 变量的作用域
  • 已定义过的变量能使用的范围
  • 根据变量的作用域不同,将变量分为全局变量和局部变量两种
  1. 全局变量
  • 没有定义在函数里面或者类里面的变量就是全局变量
  • 全局变量的作用域:从定义开始到程序结束的任何位置都可以使用
  1. 局部变量
  • 定义在函数里面的变量就是局部变量(形参也是局部变量)
  • 局部变量的作用域:从定义到函数结束
  1. 函数调用过程就是压栈过程
"""
调用函数的时候,系统会自动在栈区间为这个函数创建一个临时栈区间,用来保存在函数中产生的数据,局部变量。当函数调用结束,这个临时栈区间会自动释放(释放之前会将返回值传递到临时栈区间的外部)。
"""
  1. global
  • 在函数里面去修改一个全局变量的值或者定义一个全局变量
"""
global 变量名
使用变量或者给变量赋值
"""

作业:

  1. 编写一个函数,计算一个整数的各位数的平方和
例如: sum1(12) -> 51的平方加上2的平方)    sum1(123) -> 14
def quadratic_sum(num:int):
    """
    一个整数的各位数的平方和
    :param num: 一个整数
    :return: 各位数上的平方和值
    """
    str_num = str(num)
    sum1 = 0
    for x in str_num:
        sum1 += int(x)**2
    return sum1
  1. 写一个函数,求一个数字列表中绝对值最大的元素
例如:nums = [-23, 100, 89, -56, -234, 123], 最大值是:-234
def list_max_value(list1: list):
    """
    一个数字列表中绝对值最大的元素
    :param list1: 一个数字列表
    :return: 列表中绝对值最大元素的值
    """
    list2 = [-x if x < 0 else x for x in list1]
    max_value = list2[0]
    num1 = 0
    for index in range(1, len(list2)):
        if list2[index] > max_value:
            max_value = list2[index]
            num1 = index
    return list1[num1]
  1. 编写函数实现字符串join方法的功能,将指定序列中的元素通过指定字符串合并成一个新的字符串
def join(str_sep: str, seq):
    """
    将指定序列中的元素通过指定字符串合并成一个新的字符串
    :param str_sep: 指定字符串
    :param seq: 指定序列
    :return: 新字符串
    """
    str0 = ''
    for x in seq:
        str0 += str(x) + str_sep
    return str0[:-len(str_sep)]
  1. 写一个函数实现列表extend的功能,将指定序列中的元素全部添加到指定列表中
def extend(list1: list, seq):
    """
    将指定序列中的元素全部添加到指定列表中
    :param list1: 指定列表
    :param seq: 指定序列
    :return: 新列表
    """
    list2 = [x for x in seq]
    list_sum = list1 + list2
    return list_sum
  1. 写一个函数实现简易计算器的功能:输入第一个数字,输入运算符,输入第二个数字,计算结果。
def calculator(num1: float, operator: str, num2: float):
    """
    计算两个数的运算结果
    :param num1: 数字1
    :param operator: 运算符号
    :param num2: 数字2
    :return: 计算结果
    """
    if operator == '+':
        result = num1 + num2
        return result
    if operator == '*':
        result = num1 * num2
        return result
    if operator == '-':
        result = num1 - num2
        return result
    if operator == '/':
        result = num1 / num2
        return result
    if operator == '//':
        result = num1 // num2
        return result
    if operator == '%':
        result = num1 % num2
        return result
    if operator == '**':
        result = num1 ** num2
        return result
  1. 已经列表points中保存的是每个点的坐标(坐标是用元组表示的,第一个值是x坐标,第二个值是y坐标)
points = [
  (10, 20), (0, 100), (20, 30), (-10, 20), (30, -100)
]
# 1)获取列表中y坐标最大的点
point_y = [x[1] if x[1] >= 0 else -x[1] for x in points]
max_y = point_y[0]
index0 = 0
for index in range(1, len(point_y)):
    if point_y[index] > max_y:
        index0 = index
print(f'y坐标最大的点{points[index0]}')
# 2)获取列表中x坐标最小的点
point_x = [x[0] if x[0] >= 0 else -x[0] for x in points]
min_x = point_x[0]
index0 = 0
for index in range(1, len(point_x)):
    if point_x[index] < min_x:
        index0 = index
print(f'x坐标最小的点{points[index0]}')
# 3)获取列表中距离原点最远的点
max_len = points[0][0]**2+points[0][1]**2
index0 = 0
for index in range(1,len(points)):
    if points[index][0]**2+points[index][1]**2 > max_len:
        index0 = index
print(f'距离原点最远的点{points[index0]}')
#4)将点按照点到x轴的距离大小从大到小排序
new_list = []
new_points = points[:]
point_y = [x[1] if x[1] >= 0 else -x[1] for x in points]
point_y_sort = sorted(point_y, reverse=True)
for y in point_y_sort:
    for x in new_points:
        if y ** 2 == x[1] ** 2:
            if x not in new_list:
                new_list.append(x)

print(new_list)

1)获取列表中y坐标最大的点

2)获取列表中x坐标最小的点

3)获取列表中距离原点最远的点

4)将点按照点到x轴的距离大小从大到小排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值