FastAPI+Vue3零基础开发ERP系统项目实战课 20240819上课笔记 元组集合分支语句

122 篇文章 0 订阅
51 篇文章 0 订阅

遗留的问题

有个问题?我们怎么通过Python代码找到李四的索引是多少?

字典,元组,集合,分支,循环,函数

  • 2、Python面向对象:类,对象,方法,继承
  • 3、FastAPI
  • 4、MySQL8
  • 5、SQLModel,和FastAPI框架是同一个作者,两者结合比较好用,但是学习成本较高,使用难度稍大
  • 6、Vue3
  • 7、Tailwindcss
  • 8、Ant Design Vue,UI组件库
  • 9、数据同步:有一个API,这个API提供了一些数据,需要在ERP系统中进行展示。
  • 10、登录注册需要吗?需要
  • 11、第三方平台管理:对接哪些接口平台飞书,钉钉,聚水潭等等
  • 12、用户管理
  • 13、Docker
  • 14、Linux
  • 15、Nginx
  • 16、项目部署实战

练习:查找数组元素的索引

假设我有一个数组,[1,2,3,33,44,55],想要找到33的索引是多少?

编写Python代码实现?

arr = [1, 2, 3, 33, 44, 55]
target = 33

index = 0
for v in arr:
    print(v)
    if v == target:
        print("找到了索引:", index)
        break
    index += 1

print(arr[index])

这个代码虽然能够实现查找索引的功能,但是代码比较冗余。

  • 1、其实我们遍历的时候,就可以直接获取数组的索引,而不需要额外定义一个变量
  • 2、我们查找索引的功能非常的通用,可以封装为一个方法
  • 3、列表本身是否有查找元素索引的方法?

数组查找索引的内置方法

arr = [1, 2, 3, 33, 44, 55]
target = 33

print(arr.index(target))

这个方法虽然便捷,但是也有局限性。比如,如果我存储的元素是一个字典的话,还能不能查找呢?

元素是字典的列表

arr = [{"name": "张三"}, {"name": "李四"}, {"name": "王五"}]
target = {"name": "李四"}

print(arr.index(target))

这种方法确实是能够查询出结果的,但是当元素变得更加复杂以后,就不行了。

更复杂的案例

arr = [
    {"name": "张三", "age": 13},
    {"name": "李四", "age": 23},
    {"name": "王五", "age": 33},
]
target_name = "李四"

这个时候,我们只知道name,不知道age,就没法使用index去进行查找了,还是得用我们的老办法。

arr = [
    {"name": "张三", "age": 13},
    {"name": "李四", "age": 23},
    {"name": "王五", "age": 33},
]
target_name = "李四"

index = 0
for v in arr:
    print(v)
    if v["name"] == target_name:
        print("找到了索引:", index)
        break
    index += 1

print(arr[index])

上面使用我们自己写的方法找到了索引,但是依旧存在代码冗余的情况,实际上我们有更简洁的代码能够直接找到索引。

切片回顾

  • 1、切片能从一个数组中截取一个片段,得到的是一组数据
  • 2、切片有三个参数:开始索引,结束索引,步长
  • 3、开始索引的默认值0,结束索引默认值数组长度,步长默认值1

range内置函数

range类似于一个切片,也有三个参数:

  • 开始值,默认0
  • 结束值,必传,没有默认值
  • 步长,默认1

和切片不同的是,结束值不能为空,也就是没有默认值。

range一般用来和for进行配合,得到固定次数的循环,比如循环1-10。

for i in range(1, 11):
    print(i)

通过range可以遍历数组的索引

因为range的开始值默认是0,索引也是从0开始的。而结束值如果是数组长度的话,刚好遍历出来的就是数组的索引。

arr = ["a", "b", "c"]

for i in range(len(arr)):
    print(i, arr[i])

练习:找李四的索引

要求使用 for i in range

arr = [
    {"name": "张三", "age": 13},
    {"name": "李四", "age": 23},
    {"name": "王五", "age": 33},
]
target_name = "李四"

for i in range(len(arr)):
    print(i, arr[i])
    if arr[i]["name"] == target_name:
        print("找到了索引:", i)
        break

在这里插入图片描述

元组

元组可以理解为长度固定的数组。

元组一旦被声明,元素就不可用增加和删除,只能访问。

元组的基本用法:

# 空元组
t = tuple()
print(t, type(t))

# 有元素的元组
t2 = (1, 2, 3)
print(t2, type(t2))

# 直接遍历元组
for v in t2:
    print(v)

# 通过索引访问元组
for i in range(len(t2)):
    print(t2[i])

