当前位置: 首页 > news >正文

3.条件判断:让程序学会做选择

条件判断:让程序学会做选择 🤔

🎯 前言:程序也需要"选择困难症"?

你有没有想过,为什么我们的大脑这么聪明?当你看到红绿灯时,大脑会自动判断:红灯停,绿灯行。当你感到饿了,大脑会告诉你:去吃饭。当你看到雨天,大脑会提醒你:带伞出门。

这就是条件判断的魔力!今天我们要教会Python程序也学会这种"智能选择",让它像人类一样,根据不同的情况做出不同的决定。

想象一下,如果程序只能按照固定的步骤执行,那多无聊啊!就像一个只会说"你好"的机器人,无论你问什么,它都只会回答"你好"。但是有了条件判断,程序就能变得聪明起来,能够根据不同的输入给出不同的回应。

📚 目录

  • 基础概念:程序的"大脑"
  • if语句:程序的第一个选择
  • if-else语句:非黑即白的世界
  • if-elif-else语句:多重选择的艺术
  • 比较运算符:程序的"眼睛"
  • 逻辑运算符:思维的连接器
  • 嵌套条件:复杂决策的层次
  • 实战项目:智能推荐系统
  • 进阶技巧:让判断更优雅
  • 常见问题与解决方案

🧠 基础概念:程序的"大脑"

什么是条件判断?

条件判断就像是程序的"大脑",它能够根据不同的情况做出不同的决定。就像你决定今天穿什么衣服一样:

  • 如果天气很热 → 穿短袖
  • 如果天气很冷 → 穿棉衣
  • 如果下雨 → 带雨伞

在Python中,我们使用 if 语句来实现条件判断。

布尔值:真假的世界

在开始学习条件判断之前,我们需要了解一个重要概念:布尔值(Boolean)。

# 布尔值只有两种:True(真)和 False(假)
is_sunny = True
is_raining = Falseprint(is_sunny)   # 输出:True
print(is_raining) # 输出:False

布尔值就像电灯开关,只有两种状态:开(True)或关(False)。

🎮 if语句:程序的第一个选择

基础语法

if 条件:# 如果条件为真,执行这里的代码代码块

让我们看一个简单的例子:

# 🌡️ 温度检测器
temperature = 30if temperature > 25:print("今天很热,记得多喝水!💧")

运行结果:

今天很热,记得多喝水!💧

缩进的重要性

Python使用缩进来表示代码块,这就像是给代码"排队":

# 正确的缩进
age = 18
if age >= 18:print("你是成年人了!🎉")print("可以独立做决定了!")# 错误的缩进(会报错)
if age >= 18:
print("这样写会报错!")  # 缩进不正确

生活化的例子

# 🏪 便利店购物助手
money = 50if money >= 10:print("💰 你有足够的钱买零食!")print("🍿 推荐买一包爆米花")if money >= 20:print("💰 你还可以买饮料!")print("🥤 推荐买一杯奶茶")if money >= 30:print("💰 你可以买更多东西!")print("🍫 再加一块巧克力如何?")

运行结果:

💰 你有足够的钱买零食!
🍿 推荐买一包爆米花
💰 你还可以买饮料!
🥤 推荐买一杯奶茶
💰 你可以买更多东西!
🍫 再加一块巧克力如何?

⚖️ if-else语句:非黑即白的世界

有时候,我们需要程序在两种情况之间做选择,这就需要用到 if-else 语句。

基础语法

if 条件:# 条件为真时执行代码块1
else:# 条件为假时执行代码块2

实用例子

# 🎲 猜数字游戏
import randomsecret_number = random.randint(1, 10)  # 生成1-10的随机数
guess = int(input("猜一个1-10之间的数字:"))if guess == secret_number:print("🎉 恭喜你,猜对了!")print(f"神秘数字就是 {secret_number}")
else:print("😅 很遗憾,猜错了!")print(f"神秘数字是 {secret_number}")
# 🏦 银行取款机
balance = 1000  # 账户余额
withdraw_amount = 500  # 想要取出的金额if withdraw_amount <= balance:balance = balance - withdraw_amountprint(f"💰 取款成功!您取出了 {withdraw_amount} 元")print(f"💳 账户余额:{balance} 元")
else:print("❌ 余额不足,无法取款")print(f"💳 当前余额:{balance} 元")

