☰
Python核心语法(数据的逻辑处理)
2026/11/1 11:58:24 网站建设 项目流程

目录

流程控制语句

条件判断

if语句基本格式

案例:

if语句进阶

课后作业:

if...elif...else

案例:

课后作业:

案例

课后作业:

Extra:断点

模式匹配(match)

案例:简易计算器

课后作业:简单游戏指令系统

小结:

循环

while循环

案例:

for循环

小结:

range语句

案例:

小结:

嵌套循环

案例

课后作业:

案例

本案例新增知识点:


流程控制语句

  • 条件判断
  • 模式匹配
  • 循环

条件判断

  • if语句基本格式
  • if语句进阶
  • 案例

if语句基本格式
  • 场景:只有满足指定条件,才会执行对应的代码逻辑

# if条件判断基本格式

if 要判断的条件:
条件成立时,要执行对应的操作

score = 200 if score >= 680: print("欢迎你,来清华读书") else: print("欢迎你,来家里蹲读书")

补充说明:类似if下的缩进通常是四个空格的长度,也就是一个Tab键的距离

案例:
  • 需求:完成B站登录功能的实现(正确账号为1112,密码为0000)

if语句进阶
# if...else 结构 if 条件: 条件成立,执行此操作 else: 条件不成立,执行此操作
  1. 需求:根据用户输入年份,判断这一年是闰年还是平年.
  • 非整百年份,且能被4整除的年份是闰年
  • 整百年份(例如1900 2000年)必须能被400整除才是闰年

课后作业:
  1. 根据用户输入的数字,判定为奇数还是偶数
  2. 根据用户输入的年龄,判定该用户是否成年
  3. 根据用户输入的数字,判断该数字是正数还是负数(不考虑0)
  4. 根据用户输入的考试分数,判断该分数是否及格了(大于60即为及格)

if...elif...else

elif可以看作为第二个if,当一个条件不足以满足需求,elif便会应运而来

注意:满足第一个条件时候,就会跳过elif中的条件,反之则会继续向下判定elif中的条件
(其实在我看来if和elif就是俩代码块,一个胡同里的街坊,两家该咋过咋过谁也不掺和谁生活)

案例:
  1. 输入用户名和密码进行登录
  • 用户名,密码为 admin/6688 或 root/1112 再或者 zhangsan/123456,则登录成功,反之失败

课后作业:

1.根据输入的成绩,判定成绩等级

  • 大于等于85为优秀
  • 60-85为及格
  • 否则不及格

2.购物折扣计算:根据输入的购物车的商品总额,以及如下折扣规则,计算实际应支付的金额

  • 金额 >= 500:8折
  • 300 <= 金额 <=500:9折
  • 100 <= 金额 <300:95折
  • 金额 < 100:无折扣

案例
  • 根据输入的三个边的边长(正整数),判定是等边三角形 等腰三角形 普通三角形 还是不能构成三角形

三角形判定流程

  1. 能否构成三角形:任意两边之和大于第三边(且边长均为正整数,已符合)

  2. 等边三角形:a == b == c

  3. 等腰三角形:a == b或b == c或a == c(且满足三角形条件)

  4. 普通三角形:满足三角形条件,但三边互不相等

课后作业:
  • 根据用电度数计算电费
  • 第一档:2880度以下,电费单价为0.4883元/度
  • 第二档:2880-4800度,电费单价为0.5383元/度
  • 第三档:4800度以上,电费单价为0.7883元/度

Extra:断点

在这个小案例中老师讲到了断点功能的使用

断点需要与调试功能进行配合使用,其功能就像是将轨道截取一段下来,代码走到了断点处就不会自动运行,此时需要使用者一步步手动进行下一步的操作

如果想要取消断点,再次点击一次红色的断点即可


模式匹配(match)

  • 结构模式匹配就是用一个清晰的 模板 去精准的匹配数据的结构和内容,匹配成功则执行相应操作

match...case匹配范例:

#原版本: day = 6 if day == 1: print('周一') if day == 2: print('周二') if day == 3: print('周三') if day == 4: print('周四') if day == 5: print('周五') if day == 6 or day == 7: print('休息')
#新版本 day = 8 match day: case 1: print('周一') case 2: print('周二') case 3: print('周三') case 4: print('周四') case 5: print('周五') case 6 | 7: # |这个玩意是or的意思 print('休息') case _: # _这个玩意是else的意思 print('其他情况下执行')
案例:简易计算器

课后作业:简单游戏指令系统
玩家输入对应操作
w/W角色向上移动
s/S角色向下移动
a/A角色向左移动
d/D角色向右移动
' '(空格)角色跳跃
j/J角色进攻
esc/ESC退出游戏

小结:

1.match...case语法

match 表达式: case 值1: 操作1 case 值2 if 条件表达式: 操作2 case 值3 | 值4: 操作4 case _: 默认操作

2.match...case应用场景

  • match:基于某个变量的多个固定值进行分支判断时,可以使用match模式匹配
  • if:条件判断涉及复杂的逻辑判定,范围比较及组合条件时使用

循环

  • while循环
  • for循环
  • 嵌套循环
  • 案例
while循环
# while语法结构 while 条件表达式: 循环体语句1 循环体语句2 ...
# while语法结构 while 条件表达式: 循环体语句1 循环体语句2 ... else: 条件为false,循环正常结束时执行

案例:

打印十遍"人生苦短,我学Python"

i = 0 while i < 10: i += 1 print('人生苦短,我学Python') else: print('任务执行完毕')

计算1-100所有数字的和

i = 1 total = 0 while i<=100: total += i i += 1 else: print(f'1-100的和为 {total}')

计算1-100所有偶数的和

