Python Day 3

函数

函数的定义

def 函数名(参数1, 参数2):

    函数体

    return 返回值

示例:

# 定义函数
def add(x, y):
    result = x + y
    return result

# 调用函数
x = int(input("请输入x:"))
y = int(input("请输入y:"))
r = add(x, y)
print(f"您计算的是{x}与{y}之和,和为{r}")

 运行结果:

如果函数没有return语句,则返回值类型默认为None类型

None是一个特殊的字面量,其类型为<class 'NoneType'>,表示返回空值的意思,用例如下:

# 函数定义
def check(age):
    """
    检查是否成年
    :param age: 年龄
    :return: 是否成年的布尔值
    """
    if age > 18:
        print("已成年")
        return True

Age = int(input("输入年龄:"))

# 若Age小于18,check()函数返回None
result = check(Age)

# not取反后结果为真,执行if中的语句
if not result:
    print("未成年")

另外,函数说明文档可以在调用处通过鼠标悬停的方式查看:

变量的作用域

  • 局部变量:只在函数内部生效
  • 全局变量:函数内外均可生效

这里介绍一个global关键字,可在函数内部声明变量为全局变量,如:

num = 100

def fun1():
    num = 200
    print(f"fun1()中num值为{num}")

def fun2():
    global num
    num = 200
    print(f"fun2()中num值为{num}")

print(f"执行任意函数前全局num值为{num}")

fun1()
print(f"执行fun1()函数后全局num值为{num}")

fun2()
print(f"执行fun2()函数后全局num值为{num}")

结果如下图:

数据容器

什么是数据容器?

Python中的数据容器,是一种可以容纳多份数据的数据类型,容纳的每一份数据(元素)可以是任意类型的数据

list(列表)

基本语法

# 字面量
[元素1, 元素2, ...]

# 定义变量
变量名 = [元素1, 元素2, ...]

# 定义空列表
变量名 = []
变量名 = list()

要注意的是,列表中存储的多个元素可以是不同的数据类型,且支持嵌套

列表支持通过下标访问元素,可参考Java中一维或多维数组的下标使用,此处不再赘述

常用方法

列表常用的方法如下:

方法使用描述
列表.index(元素)查找指定元素的下标
列表.insert(下标, 元素)在指定下标处插入指定元素
列表.append(元素)在列表末尾追加元素
列表.extend(其他容器)将其他容器的元素取出,依次追加至列表尾部
del 列表[下标]删除指定下标的元素
列表.pop(下标)
列表.remove(元素)删除列表中与参数相同的第一个匹配项
列表.clear()清空列表
列表.count(元素)统计某元素在列表中出现的次数
len(列表)统计容器中共有多少个元素

列表的遍历

while循环遍历:

index = 0
while index < len(列表)
    访问 列表[index]
    index += 1

for循环遍历:

for 临时变量 in 列表
    访问 临时变量

在for循环中,临时变量会依次被赋值为列表中的元素

相比之下,for循环更简单,而while循环更灵活

小结

简单总结一下列表的特点:

  • 可容纳多个元素
  • 元素之间可以是不同的数据类型
  • 有序存储
  • 允许有重复数据
  • 可以修改

tuple(元组)

基本语法

# 字面量
(元素1, 元素2, ...)

# 变量
变量名 = (元素1, 元素2, ...)

# 空元组
变量名 = ()
变量名 = tuple()

额外要注意的是,即使元组中只有一个元素,也要加上逗号,否则不是元组类型

# 定义单元素的元组
t = (123, )

元组的大部分特性与列表相同,最大的不同点在于元组一旦定义完成就不可修改

常用方法

方法描述
元组.index(元素)返回查找元素的下标
元组.count(元素)统计元素在元组中出现的次数
len(元组)统计元素个数

元组的遍历

while循环遍历

# 定义元组
t = (1, 2, 3, 4, 5)

# 遍历
index = 0
while index < len(t):
    print(t[index])
    index += 1

for循环遍历

# 定义元组
t = (1, 2, 3, 4, 5)

# 遍历
for i in t:
    print(i)

小结

元组的特点:

  • 可以容纳多个元素
  • 元素之间可以是不同的数据类型
  • 有序存储
  • 允许有重复元素
  • 不可修改

附加一点:如果元组中有list作为元素,则list的内容可以修改,但不能将其替换为其他list或其他类型

str(字符串)

基本语法

字符串是存放字符(串)的容器,同元组、列表一样,也可通过下标的方式访问元素

常用方法

方法描述
字符串.index(元素)查找指定元素的第一个匹配项的下标
字符串.replace(元素1, 元素2)

将字符串中的所有元素1替换为元素2

不修改原字符串,而是生成一个新的

字符串.split(元素)

按照给定元素分割字符串

存入一个新的list对象中