元组一般用于数据结构明确,长度的固定的数据结构。

在真实的开发中,我们会使用MySQL数据库,在Python,我们把数据从MySQL中查询出来,实际上第一时间得到的数据结构,就是一个元组。

还有就是我们后面会学习函数,函数的参数,本质上也是一个元组。

集合

集合是和元组差不多简单的一种结构。

集合也是一种特殊的数组,只不过集合的元素是不可以的重复,而且集合拥有自动去重的功能。

在真实的开发中,一旦数据需要去重,我们一般都回考虑将数据转换为集合,实现自动去重。

举一个简单的例子。

arr = [11, 11, 22, 22, 333, 333]

s = set(arr)
print(s)

使用集合一定要注意,集合这种数据结构是无序的,哪怕你是一个本来有序的数组,转换为集合以后也会变成无序的。

所以,如果你需要的是一个有序的数据结构,使用集合时一定要慎重。

集合求交集

交集指的是两个集合中共有的部分。

s1 = {1, 2, 3}
s2 = {2, 3, 4}

s3 = s1 & s2
print(s3)

集合求并集

并集指的是两个集合中,只要有一个集合有的数据。

s1 = {1, 2, 3}
s2 = {2, 3, 4}

s3 = s1 | s2
print(s3)

集合求差集

差集指的是一个集合中,去除另一个集合有的数据之后的数据。

s1 = {1, 2, 3}
s2 = {2, 3, 4}

s3 = s1 - s2
print(s3)

if语句格式1

if 条件:
	语句

如果条件成立则执行语句,否则不执行任何代码。

if True:
    print("打印。。。")

if False:
    print("不打印。。。")

if语句格式2

if 条件:
	语句1
else:
	语句2

如果条件成立,则执行语句1,否则执行语句2,语句1和语句2一定会且只有一个被执行。

if True:
    print("打印。。。")
else:
    print("不打印。。。")

if False:
    print("不打印。。。")
else:
    print("打印了。。。")

if语句格式3

if 条件1:
	语句1
elif 条件2:
	语句2
else:
	语句3

如果条件1成立则执行语句1,如果条件2成立则执行语句2,中间可以有任意多个条件,如果所有条件都不成立,则执行语句3。

weekday = 3  # 一周的第三天,星期三

if weekday == 1:
    print("星期一")
elif weekday == 2:
    print("星期二")
elif weekday == 3:
    print("星期三")
elif weekday == 4:
    print("星期四")
elif weekday == 5:
    print("星期五")
elif weekday == 6:
    print("星期六")
elif weekday == 7:
    print("星期天")
else:
    print("错误的数字")

练习:判断月份

从控制台录入一个1-12的整数,通过整数,判断是几月。比如1是一月,3是三月,12是十二月。

month = input("请输入1-12的整数:")

month = int(month)

if month == 1:
    print("一月")
elif month == 2:
    print("二月")
elif month == 3:
    print("三月")
elif month == 4:
    print("四月")
elif month == 5:
    print("五月")
elif month == 6:
    print("六月")
elif month == 7:
    print("七月")
elif month == 8:
    print("八月")
elif month == 4:
    print("九月")
elif month == 5:
    print("十月")
elif month == 6:
    print("十一月")
elif month == 7:
    print("十二月")

else:
    print("错误的数字")

总结

  • 1、元组,固定长度的数组,不能增加元素和删除元素
  • 2、集合,无序的数组,且元素不可以重复,具有自动去重功能
  • 3、if语句,有三种分支,单分支if,双分支if-else,多分支if-elif-else
  • 4、一些练习

假设我们现在想要根据输入月份,判断是哪个季节,怎么做呀?

  • 输入1:一月,12月,1月,2月是冬季
  • 输入8:八月,夏季

作为思考题,有时间就做一下,下节课开始我们先讲这个。

遗留的问题

循环,函数

  • 2、Python面向对象:类,对象,方法,继承
  • 3、FastAPI
  • 4、MySQL8
  • 5、SQLModel,和FastAPI框架是同一个作者,两者结合比较好用,但是学习成本较高,使用难度稍大
  • 6、Vue3
  • 7、Tailwindcss
  • 8、Ant Design Vue,UI组件库
  • 9、数据同步:有一个API,这个API提供了一些数据,需要在ERP系统中进行展示。
  • 10、登录注册需要吗?需要
  • 11、第三方平台管理:对接哪些接口平台飞书,钉钉,聚水潭等等
  • 12、用户管理
  • 13、Docker
  • 14、Linux
  • 15、Nginx
  • 16、项目部署实战
  • 12
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python私教

创业不易,请打赏支持我一点吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值