i = 0 total = 0 while i<=100: if i%2==0: total += i i += 1 print(f'1-100所有偶数的和为 {total}')
for循环
  • while循环是通过条件表达式来控制是否要进行下一次循环的
    而for循环,本质上是一种轮询遍历机制,对一批内容进行逐个处理

# for循环结构 for 元素 in 待处理数据集: 循环体代码(对元素进行处理) else: 循环结束时,执行的代码
小结:

1.for循环的语法格式

for 元素 in 待处理数据集 循环体代码(对元素进行处理) else: 不满足循环条件时,执行的操作

2.for循环与while循环的场景

  • while循环:用于在某个条件满足时一直循环,循环的次数通常是未知的,只知道循环开始/结束的条件.(关注的是循环的条件)
  • for循环:用于对“可迭代对象”(比如列表、字符串、或者range)进行遍历或已知次数的循环.(关注的是遍历每一个元素)

用人话讲:看得到尽头(例如循环完一张表上的内容)的用for,

看不到尽头(例如需要外部其他条件进行插手否则永不停歇)的用while

range语句
  • 作用:生成制定规则的数字序列
  • 用法1:range(end) -> 获取一个从零开始到end结束的数字序列(不含end本身从0开始)

# range(5)获取的数据就是 0 1 2 3 4

  • 用法2:range(start,end) -> 获取一个从start开始,到end结束的数字序列(不含end本身)

# range(2,8) 获取的数据就是 2 3 4 5 6 7

  • 用法3:range(start,end,step) -> 获取一个从start开始,到end结束的数字序列,step步长(不含end本身)

# range(0,10,2)获取的数据就是 0 2 4 6 8

案例:

1.计算1-100之间所有奇数之和

2.计算100-500之间所有3的倍数的数字之和

# 计算1-100之间所有奇数之和 total = 0 for i in range(1,101): if i%2!=0: total += i print(f'1-100的所有奇数和为{total}')
# 简化版 total = 0 for i in range(1,101,2): total += i print(f'1加到100的奇数总额为{total}')
# 2.计算100-500之间所有3的倍数的数字之和 total = 0 for i in range(100,501): if i%3==0: total += i print(f'100-500之间所有3倍数的数字之和为{total}')

小提示:range是一个很双标的玩意,左侧是闭区间,右侧是开区间,所以以后要养成右侧多加1个数的习惯

小结:

1.range(..)语句的作用是什么?

  • 生成指定规则的数字序列
  • 用法:

range(end)

range(start,end)

range(strat,end,step)

嵌套循环
  • 语法:
# for循环结构 for 元素 in 待处理的数据集1: 循环体的代码1 循环体的代码2 ... for 元素 in 待处理数据集2: 循环体的代码1 循环体的代码2 ... ...

⬆外层循环一次,内层循环N次 就像是一块钟表,时针挪动一个数字分针就得跟着转动一圈

案例

打印一个长度为m宽为n的长方形

# 打印一个长为9宽为4的长方形 for i in range(4): print('* * * * * * * * *') print('打印完毕')

案例:

打印乘法口诀表:

for i in range(1,10): for j in range(1,i+1): print(f'{j}*{i}={i*j}',end='\t') print('')
课后作业:

1.根据输入的直角边的边长,打印等腰直角三角形

2.根据输入的数字,打印对应的数字金字塔

# 2.根据输入的数字,打印对应的数字金字塔 num = int(input('请输入数字:')) for i in range(1,num+1): # 确定行数 for j in range(1,num-i+1): # 确定空行 print(' ',end=' ') for k in range(1,i+1): print('*',end=' ') print('')

3.打印国际象棋棋盘

# 打印国际象棋 for i in range(8): #一共多少行 for j in range(8): #黑白判断输出 if (i+j)%2==0: print('⬜',end=' ') else: print('⬛',end=' ') print('')
案例
需求:根据输入的用户名密码执行登陆操作,具体要求如下: 1.正确输入为admin/6688 zhangsan/123456 qhc/8866 2.输入用户名和密码进行登录,直到登陆成功,程序结束运行,如若登陆失败,则继续输入用户名和密码进行登录 3.输入的用户名和密码不能为空 4.登录成功,输入"登陆成功,进入B站首页" 5.登录失败:输入"用户名或密码错误,请重新输入"
while True: user = input('请输入您的用户名:') password = input('请输入您的密码:') if user=='' or password == '': print('用户名或密码不可为空') continue if user == 'admin' and password == '6688': print('登录成功,进入B站首页') break elif user == 'zhangsan' and password == '123456': print('登录成功,进入B站首页') break elif user == 'qhc' and password == '8866': print('登录成功,进入B站首页') break else: print('用户名或密码错误,请重新输入')
本案例新增知识点:

在while循环内,可使用while True的语法进行无限循环

当我前置条件满足不想要继续向下执行其他代码时用continue

当条件满足需要跳出循环时,用break进行跳出

import random random_number = random.randint(1,100) while True: num = int(input('请输入你所猜想的数字:')) if num=='': print('数字不可为空!') continue elif num>random_number: print('你输的数字大了') elif num<random_number: print('你输入的数字小了') elif num==random_number: print('恭喜你,输入正确') break
需求1:将1-1000之间(含1000)所有的5的倍数的数字累加起来
total = 0 for i in range(1,1001): #遍历划分范围 if i%5==0: total += i print(f'1-1000之内所有5的倍数数字加起来是{total}')
需求2:统计字符串"asdfuhasoidhnoiasoisahn"字符串中有多少a和d
zfc = 'asdfuhasoidhnoiasoisahn' a_total = 0 d_total = 0 for i in zfc: #限制遍历范围 if i=='a': a_total += 1 elif i=='d': d_total += 1 print(f'字符串中一共有{a_total}个a') print(f'字符串中一共有{d_total}个d')

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询