年龄判断器

# 🎂 年龄判断器
age = int(input("请输入您的年龄:"))if age >= 18:print("🎉 您已成年,可以:")print("📱 办理手机卡")print("💳 申请信用卡")print("🚗 考驾照")
else:print("🧒 您还未成年,请继续努力学习!")print("📚 专心读书是最重要的")print(f"🎈 还有 {18 - age} 年就成年了")

🌈 if-elif-else语句:多重选择的艺术

现实生活中,我们经常面临多个选择,而不仅仅是两个。这时候就需要用到 if-elif-else 语句。

基础语法

if 条件1:# 条件1为真时执行代码块1
elif 条件2:# 条件1为假,条件2为真时执行代码块2
elif 条件3:# 条件1、2都为假,条件3为真时执行代码块3
else:# 所有条件都为假时执行代码块4

成绩等级判断器

# 📊 成绩等级判断器
score = int(input("请输入您的考试成绩(0-100):"))if score >= 90:print("🏆 优秀!您的成绩是A等级")print("🎉 恭喜您,继续保持!")
elif score >= 80:print("👍 良好!您的成绩是B等级")print("💪 再努力一点就能达到A等级!")
elif score >= 70:print("😊 及格!您的成绩是C等级")print("📚 继续努力,争取更好的成绩!")
elif score >= 60:print("😌 勉强及格,您的成绩是D等级")print("⚠️ 需要更加努力学习!")
else:print("😞 很遗憾,您的成绩不及格")print("💪 不要灰心,下次一定能考好!")

智能天气助手

# 🌤️ 智能天气助手
weather = input("今天的天气如何?(晴天/阴天/雨天/雪天):")if weather == "晴天":print("☀️ 天气真好!建议:")print("🕶️ 戴上太阳镜")print("🧴 涂抹防晒霜")print("👕 穿轻薄的衣物")
elif weather == "阴天":print("☁️ 天气有点灰蒙蒙的,建议:")print("🧥 穿一件外套")print("📱 关注天气预报")
elif weather == "雨天":print("🌧️ 下雨了!建议:")print("☂️ 带上雨伞")print("👟 穿防滑的鞋子")print("🚗 开车要小心")
elif weather == "雪天":print("❄️ 下雪了!建议:")print("🧣 围上厚围巾")print("🧤 戴上手套")print("👢 穿保暖的靴子")
else:print("🤔 我不认识这种天气")print("请输入:晴天、阴天、雨天或雪天")

🔍 比较运算符:程序的"眼睛"

比较运算符就像程序的"眼睛",用来比较两个值的大小关系。

基础比较运算符

# 🔢 比较运算符大全
a = 10
b = 20print(f"a = {a}, b = {b}")
print(f"a == b: {a == b}")  # 等于
print(f"a != b: {a != b}")  # 不等于
print(f"a > b:  {a > b}")   # 大于
print(f"a < b:  {a < b}")   # 小于
print(f"a >= b: {a >= b}")  # 大于等于
print(f"a <= b: {a <= b}")  # 小于等于

运行结果:

a = 10, b = 20
a == b: False
a != b: True
a > b:  False
a < b:  True
a >= b: False
a <= b: True

字符串比较

# 🔤 字符串比较
name1 = "张三"
name2 = "李四"
name3 = "张三"print(f"'{name1}' == '{name2}': {name1 == name2}")  # False
print(f"'{name1}' == '{name3}': {name1 == name3}")  # True
print(f"'{name1}' != '{name2}': {name1 != name2}")  # True

实用的比较例子

# 🎮 游戏角色等级系统
player_level = 25
required_level = 20if player_level >= required_level:print("🎉 恭喜!您可以进入下一关")print(f"👤 您的等级:{player_level}")print(f"🎯 要求等级:{required_level}")
else:print("😅 等级不够,无法进入下一关")print(f"👤 您的等级:{player_level}")print(f"🎯 要求等级:{required_level}")print(f"💪 还需要升级 {required_level - player_level} 级")

🔗 逻辑运算符:思维的连接器

逻辑运算符就像思维的连接器,让我们能够组合多个条件进行复杂的判断。

三大逻辑运算符

