多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Python核心语法(数据的逻辑处理)

Python核心语法(数据的逻辑处理) 目录流程控制语句条件判断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: 条件不成立,执行此操作需求:根据用户输入年份,判断这一年是闰年还是平年.非整百年份,且能被4整除的年份是闰年整百年份(例如1900 2000年)必须能被400整除才是闰年课后作业:根据用户输入的数字,判定为奇数还是偶数根据用户输入的年龄,判定该用户是否成年根据用户输入的数字,判断该数字是正数还是负数(不考虑0)根据用户输入的考试分数,判断该分数是否及格了(大于60即为及格)if...elif...elseelif可以看作为第二个if,当一个条件不足以满足需求,elif便会应运而来注意:满足第一个条件时候,就会跳过elif中的条件,反之则会继续向下判定elif中的条件(其实在我看来if和elif就是俩代码块,一个胡同里的街坊,两家该咋过咋过谁也不掺和谁生活)案例:输入用户名和密码进行登录用户名,密码为 admin/6688 或 root/1112 再或者 zhangsan/123456,则登录成功,反之失败课后作业:1.根据输入的成绩,判定成绩等级大于等于85为优秀60-85为及格否则不及格2.购物折扣计算:根据输入的购物车的商品总额,以及如下折扣规则,计算实际应支付的金额金额 500:8折300 金额 500:9折100 金额 300:95折金额 100:无折扣案例根据输入的三个边的边长(正整数),判定是等边三角形 等腰三角形 普通三角形 还是不能构成三角形三角形判定流程能否构成三角形任意两边之和大于第三边且边长均为正整数已符合等边三角形a b c等腰三角形a b或b c或a c且满足三角形条件普通三角形满足三角形条件但三边互不相等课后作业:根据用电度数计算电费第一档: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,循环正常结束时执行案例:打印十遍人生苦短,我学Pythoni 0 while i 10: i 1 print(人生苦短,我学Python) else: print(任务执行完毕)计算1-100所有数字的和i 1 total 0 while i100: total i i 1 else: print(f1-100的和为 {total})计算1-100所有偶数的和i 0 total 0 while i100: if i%20: total i i 1 print(f1-100所有偶数的和为 {total})for循环while循环是通过条件表达式来控制是否要进行下一次循环的而for循环,本质上是一种轮询遍历机制,对一批内容进行逐个处理# for循环结构 for 元素 in 待处理数据集: 循环体代码(对元素进行处理) else: 循环结束时,执行的代码小结:1.for循环的语法格式for 元素 in 待处理数据集 循环体代码(对元素进行处理) else: 不满足循环条件时,执行的操作2.for循环与while循环的场景while循环:用于在某个条件满足时一直循环,循环的次数通常是未知的,只知道循环开始/结束的条件.(关注的是循环的条件)for循环:用于对“可迭代对象”(比如列表、字符串、或者range)进行遍历或已知次数的循环.(关注的是遍历每一个元素)用人话讲:看得到尽头(例如循环完一张表上的内容)的用for,看不到尽头(例如需要外部其他条件进行插手否则永不停歇)的用whilerange语句作用:生成制定规则的数字序列用法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(f1-100的所有奇数和为{total})# 简化版 total 0 for i in range(1,101,2): total i print(f1加到100的奇数总额为{total})# 2.计算100-500之间所有3的倍数的数字之和 total 0 for i in range(100,501): if i%30: total i print(f100-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,i1): print(f{j}*{i}{i*j},end\t) print()课后作业:1.根据输入的直角边的边长,打印等腰直角三角形2.根据输入的数字,打印对应的数字金字塔# 2.根据输入的数字,打印对应的数字金字塔 num int(input(请输入数字:)) for i in range(1,num1): # 确定行数 for j in range(1,num-i1): # 确定空行 print( ,end ) for k in range(1,i1): print(*,end ) print()3.打印国际象棋棋盘# 打印国际象棋 for i in range(8): #一共多少行 for j in range(8): #黑白判断输出 if (ij)%20: 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 numrandom_number: print(你输的数字大了) elif numrandom_number: print(你输入的数字小了) elif numrandom_number: print(恭喜你,输入正确) break需求1:将1-1000之间(含1000)所有的5的倍数的数字累加起来total 0 for i in range(1,1001): #遍历划分范围 if i%50: total i print(f1-1000之内所有5的倍数数字加起来是{total})需求2:统计字符串asdfuhasoidhnoiasoisahn字符串中有多少a和dzfc asdfuhasoidhnoiasoisahn a_total 0 d_total 0 for i in zfc: #限制遍历范围 if ia: a_total 1 elif id: d_total 1 print(f字符串中一共有{a_total}个a) print(f字符串中一共有{d_total}个d)
返回列表