字符串.strip(元素)移除指定元素(以字符为单位),默认移除首尾的空格
字符串.count(元素)统计元素出现的次数
len(字符串)统计字符个数

字符串的遍历

while循环遍历:

s = "你相信光吗"
index = 0
while index < len(s):
    print(s[index])
    index += 1

for循环遍历:

s = "你相信光吗"
for i in s:
    print(i)

小结

字符串作为容器的特点:

  • 只能存储字符(串)类型
  • 有序存储
  • 允许有重复字符(串)
  • 不可修改

序列的切片

什么是序列?

序列是指,内容连续、有序,可使用下标索引的一类数据容器

上述的列表、元组、字符串均可视作序列

切片操作

语法:

序列[起始下标 : 结束下标 : 步长]

  • 起始下标到结束下标为左闭右开区间(即结束下标元素取不到)
  • 起始下标为空视作从头开始
  • 结束下标为空视作直到末尾
  • 步长为空视作为1,为负视作从后向前倒序切片

重点注意,切片操作不影响原序列本身,而是得到一个同类型的新序列

示例:

l = [1, 2, 3, 4, 5]
newl = l[1:4]
print(newl)    # 结果:[2, 3, 4]

t = (1, 2, 3, 4, 5)
newt = t[:]
print(newt)    # 结果:(1, 2, 3, 4, 5)

s = "12345"
news = s[3:1:-1]
print(news)    # 结果:"43"

set(集合)

集合的主要特点是:去重且无序

基本语法

# 集合定义
变量名 = {元素1, 元素2, ...}

# 空集合
变量名 = set()

常用方法

方法描述
集合.add(元素)添加新元素
集合.remove(元素)移除指定元素
集合.pop()随机取出一个元素
集合.clear()清空集合
集合1.difference(集合2)

生成一个新集合,内容为两集合的差集

原有的两集合内容不变

集合1.difference_update(集合2)

在集合1中删除集合2中出现的元素

集合1被修改,集合2不变

集合1.union(集合2)

生成一个新集合,内容为两集合的并集

原有的两集合内容不变

len(集合)统计集合中元素个数

集合的遍历

由于集合不支持下标索引,故不支持while循环遍历

for循环遍历:

set1 = {1, 2, 3, 4, 5}
for i in set1:
    print(i)

小结

集合的特点:

  • 可以容纳多个元素
  • 元素之间可以是不同的数据类型
  • 无序存储(不支持下标索引)
  • 不允许有重复元素
  • 可以修改
  • 不支持while循环遍历

dict(字典)

生活中的字典可以按找到对应的含义,同理,python中的字典可以按Key找到对应的Value

通过字典,可以实现用Key值取出Value值的操作(Key值不能重复)

基本语法

# 定义字典变量
# 字典与集合一样使用{},但其元素为一个一个的键值对
d = {key1: value1, key2: value2, ...}

# 空字典
d = {}
d = dict()

字典数据的获取:

字典变量名[Key]可以得到对应的Value值

字典的Key值和Value值可以是任意数据类型,所以字典也可以嵌套使用

常用方法

方法描述
字典[Key]获取指定Key对应的Value值
字典[Key] = Value添加/更新键值对
字典.pop(Key)

获取指定Key对应的Value值

并在字典中删除此键值对

字典.clear()清空字典
字典.keys()获取全部Key值,类型为<class 'dict_keys'>
len(字典)统计字典内元素个数

字典的遍历

和集合一样,字典不支持下标,因此也不支持while循环遍历

for循环遍历:

# 定义字典
d = {
    "tom": 99,
    "sam": 56,
    "lili": 87
}

# for循环遍历字典的Value值
for i in d.keys():
    print(d[i])

小结

字典的特点:

  • 可以容纳多个元素
  • 元素之间可以是不同的数据类型
  • 每个元素都是Key: Value这样的键值对
  • 可以通过Key值获取对应的Value值,Key值不可重复
  • 无序存储(不支持下标)
  • 可以修改
  • 不支持while循环遍历

数据容器的通用操作

遍历

  • 五类容器均支持for循环遍历
  • 集合、字典不支持while循环遍历,其余支持

统计

  • len(容器),统计容器中元素个数
  • max(容器),统计容器中最大的元素
  • min(容器),统计容器中最小的元素

字符串比较大小实际上是按位比较字符的ASCⅡ码值,只要有一位比出大小,后面就无需比较了

转换

  • list(容器),将给定容器转换为列表类型
  • tuple(容器),将给定容器转换为元组类型
  • str(容器),将给定容器转换为字符串类型
  • set(容器),将给定容器转换为集合类型

排序

  • sorted(容器, [reverse = True]),将给定容器进行排序,其中参数reverse = True表示降序,排好序后会得到一个列表对象
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值