# 🧠 逻辑运算符
# and:且,所有条件都必须为真
# or:或,至少有一个条件为真
# not:非,取反age = 25
has_license = True
has_money = True# 使用 and
if age >= 18 and has_license and has_money:print("🚗 您可以租车!")# 使用 or
weather = "雨天"
if weather == "雨天" or weather == "雪天":print("☂️ 记得带伞!")# 使用 not
is_weekend = False
if not is_weekend:print("💼 今天是工作日,要上班!")

复杂的逻辑判断

# 🏊 游泳馆入场检查
age = int(input("请输入您的年龄:"))
has_ticket = input("您有门票吗?(是/否):") == "是"
can_swim = input("您会游泳吗?(是/否):") == "是"if age >= 6 and has_ticket and can_swim:print("🏊 欢迎进入游泳馆!")print("🏊‍♂️ 请注意安全,享受游泳时光!")
elif age < 6:print("👶 年龄太小,不能独自游泳")print("👨‍👩‍👧‍👦 请在家长陪同下游泳")
elif not has_ticket:print("🎫 请先购买门票")print("💰 门票价格:成人30元,儿童15元")
elif not can_swim:print("🏊‍♂️ 为了您的安全,请先学会游泳")print("📚 我们提供游泳培训课程")
else:print("❓ 未知情况,请联系工作人员")

优先级的妙用

# 🎯 考试通过条件
math_score = 85
english_score = 75
chinese_score = 80# 使用括号明确优先级
if (math_score >= 80 and english_score >= 70) or chinese_score >= 90:print("🎉 恭喜通过考试!")print("📊 成绩详情:")print(f"   数学:{math_score}分")print(f"   英语:{english_score}分")print(f"   语文:{chinese_score}分")
else:print("😅 很遗憾,没有通过考试")print("💪 继续努力,下次一定能通过!")

🎭 嵌套条件:复杂决策的层次

有时候,我们需要在一个条件成立的前提下,再进行更细致的判断。这就需要使用嵌套条件。

基础嵌套

# 🏪 购物决策助手
has_money = True
money_amount = 500if has_money:print("💰 您有钱可以购物!")if money_amount >= 1000:print("🛍️ 您可以买奢侈品!")print("💎 推荐:名牌包包、高档手表")elif money_amount >= 500:print("🛒 您可以买一些实用的东西!")print("👕 推荐:衣服、鞋子、电子产品")elif money_amount >= 100:print("🛍️ 您可以买一些小物件!")print("📚 推荐:书籍、文具、小饰品")else:print("🍭 您可以买一些零食!")print("🍿 推荐:薯片、饮料、糖果")
else:print("💸 您没有钱,建议先赚钱再购物")

复杂的嵌套判断

# 🎬 电影推荐系统
age = int(input("请输入您的年龄:"))
movie_type = input("您喜欢什么类型的电影?(动作/爱情/科幻/喜剧):")if age >= 18:print("🎬 成人电影推荐:")if movie_type == "动作":print("🔥 推荐电影:")print("   • 《复仇者联盟》- 超级英雄大集合")print("   • 《速度与激情》- 极速飞车")print("   • 《碟中谍》- 不可能的任务")elif movie_type == "爱情":print("💕 推荐电影:")print("   • 《泰坦尼克号》- 永恒的爱情")print("   • 《怦然心动》- 青春校园")print("   • 《我的女孩》- 浪漫韩剧")elif movie_type == "科幻":print("🚀 推荐电影:")print("   • 《星际穿越》- 时空旅行")print("   • 《黑客帝国》- 虚拟现实")print("   • 《阿凡达》- 异世界探索")elif movie_type == "喜剧":print("😂 推荐电影:")print("   • 《功夫》- 周星驰经典")print("   • 《憨豆先生》- 无厘头喜剧")print("   • 《唐人街探案》- 推理喜剧")else:print("🎭 抱歉,我们暂时没有这个类型的推荐")else:print("🧒 青少年电影推荐:")if movie_type == "动作":print("🦸 推荐电影:")print("   • 《蜘蛛侠》- 友好邻居英雄")print("   • 《超人总动员》- 超级英雄家庭")elif movie_type == "科幻":print("🤖 推荐电影:")print("   • 《机器人总动员》- 温馨科幻")print("   • 《怪物史瑞克》- 奇幻冒险")elif movie_type == "喜剧":print("🎪 推荐电影:")print("   • 《疯狂动物城》- 动物世界")print("   • 《飞屋环游记》- 老爷爷的冒险")else:print("🎠 推荐一些适合的动画电影")

