小白自学python第三天
学习python第三天
一、函数
1、函数介绍
函数就是组织好的,可重复使用的,用以实现特定功能的代码块。
现在我们现在需要统计多个字符串长度并且不考虑使用内置函数,你会怎么做?我们先用一种原始人办法看看吧:
str1 = "糖锅"
str2 = "糖锅以前爱吃糖"
str3 = "糖锅现在也很爱吃糖"count1 = 0
for i in str1:count1 += 1
print(f"\"{str1}\"的长度为:{count1}")count2 = 0
for i in str2:count2 += 1
print(f"\"{str2}\"的长度为:{count2}")count3 = 0
for i in str3:count3 += 1
print(f"\"{str3}\"的长度为:{count3}")
运行结果如下:
"糖锅"的长度为:2
"糖锅以前爱吃糖"的长度为:7
"糖锅现在也很爱吃糖"的长度为:9
虽然我们得到了预期结果,但是你是否感觉我们做了很多重复的逻辑工作,是不是太繁琐了。有这个感觉就对了,那让我们来看一下另一种实现方式吧:
str1 = "糖锅"
str2 = "糖锅以前爱吃糖"
str3 = "糖锅现在也很爱吃糖"def str_len(data):count = 0for i in data:count += 1print(f"\"{data}\"字符串的长度是:{count}")str_len(str1)
str_len(str2)
str_len(str3)
运行结果如下:
"糖锅"字符串的长度是:2
"糖锅以前爱吃糖"字符串的长度是:7
"糖锅现在也很爱吃糖"字符串的长度是:9
哎呀~我的老天奶,有没有一种效率飙升的感觉?!嘿嘿,要是需要统计的字符串数量更多时,这种感觉会更加明显,这就是使用函数的益处,接下来我会带各位更深一层的去认识函数。
2、函数的定义
函数的定义语法:
def 函数名(参数):函数体return 返回值
函数调用的语法:
函数名(参数)
简单示例:
# 定义函数,输出一些话语
def hello():print("大家好~我是糖锅,希望大家会喜欢我的博客~")# 调用函数
hello()
示例结果:
大家好~我是糖锅,希望大家会喜欢我的博客~
注意:
- 如果不需要参数,可以省略
- 若没有返回值,那么返回值也可以省略
- 函数必须先定义后调用
3、函数的参数
上述案例中一开始便有传入参数的情况,我们把字符串作为参数传入函数中,然后在函数内部进行字符串长度计算。还不熟悉?好吧,我们再来一个小案例熟悉一下这种情况(这次我们传入多个参数),我们来设计一个函数能够进行两数相加:
# 定义一个两数相加函数,无返回值
def add(x, y):print(f"{x} + {y} = {x + y}")add(12, 3)
示例结果:
12 + 3 = 15
后续如果我们想要进行三数相加,四数相加,我们传参时只需要用逗号将参数隔开就行啦。
4、函数的返回值
函数的返回值就是程序在完成事情之后,最后会给调用者的结果。
这里我们依然举例演示,我们将3中的案例稍微修改一下,将add(x, y)函数变成有返回值的函数:
# 定义一个两数相加函数,有返回值
def add(x, y):return x + ynum1 = 12
num2 = 3
print(f"{num1} + {num2} = {add(num1, num2)}")
示例结果:
12 + 3 = 15
注意:函数体在遇到return后就结束了,所以写在return后的代码不会执行!
5、变量的作用域
变量的作用域就是变量的作用范围,主要分为局部变量(定义在函数体内部的变量,只在函数体中生效)和全局变量(在函数体内外都能生效)
大家注意,有一种特殊情况,我们可以通过global关键字将函数内定义的变量声明为全局变量。具体什么意思呢?我们可以举个栗子:
num1 = 10def demo():num1 = 100print(f"demo函数中的num1的值为:{num1}")demo()
print(f"demo函数外的num1的值为:{num1}")
你觉得最后两个输出的值一样吗?都是100?请看运行结果:
demo函数中的num1的值为:100
demo函数外的num1的值为:10
猜中这结局了吗嘿嘿,事实证明,demo函数中num1和函数外的num1没啥关系,如果我们想让它们是同一个变量,怎么搞?再看:
num1 = 10def demo():global num1num1 = 100print(f"demo函数中的num1的值为:{num1}")demo()
print(f"demo函数外的num1的值为:{num1}")
我们在demo函数中用global关键字声明num1为全局变量,此时demo函数中的num1和函数外的num1就是同一变量了。不信请看运行结果:
demo函数中的num1的值为:100
demo函数外的num1的值为:100
二、数据容器(今日先看列表)
1、列表(list)
1.1、语法
列表以[]为标识,其中的每一个数据称之为元素,并且用逗号隔开。
# 字面量
[元素1, 元素2, 元素3,...]# 定义变量
变量名称 = [元素1, 元素2, 元素3,...]# 定义空列表
变量名称 = []
变量名称 = list()
简单示例:
# 定义一个列表
fruits = ["香蕉", "猕猴桃", "波罗蜜"]
print(fruits)# 列表中不一定要相同类型的元素
demo = [1, 12.03, "糖锅"]
print(demo)# 定义一个嵌套列表
demo1 = [[1, 2, 3], ["香蕉", "猕猴桃", "波罗蜜"]]
print(demo1)
示例结果:
['香蕉', '猕猴桃', '波罗蜜']
[1, 12.03, '糖锅']
[[1, 2, 3], ['香蕉', '猕猴桃', '波罗蜜']]
1.2、列表的下表索引
我们在实际编程当中不是每次都把列表元素都用到,我们有时只是用到其中的一个或者几个,那么我们如何取出特定位置的数据呢?这里我们就可以使用下标索引来实现。列表中元素的下标索引从0开始,依次递增:
注意:我们的下标是可以反向索引的,也就是从后向前:从-1开始,依次递减(-1,-2,-3…)
其中语法格式为:
# 非嵌套列表
列表[下标索引]
简单示例:
fruits = ["香蕉", "猕猴桃", "波罗蜜"]demo1 = [[1, 2, 3], ["香蕉", "猕猴桃", "波罗蜜"]]# 取出列表fruits中的第二个元素
print(fruits[1])
# 取出列表fruits中的倒数第一个元素
print(fruits[-1])# 取出demo1列表中的第一个列表元素中的第二个元素
print(demo1[0][1])
示例结果:
猕猴桃
波罗蜜
2
注意:通过下标索引取数据时,千万千万千万不要超出下标!!!
1.3、列表的常用操作
1.3.1、查找某元素的下标
功能:查找指定元素在列表的下标,如果找不到会报错。
语法:
列表.index(元素)
1.3.2、修改特定位置的元素值:
语法:
列表[下标] = 值
1.3.3、插入元素
语法:
# 在指定的下标位置,插入指定元素
列表.insert(下标, 元素)
1.3.4、追加元素
功能:将指定元素,追加到列表的尾部
语法:
# 追加单个元素
列表.append(元素)#追加一批元素
列表.extend(其他数据容器)
1.3.5、删除元素
语法:
# 方法一
del 列表[下标]# 方法二
列表.pop(下标)# 方法三:从前到后去搜索该元素,然后删除该元素在列表中的第一个匹配项
列表.remove(元素)
1.3.6、清空列表
语法:
列表.clear()
1.3.7、统计列表中某元素的数量
语法:
列表.count()
1.3.8、统计列表中元素的数量
语法:
len(列表)
综上:
简单示例:
foods = ["炸洋芋", "蒸饵丝", "过桥米线", "烧饵块", "炸洋芋", "炸洋芋"]# 查询某元素的下标
index = foods.index("过桥米线")
print(f"\"{foods[index]}\"元素的下标为:{index}")# 修改下标为2的元素的值
foods[2] = "木瓜凉水"
print(f"此时下标为2的元素的值为:\"{foods[2]}\"")# 在指定位置插入元素
foods.insert(3, "过桥米线")
print(f"插入元素后的列表为:{foods}")# 在列表尾部追加单个元素
foods.append("鲜花饼")
print(f"追加元素后的列表为:{foods}")# 在列表尾部追加一批元素
food = ["子弟薯片"]
foods.extend(food)
print(f"追加元素后的列表为:{foods}")# 删除指定下标的元素
# 方法一
del foods[2]
print(f"第一次删除元素后的列表为:{foods}")# 方法二:删除并取出元素
ele = foods.pop(2)
print(f"第二次删除元素后的列表为:{foods}, 被删除的元素是:\"{ele}\"")# 方法三:
foods.remove("炸洋芋")
print(f"第三次删除元素后的列表为:{foods}")# 统计列表中有几个"炸洋芋"
count1 = foods.count("炸洋芋")
print(f"此时列表中的”炸洋芋“个数是:{count1}个")# 统计列表中此时有几个元素
print(f"此时列表中的元素个数为:{len(foods)}个")# 清空列表
foods.clear()
print(f"列表被清空了,此时列表为:{foods}")
示例结果:
"过桥米线"元素的下标为:2
此时下标为2的元素的值为:"木瓜凉水"
插入元素后的列表为:['炸洋芋', '蒸饵丝', '木瓜凉水', '过桥米线', '烧饵块', '炸洋芋', '炸洋芋']
追加元素后的列表为:['炸洋芋', '蒸饵丝', '木瓜凉水', '过桥米线', '烧饵块', '炸洋芋', '炸洋芋', '鲜花饼']
追加元素后的列表为:['炸洋芋', '蒸饵丝', '木瓜凉水', '过桥米线', '烧饵块', '炸洋芋', '炸洋芋', '鲜花饼', '子弟薯片']
第一次删除元素后的列表为:['炸洋芋', '蒸饵丝', '过桥米线', '烧饵块', '炸洋芋', '炸洋芋', '鲜花饼', '子弟薯片']
第二次删除元素后的列表为:['炸洋芋', '蒸饵丝', '烧饵块', '炸洋芋', '炸洋芋', '鲜花饼', '子弟薯片'], 被删除的元素是:"过桥米线"
第三次删除元素后的列表为:['蒸饵丝', '烧饵块', '炸洋芋', '炸洋芋', '鲜花饼', '子弟薯片']
此时列表中的”炸洋芋“个数是:2个
此时列表中的元素个数为:6个
列表被清空了,此时列表为:[]
1.4、列表的遍历
我们直接上示例演示吧
先看一下使用while循环:
nums = [1, 2, 0, 3, 0, 1]def list_while():"""用while循环遍历列表的演示函数:return: None"""# 定义一个变量来记录下标index = 0while index < len(nums):# 通过下标index遍历列表print(f"列表的第{index + 1}个元素为:{nums[index]}")# 记得将下标加一index += 1list_while()
示例结果:
列表的第1个元素为:1
列表的第2个元素为:2
列表的第3个元素为:0
列表的第4个元素为:3
列表的第5个元素为:0
列表的第6个元素为:1
使用for循环:
nums = [1, 2, 0, 3, 0, 1]def list_for():"""用for循环遍历列表的演示函数:return: None"""for i in nums:print(f"列表中的元素为:{i}")list_for()
示例结果:
列表中的元素为:1
列表中的元素为:2
列表中的元素为:0
列表中的元素为:3
列表中的元素为:0
列表中的元素为:1
注意:两种方式都可以实现列表遍历,其中while循环适用于任何循环场景,for循环适用于遍历容器的场景或者简单固定的循环场景。
今日就先到这里啦~ 各位看官,咱们改日再会~