Rs知识库 · Python 零基础入门系列 · 第二篇
上一篇我们学会了变量和输入输出,但程序只能一条路走到黑——它不会判断、不会选择、不会重复。这一篇,我们给程序装上"大脑":用 if/else 做选择,用 for/while 做重复。学完之后,你就能做出「密码强度检测器」这样的实用工具了。
本文目录
①比较运算符与逻辑运算符
②if / elif / else:让程序做选择
③for 循环:已知次数的重复
④while 循环:条件循环与 break/continue
⑤实战项目:智能密码强度检测器
⑥动手练习与总结
比较运算符:判断 True 还是 False
程序做选择之前,得先能"判断"。比较运算符就是用来做判断的工具,它的结果只有两种:True(真)或 False(假)。这就是上一篇提到的 bool 布尔类型派上用场的时候。
# 比较运算符print(5 == 5) # True 等于print(5 != 3) # True 不等于print(10 > 7) # True 大于print(3 >= 3) # True 大于等于print(2 < 1) # False 小于
注意:== 是"判断是否相等",= 是"赋值"。两个等号和一个是等号完全不同,这是初学者最常踩的坑。
除了比较运算符,还有逻辑运算符and、or、not,用来组合多个条件:
age = 20has_id = True# and:两个条件都要满足print(age >= 18and has_id) # True# or:满足一个就行print(age < 10or age > 60) # False# not:取反print(not has_id) # False
if / elif / else:让程序做选择
没有条件判断的程序,只能一条路走到黑。有了 if,程序就能根据情况走不同的路。想象你站在路口——如果下雨就带伞,否则就不带:
weather = input("今天天气如何?")if weather == "下雨":print("带伞出门")elif weather == "晴天":print("涂防晒")else:print("正常出门")
⚠️ 缩进很重要!Python 用缩进(4 个空格)表示"这段代码属于上面的 if"。缩进错了程序会报 IndentationError。这是 Python 和其他语言最大的区别——在 Java、C++ 里缩进只是好看,在 Python 里缩进是语法。
再看一个更实用的例子——成绩等级判定:
score = int(input("请输入你的分数:"))if score >= 90:print("优秀 🌟")elif score >= 80:print("良好 👍")elif score >= 60:print("及格 ✓")else:print("不及格 ✗,继续加油!")
🎯 if/elif/else 的判断顺序是从上到下的。一旦某个条件为 True,就执行对应的代码块,后面的条件不再检查。所以要把最严格的条件放前面。
语法要点速记:
●每个 if / elif / else 后面都要加冒号 :
●缩进用 4 个空格,不要混用 Tab 和空格
●elif 可以有多个,else 最多一个(也可以不写)
●if 可以嵌套使用(if 里面再写 if),但不要超过 3 层,否则代码难以阅读
for 循环:已知次数的重复
生活中很多事情需要重复:每天跑步 5 圈、打印 100 份文件、遍历一个列表里的所有数据。for 循环就是用来做"已知要重复多少次"的事情。
# 打印 1 到 5for i inrange(1, 6):print(i)# 输出:1 2 3 4 5(每个一行)
range(1, 6) 生成从 1 到 5 的数字序列——注意不包含 6,这是 Python 的惯例(左闭右开)。range(10) 等价于 range(0, 10),生成 0 到 9。
range(n)
0, 1, 2, ..., n-1
range(a, b)
a, a+1, ..., b-1
range(a, b, step)
每隔 step 取一个数
range(1, 10, 2)
1, 3, 5, 7, 9(奇数)
for 循环还有一个非常实用的用法——遍历字符串。这在后续项目中会用到:
# 逐字符遍历for char in"Python":print(char)# 输出:P y t h o n(每个一行)# 用 enumerate 同时获取索引和值for i, char inenumerate("Python"):print(f"第{i}个字符是 {char}")
while 循环:条件循环
for 是"我知道要重复几次",while 是"我不知道要重复几次,但只要条件满足就一直做"。比如:不断让用户输入,直到输入正确为止。
# 不断让用户输入,直到输入"退出"whileTrue: answer = input("说点什么(输入"退出"结束):")if answer == "退出":break# 跳出循环print(f"你说的是:{answer}")
break vs continue:两种"跳过"
break
立刻停止!整个循环结束,不再执行后续任何迭代。
continue
跳过这一次!回到循环开头,继续下一次迭代。
⚠️ 用 while 时一定要确保循环条件最终会变为 False(或者有 break 跳出),否则就是死循环——程序卡住不动,只能强制关闭。
来看一个 continue 的例子——只打印奇数:
for i inrange(1, 11):if i % 2 == 0: # 如果是偶数continue# 跳过,不打印print(i) # 只打印奇数# 输出:1 3 5 7 9
实战项目:智能密码强度检测器
学了条件判断和循环,是时候做一个有实际用途的项目了。我们来做一个「密码强度检测器」——用户输入密码,程序从长度、大写字母、数字、特殊字符四个维度打分,给出弱/中/强/很强的评级,并提供改进建议。
多层 if-elif-elsefor 遍历字符逻辑组合判断while 循环交互
完整代码:新建 password_checker.py 并运行:
# 智能密码强度检测器defcheck_password(pwd): score = 0 feedback = []# 检查长度iflen(pwd) >= 8: score += 1else: feedback.append("密码长度应至少 8 位")# 检查大写字母ifany(c.isupper() for c in pwd): score += 1else: feedback.append("建议加入大写字母")# 检查数字ifany(c.isdigit() for c in pwd): score += 1else: feedback.append("建议加入数字")# 检查特殊字符 special = "!@#$%^&*"ifany(c in special for c in pwd): score += 1else: feedback.append("建议加入特殊字符(如 !@#)")# 评级 levels = ["弱 🔴", "中 🟡", "强 🟢", "很强 🛡️"]return levels[score], feedback# 主程序:循环检测直到密码合格print("=== 密码强度检测器 ===")whileTrue: pwd = input("\n请输入密码:") level, tips = check_password(pwd)print(f"强度评级:{level}")if"强"in level or"很强"in level:print("🎉 密码合格!")breakprint("改进建议:")for tip in tips:print(f" → {tip}")
这个程序用到了本篇学到的所有核心知识:用 def 定义函数(把检测逻辑封装起来),用 for 遍历密码的每个字符,用 if/else 做判断,用 while 循环让用户反复尝试直到密码合格。
💡 代码解读
any() 函数:any(c.isupper() for c in pwd) 的意思是"密码中有没有大写字母?有任意一个是就返回 True"。
列表索引取评级:levels[score] 用分数直接取出对应等级的文字,比写一堆 if/elif 简洁得多。
while True + break:这是"反复交互直到满意"的经典模式,在菜单系统、游戏中非常常见。
动手练习
1
闰年判断器简单
输入年份,判断是否为闰年。规则:能被 4 整除且不能被 100 整除,或能被 400 整除。
2
九九乘法表中等
用两层 for 循环打印 9×9 乘法表,注意用 f-string 对齐格式让输出整齐。
3
石头剪刀布中等
模拟石头剪刀布游戏:用户出拳,电脑用 random.choice() 随机出拳,用 if/elif 判断胜负。
总结与下一步
恭喜你完成了编程的第二步!现在你的程序不再只能"一条路走到黑"了,它学会了根据条件做选择,也学会了重复执行任务。在这篇文章中,你掌握了:
●比较运算符(==、!=、>、<)和逻辑运算符(and、or、not)
●if / elif / else 条件分支,让程序做选择
●for 循环搭配 range() 做已知次数的重复
●while 循环搭配 break/continue 做条件循环
●完成了一个密码强度检测器,综合运用所有流程控制
下一篇预告
数据容器——组织和管理数据。你将学到列表(List)、字典(Dictionary)、元组和集合,掌握增删改查和切片操作,做一个「通讯录管理系统」。
列表 List字典 Dict列表推导式通讯录项目
Rs知识库 · Python 零基础入门系列
觉得有用?点个「在看」支持一下 👇