🚀 实战项目:智能推荐系统

现在让我们来构建一个完整的智能推荐系统,综合运用所学的条件判断知识。

# 🎯 智能生活助手推荐系统
import randomdef smart_recommendation_system():print("🤖 欢迎使用智能生活助手!")print("=" * 50)# 收集用户信息name = input("请输入您的姓名:")age = int(input("请输入您的年龄:"))mood = input("您现在的心情如何?(开心/难过/焦虑/平静):")weather = input("今天的天气如何?(晴天/阴天/雨天/雪天):")time_of_day = input("现在是什么时间?(早上/中午/下午/晚上):")print(f"\n🎭 {name},让我为您量身定制建议!")print("=" * 50)# 根据年龄段给出不同建议if age < 12:age_group = "儿童"activities = ["画画", "积木", "看动画片", "和朋友玩游戏"]elif age < 18:age_group = "青少年"activities = ["读书", "运动", "学习新技能", "听音乐"]elif age < 60:age_group = "成年人"activities = ["健身", "看电影", "学习", "工作"]else:age_group = "老年人"activities = ["散步", "下棋", "园艺", "看新闻"]print(f"👤 年龄段:{age_group}")# 根据心情给出建议if mood == "开心":mood_advice = "保持这种好心情,做一些您喜欢的事情!"mood_activities = ["分享快乐", "运动", "创作"]elif mood == "难过":mood_advice = "每个人都有低谷期,这会过去的!"mood_activities = ["听音乐", "和朋友聊天", "写日记"]elif mood == "焦虑":mood_advice = "深呼吸,放松心情,一切都会好起来的!"mood_activities = ["冥想", "瑜伽", "泡热水澡"]else:  # 平静mood_advice = "平静的心情很好,适合思考和学习!"mood_activities = ["读书", "规划未来", "整理房间"]print(f"💭 心情分析:{mood_advice}")# 根据天气给出建议if weather == "晴天":weather_advice = "阳光明媚,适合户外活动!"weather_activities = ["户外运动", "野餐", "摄影"]elif weather == "阴天":weather_advice = "天气凉爽,适合室内外活动!"weather_activities = ["散步", "购物", "咖啡厅"]elif weather == "雨天":weather_advice = "雨天最适合待在家里!"weather_activities = ["看书", "看电影", "做手工"]else:  # 雪天weather_advice = "雪天很浪漫,但要注意保暖!"weather_activities = ["堆雪人", "室内活动", "热饮"]print(f"🌤️ 天气建议:{weather_advice}")# 根据时间给出建议if time_of_day == "早上":time_advice = "一日之计在于晨,开始美好的一天!"time_activities = ["晨练", "丰盛早餐", "规划一天"]elif time_of_day == "中午":time_advice = "中午时光,补充能量!"time_activities = ["午餐", "小憩", "整理上午工作"]elif time_of_day == "下午":time_advice = "下午时光,保持活力!"time_activities = ["下午茶", "工作学习", "社交"]else:  # 晚上time_advice = "夜晚时光,放松身心!"time_activities = ["晚餐", "娱乐", "准备休息"]print(f"🕐 时间建议:{time_advice}")# 综合推荐print("\n🎯 综合推荐:")print("=" * 30)# 选择最合适的活动all_activities = activities + mood_activities + weather_activities + time_activitiesrecommended_activities = random.sample(all_activities, min(3, len(all_activities)))for i, activity in enumerate(recommended_activities, 1):print(f"{i}. {activity}")# 特殊建议if age < 18 and (mood == "难过" or mood == "焦虑"):print("\n⚠️ 特别提醒:")print("如果感到困扰,建议与家长或老师交流")if weather == "雨天" and mood == "难过":print("\n🌈 温馨提示:")print("雨天心情不好很正常,听听音乐,雨过天晴!")print(f"\n🎪 {name},希望这些建议对您有帮助!")print("祝您生活愉快!🌟")# 运行推荐系统
if __name__ == "__main__":smart_recommendation_system()

🎨 进阶技巧:让判断更优雅

