Python 运算符、条件判断与循环控制,让程序从顺序执行变成真正会做事

发布时间:2026/6/15 21:20:00

Python 运算符、条件判断与循环控制,让程序从顺序执行变成真正会做事 第一篇文章里我们让程序能接收输入、保存数据、输出结果。但那种程序还是太老实了。它只能从上到下一行一行执行。真实程序一定会遇到选择和重复比如密码对不对成绩是否及格订单要不要打折一批数据要不要逐个处理。这篇文章讲两个核心能力条件判断让程序走不同分支。循环控制让程序重复处理任务。把这两个能力连起来你就能写出大量真正有用的小程序。运算符先掌握三类运算符很多但入门阶段先掌握三类。算术运算符print(103)print(10-3)print(10*3)print(10/3)print(10//3)print(10%3)print(2**3)这里有几个容易混淆的点。/是普通除法结果通常是小数。//是整除只保留整数部分。%是取余数经常用来判断能不能整除。**是幂运算。比较运算符print(103)print(103)print(103)print(103)print(103)print(10!3)比较结果只有两个True或False。逻辑运算符age20has_ticketTrueprint(age18andhas_ticket)print(age18orhas_ticket)print(nothas_ticket)and表示两个条件都成立。or表示至少一个条件成立。not表示取反。短路逻辑不只是语法细节and和or有短路逻辑。print(Falseand1/0)这行不会报错。因为and左边已经是False整体不可能为真右边不会继续计算。再看print(Trueor1/0)也不会报错。因为or左边已经是True整体一定为真。实际写代码时短路逻辑经常用来避免空值错误nameifnameandlen(name)3:print(名字长度大于 3)else:print(名字为空或长度不够)如果name是空字符串后面的len(name) 3不会造成问题。if条件判断最基本的判断scoreint(input(请输入成绩))ifscore60:print(及格)else:print(不及格)Python 用缩进表示代码块。属于if的代码必须缩进。多分支判断scoreint(input(请输入成绩))ifscore90:print(优秀)elifscore80:print(良好)elifscore60:print(及格)else:print(需要继续努力)分支顺序很重要。如果你先写score 60那么 90 分也会先命中及格分支后面的优秀分支就没机会执行。真值判断Python 里不只有True和False能放进if。下面这些值会被当成假FalseNone00.0[]{}set()比如nameinput(请输入姓名)ifname:print(f你好{name})else:print(你还没有输入姓名)空字符串会被当成假。这类写法很常用但初学阶段要知道它背后的规则不要觉得神秘。登录判断案例ok_account18888888888ok_password666888accountinput(请输入账号)passwordinput(请输入密码)ifaccountok_accountandpasswordok_password:print(登录成功)else:print(账号或密码错误)流程图否是是否输入账号和密码账号正确登录失败密码正确登录成功这个案例看起来简单但包含了实际系统里很重要的思想多个条件共同决定结果。闰年判断案例规则能被 4 整除但不能被 100 整除或者能被 400 整除就是闰年。yearint(input(请输入年份))normal_leapyear%40andyear%100!0century_leapyear%4000ifnormal_leaporcentury_leap:print(f{year}是闰年)else:print(f{year}是平年)这里不要急着把所有条件塞进一行。拆成normal_leap和century_leap读起来更清楚。match适合处理固定选项Python 3.10 之后支持match。commandinput(请输入命令)matchcommand:casestart:print(开始运行)casestop:print(停止运行)caserestart:print(重新启动)case_:print(未知命令)如果是简单范围判断比如成绩等级用if更自然。如果是多个固定命令比如菜单选择match更清楚。循环解决重复问题判断解决选择。循环解决重复。循环的通用流程是是否进入循环是否继续执行循环体更新状态或进入下一个元素退出循环写循环时不要先背语法先想三件事重复做什么。什么条件下继续。什么条件下停止。while循环while适合“不确定循环几次但知道停止条件”的场景。passwordwhilepassword!666888:passwordinput(请输入密码)print(密码正确)只要密码不正确就继续输入。计数循环count1whilecount5:print(f第{count}次循环)countcount1count count 1非常重要。忘了它就会死循环。for循环for适合遍历一批数据。students[小明,小红,小刚]forstudentinstudents:print(f{student}欢迎学习 Python)每次循环列表里的一个元素会交给变量student。遍历字符串wordPythonforcharinword:print(char)字符串也是可遍历对象。range()的完整用法foriinrange(5):print(i)输出 0 到 4。常见写法range(5)# 0, 1, 2, 3, 4range(1,6)# 1, 2, 3, 4, 5range(1,10,2)# 1, 3, 5, 7, 9range()不包含结束值。这和后面学切片时的规则一致。循环里的三种常见模式第一种计数器。count0fornumberinrange(1,101):ifnumber%20:countcount1print(f偶数数量{count})第二种累加器。total0fornumberinrange(1,101):totaltotalnumberprint(total)第三种标志位。numbers[3,8,11,20]has_evenFalsefornumberinnumbers:ifnumber%20:has_evenTruebreakifhas_even:print(列表中有偶数)else:print(列表中没有偶数)这三种模式在真实代码里特别常见。break和continuebreak结束整个循环fornumberinrange(1,11):ifnumber5:breakprint(number)输出 1 到 4。continue跳过本次循环fornumberinrange(1,6):ifnumber3:continueprint(number)输出 1、2、4、5。选择标准很简单如果后面都不用做了用break。如果只是这一次不用做下一次还继续用continue。完整案例订单优惠批量计算需求用户输入多个订单金额输入q结束。金额满 200 打 8 折满 100 减 20否则原价。total_income0whileTrue:raw_amountinput(请输入订单金额输入 q 结束)ifraw_amountq:breakamountfloat(raw_amount)ifamount200:final_amountamount*0.8elifamount100:final_amountamount-20else:final_amountamount total_incometotal_incomefinal_amountprint(f本单应付{final_amount:.2f}元)print(f今日总收入{total_income:.2f}元)这个案例把判断和循环连起来了。循环负责持续处理订单。判断负责计算每一单的优惠规则。常见错误和修复把当成是赋值。是比较。age18ifage18:print(刚成年)忘记冒号错误示例if age 18 print(成年)正确ifage18:print(成年)死循环count1whilecount5:print(count)修复count1whilecount5:print(count)countcount1分支顺序错误错误score95ifscore60:print(及格)elifscore90:print(优秀)修复score95ifscore90:print(优秀)elifscore60:print(及格)练习猜数字游戏要求程序内置答案answer 7。用户反复输入数字。猜大了提示太大猜小了提示太小。猜对后结束。参考代码answer7whileTrue:guessint(input(请输入你猜的数字))ifguessanswer:print(太大了)elifguessanswer:print(太小了)else:print(猜对了)break能写出这个程序说明你已经把输入、类型转换、判断和循环串起来了。参考资料Python 官方流程控制教程https://docs.python.org/3/tutorial/controlflow.html

相关新闻