Lesson 8 函数 集合的运算

1.集合的运算和可变不可变类型

  • & 交集运算
    在这里插入图片描述

  • | 并集运算
    在这里插入图片描述

  • -差集运算
    在这里插入图片描述

  • ^ 亦或集
    在这里插入图片描述

  • <= 检查一个集合是否是另一个集合的子集
    在这里插入图片描述

  • < 检查一个集合是否是另一个集合的真子集
    在这里插入图片描述

  • =检查一个集合是否是另一个集合的超集
    在这里插入图片描述

  • 检查一个集合是否是另一个集合的真超集
    在这里插入图片描述

  • 可变不可变类型

    • 不可变类型:不可变数据类型在第一次声明赋值声明的时候, 会在内存中开辟一块空间, 用来存放这个变量被赋的值, 而这个变量实际上存储的, 并不是被赋予的这个值, 而是存放这个值所在空间的内存地址, 通过这个地址, 变量就可以在内存中取出数据了. 所谓不可变就是说, 我们不能改变这个数据在内存中的值, 所以当我们改变这个变量的赋值时, 只是在内存中重新开辟了一块空间, 将这一条新的数据存放在这一个新的内存地址里, 而原来的那个变量就不在引用原数据的内存地址而转为引用新数据的内存地址了,相当于改变了变量指向的内存地址.
      有:int ,str,tuple
    • 可变类型:可变数据类型是指变量所指向的内存地址处的值是可以被改变的,也就是说可变类型在赋值的时候copy的是地址或者引用.
      有;list set dict
      总结:可变类型可变的是值,不可变不可变的是id

2.函数的简介

  • 函数也是一个对象
  • 函数用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次调用
语法
def 函数名([形参1,形参2,形参3....]):
    代码块

注意:
函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头)
print是函数对象 print()是调用函数

3.函数的参数

  • 3.1 形参和实参
    • 形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值
    • 实参(实际参数)指定了形参,那么在调用函数时必须传递实参,实参将会赋值给对应的形参,简单来说有几个形参就要有几个实参
  • 3.2 函数的传递方式
    • 定义形参时,可以为形参指定默认值。指定了默认值以后,如果用户传递了参数则默认值不会生效。如果用户没有传递,则默认值就会生效
    • 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参
    • 关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,而根据参数名进行传递
    • 混合使用位置参数和关键字参数的时候必须将位置参数写到关键字参数前面去
# 形参参数默认值
def fun(a,b,c=None):
    print(a)
    print(b)
    print(c)

fun(12,12)

在这里插入图片描述

# 位置参数
def fun(a,b,c):
    print(a)
    print(b)
    print(c)

fun(12,121)

在这里插入图片描述

# 关键字参数
def fun(a,b,c):
    print(a)
    print(b)
    print(c)

fun(b = 2,a = 5,c = 4)

在这里插入图片描述

# 混合使用位置参数和关键字参数
def fun(a,b,c):
    print(a)
    print(b)
    print(c)

fun(1,c=4,b=3)

在这里插入图片描述

4. 不定长参数

  • 定义函数时,可以在形参前面加一个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到一个元组中
  • 带*号的形参只能有一个,可以和其他参数配合使用
  • *形参只能接受位置参数,不能接受关键字参数
  • **形参可以接收其他的关键字参数,它会将这些参数统一保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
  • **形参只有一个,并且必须写在所有参数的后面

5.参数的拆包

  • 传递实参时,也可以在序列类型的参数前添加星号,这样它会自动的将序列中元素依次作为参数传递
  • 要求序列中的元素的个数必须和形参的个数一致

6.作业

# 1. 打印名片程序:输入姓名,电话号码,性别,最后打印出来名片
# • 控制姓名长度为6-20
# • 电话号码长度11
# • 性别只能允许输入男或女
# • 每一样信息不允许为空



while True:
    name = input('输入姓名:')
    if len(name) >= 6 and len(name) <= 20:
        num = (input('输入电话号码:'))
        if len(num) == 11:
            gender = input('输入性别;')
            if gender == '男' or gender == '女':
                break
            else:
                print('''不知道这是什么
------------请重新输入-----------''')
                continue
        else:
            print('''电话长度必须等于11
------------请重新输入-----------''')
            continue
    else:
        print('''姓名长度不为6-20
------------请重新输入-----------''')
        continue
print(name)
print(num)
print(gender)
# 使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21...即:
# 起始两项均为1,此后的项分别为前两项之和
# def fip_num(n):
def fip_num(n):
    a = 1
    b = 0
    for i in range(n):
        a, b = b, b + a
        if b == 1 or b == 2:
            print(b)
        else:
            print(b)


fip_num(20)
# 编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果


def fun(n):
    sum1 = 0
    for i in range(n+1):
        sum1 += i
    print(sum1)

fun(100)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
预处理是数据分析中非常重要的步骤,它是为了准确分析数据而对数据进行的一系列操作。对于lesson数据进行预处理的目的是为了优化数据的质量、可用性和可靠性,以便更好地支持后续的数据分析工作。下面我将从数据清洗、数据规范化、数据转换、数据集成四个方面说明如何对lesson数据进行预处理。 首先是数据清洗,这是预处理的第一个步骤。数据清洗的目的是识别和处理数据中的错误、不一致、重复和缺失等问题,使得数据能够精确无误地支持后续的分析工作。对于lesson数据,我们可以通过删除重复值、填充缺失值、调整不一致的数据格式等方式进行数据清洗。 其次是数据规范化,这是为了处理数据的格式和范围,使得数据更加一致性和可比性。对于lesson数据,我们可以进行数据标准化,如将日期格式统一为YYYY-MM-DD,将文本内容转化为小写或大写等等。 然后是数据转换,这是为了将数据从原始格式转化为适合分析的格式。对于lesson数据,我们可以进行数据转换,如将非数值数据转换为数值数据,对数据进行分类或聚类,进行分箱等等。 最后是数据集成,这是为了将多个数据集合并成一个更大、更全面和更一致的数据集。对于lesson数据,我们可以将不同的数据源集成,比如将学生的成绩、出勤记录、课程评价等数据集成在一起,以进行更全面的数据分析和挖掘。 综上所述,通过数据清洗、数据规范化、数据转换、数据集成等多方面预处理操作,我们可以提高lesson数据的质量、可用性和可靠性,为后续的数据分析工作提供有力的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值