1. 三元运算符(条件表达式)

# 🎯 三元运算符:一行代码搞定简单判断
age = 20
status = "成年人" if age >= 18 else "未成年"
print(f"您的身份:{status}")# 传统写法(比较啰嗦)
if age >= 18:status = "成年人"
else:status = "未成年"

2. 链式比较

# 🔢 链式比较:更简洁的范围判断
score = 85# 优雅的写法
if 80 <= score <= 90:print("成绩良好!")# 传统写法
if score >= 80 and score <= 90:print("成绩良好!")

3. 使用 in 运算符

# 📝 使用 in 运算符判断包含关系
user_input = "苹果"
fruits = ["苹果", "香蕉", "橙子", "葡萄"]if user_input in fruits:print(f"✅ {user_input} 是水果!")
else:print(f"❌ {user_input} 不是水果!")# 判断字符串包含
message = "今天天气很好"
if "天气" in message:print("消息中提到了天气")

4. 短路求值

# ⚡ 短路求值:提高效率的技巧
def expensive_operation():print("执行了复杂计算...")return True# 利用短路求值避免不必要的计算
condition1 = False
condition2 = expensive_operation()  # 这个函数不会被调用if condition1 and condition2:print("两个条件都满足")
else:print("至少有一个条件不满足")

5. 字典映射替代多重 if-elif

# 🗂️ 使用字典映射替代复杂的 if-elif
def get_season(month):season_map = {1: "冬季", 2: "冬季", 3: "春季",4: "春季", 5: "春季", 6: "夏季",7: "夏季", 8: "夏季", 9: "秋季",10: "秋季", 11: "秋季", 12: "冬季"}return season_map.get(month, "未知季节")# 使用示例
month = 6
season = get_season(month)
print(f"{month}月是{season}")

🔧 常见问题与解决方案

问题1:忘记缩进

# ❌ 错误示例
age = 18
if age >= 18:
print("成年人")  # 缩进错误!# ✅ 正确写法
age = 18
if age >= 18:print("成年人")  # 正确缩进

问题2:混淆赋值和比较

# ❌ 错误示例
age = 18
if age = 18:  # 错误!这是赋值,不是比较print("18岁")# ✅ 正确写法
age = 18
if age == 18:  # 正确!这是比较print("18岁")

问题3:逻辑运算符的优先级

# 🤔 这个表达式的结果是什么?
result = True or False and False
print(result)  # 输出:True# 💡 解释:and 的优先级高于 or
# 等价于:True or (False and False)
# 等价于:True or False
# 结果:True# 🎯 使用括号明确优先级
result = (True or False) and False
print(result)  # 输出:False

问题4:浮点数比较陷阱

# ⚠️ 浮点数比较的陷阱
a = 0.1 + 0.2
b = 0.3
print(a == b)  # 输出:False(意外吗?)# 💡 解决方案:使用容差比较
tolerance = 1e-9
if abs(a - b) < tolerance:print("两个数相等")
else:print("两个数不相等")

问题5:字符串比较大小写问题

# 🔤 字符串比较的大小写问题
name1 = "Zhang San"
name2 = "zhang san"
print(name1 == name2)  # 输出:False# 💡 解决方案:转换为小写再比较
if name1.lower() == name2.lower():print("姓名相同")
else:print("姓名不同")

📚 实用技巧总结

1. 条件判断的最佳实践

# 🎯 最佳实践示例
def check_user_permission(user_age, user_type, has_permission):"""检查用户权限的最佳实践"""# 1. 先检查最严格的条件if user_age < 18:return "未成年用户,拒绝访问"# 2. 使用明确的条件if user_type not in ["member", "admin", "guest"]:return "无效用户类型"# 3. 组合条件时使用括号if (user_type == "admin") or (user_type == "member" and has_permission):return "允许访问"# 4. 默认情况return "权限不足"# 测试
result = check_user_permission(25, "member", True)
print(result)

2. 调试技巧

# 🐛 调试条件判断的技巧
def debug_conditions():age = 20score = 85# 使用 print 调试print(f"年龄:{age}")print(f"分数:{score}")print(f"age >= 18: {age >= 18}")print(f"score >= 80: {score >= 80}")if age >= 18 and score >= 80:print("✅ 条件满足")else:print("❌ 条件不满足")debug_conditions()

🎬 下集预告

恭喜您完成了条件判断的学习!现在您的Python程序已经学会了"思考"和"选择"。

在下一课《循环结构:让电脑做重复的事情》中,我们将学习:

🔄 for循环:让程序重复执行任务
🔄 while循环:根据条件重复执行
🔄 循环控制:break和continue的使用
🔄 嵌套循环:循环中的循环
🔄 实战项目:制作一个简单的游戏

想象一下,如果让你手动打印1到100的所有数字,你会疯掉吧?但是有了循环,只需要几行代码就能搞定!

📝 课后作业

基础练习

  1. 年龄分类器:输入年龄,输出对应的人生阶段
  2. BMI计算器:根据身高体重计算BMI并给出健康建议
  3. 密码强度检测:检查密码是否包含大小写字母、数字和特殊字符

进阶练习

  1. 智能计算器:支持加减乘除,并处理除零错误
  2. 学生成绩管理:输入多科成绩,计算平均分并给出等级
  3. 简单的文字冒险游戏:玩家根据不同选择进入不同情节

挑战练习

  1. 智能聊天机器人:根据用户输入给出不同回复
  2. 模拟ATM系统:实现存款、取款、查询余额等功能
  3. 个性化推荐系统:根据用户喜好推荐电影、音乐或书籍

🎉 总结

今天我们学习了条件判断的精髓:

基础概念:理解布尔值和条件判断的原理
if语句:程序的基本选择结构
if-else语句:二选一的决策
if-elif-else语句:多重选择的艺术
比较运算符:程序的"眼睛"
逻辑运算符:复杂条件的组合
嵌套条件:层次化的决策
实战项目:智能推荐系统
进阶技巧:让代码更优雅

记住:编程就像生活,充满了选择。而条件判断就是帮助我们的程序做出明智选择的工具。现在您的Python程序已经有了"大脑",能够根据不同情况做出不同的反应了!

继续加油,下一课我们将学习让程序"勤劳"的循环结构!🚀


💡 编程小贴士:好的程序员不仅要会写代码,更要会思考。每一个条件判断都是一次思考的体现。保持好奇心,多思考"如果…那么…"的逻辑,您会发现编程的乐趣无穷!

http://www.dtcms.com/a/287816.html

相关文章:

  • Web开发 03
  • import.meta.glob 与 import.meta.env、import的几个概念的简单回顾
  • react+antd+表格拖拽排序以及上移、下移、移到顶部、移到底部
  • 408数据结构强化(自用)
  • 实现el-select下拉框,下拉时加载数据
  • MYSQL 第一次作业
  • 《命令行参数与环境变量:从使用到原理的全方位解析》
  • Flink实时流量统计:基于窗口函数与Redis Sink的每小时PV监控系统(学习记录)
  • UniApp 自定义导航栏:解决安全区域适配问题的完整实践
  • C++基于muduo库从零实现Rpc框架
  • Ubuntu18.04环境下,vscode使用clangd、bear实时准确跳转过程中遇到的compile_commands.json无法解析问题
  • windows wsl ubuntu 如何安装 maven
  • 程序混淆的可行性?
  • PyCharm 入门指南:起步学习、开发环境一体
  • java: DDD using sql server 2019 or Oracle21c
  • WLAN Autoconfig 自启动失效/WIFI功能消失问题解决方案
  • Gradle安装教程
  • 深入理解设计模式之模板模式:优雅地定义算法骨架
  • 在RK3588开发板快速搭建ros环境以及运行ros程序(以usb_cam为例)
  • 云服务器搭建自己的FRP服务。为什么客户端的项目需要用Docker启动,服务端才能够访问到?
  • 详细解读Go中的 fmt包
  • 2025年医疗人工智能发展现状
  • JMeter 元件使用详解
  • 初学者STM32—DMA数据转运
  • [DBC教程 一] DBC文件概述及搭建编辑环境CANdb++ Admin
  • [LGR-233-Div.4]洛谷入门赛#37——8道题题解
  • CF 训练 2 D - E参考代码
  • 面试高频题 力扣 130. 被围绕的区域 洪水灌溉(FloodFill) 深度优先遍历(dfs) 暴力搜索 C++解题思路 每日一题
  • Maven 依赖管理
  • 5.组合模式