“中午吃啥?”这个世纪难题,我让Python解决了
“薇光,我每天最大的痛苦不是写代码,而是中午吃什么。”上周同桌小华向我吐槽。我说:“巧了,我已经把这个问题外包给Python了。”现在,我的代码每天11:30准时告诉我: if 想吃辣的: 吃火锅 else: 吃沙拉if 想吃辣的: 吃火锅elif 想吃清淡的: 吃沙拉 else: 随便
这些“如果…就…”,就是今天的主角——if-else语句# 第一个版本:根据心情决定mood = "想吃辣的" # 试试改成"想吃清淡的"或"随便"if mood == "想吃辣的": print("🌶️ 走!去吃火锅!")elif mood == "想吃清淡的": print("🥗 健康一点,吃沙拉吧")else: print("🍱 那...吃食堂套餐?")
"想吃辣的"= 要比较的值(中文,用英文的引号包着)没有这4个空格,Python就不认识这是if的回答了你会发现: 代码真的会根据你的选择,给出不同建议!if 条件1: # 先检查条件1 # 条件1成立时做的事elif 条件2: # 条件1不成立,检查条件2 # 条件2成立时做的事 elif 条件3: # 条件2也不成立,检查条件3 # 条件3成立时做的事else: # 所有条件都不成立 # 默认做的事
B也不对?看C选项对不对? → 对 → 选C,结束# 午餐决策器2.0:考虑更多因素mood = "想吃辣的" # 心情money = 50 # 钱包余额(元)time = 60 # 可用时间(分钟)with_friends = True # 是否和朋友一起print("=== 午餐决策器2.0 ===")print(f"心情:{mood}")print(f"余额:{money}元")print(f"时间:{time}分钟")print(f"朋友:{'一起'if with_friends else'独自'}")if mood == "想吃辣的" and money > 30 and time > 45: print("\n🎉 完美条件!推荐:麻辣火锅") if with_friends: print(" 和朋友一起吃火锅最开心了!")elif mood == "想吃辣的" and money < 30: print("\n💰 余额有限,推荐:麻辣烫") print(" 解馋又实惠")elif mood == "想吃清淡的" or time < 30: print("\n⏰ 时间紧/想清淡,推荐:沙拉轻食")else: print("\n🤔 推荐:日式定食") print(" 不会出错的选择")
# 如果想吃辣的并且有钱if mood == "想吃辣的" and money > 30: print("可以吃好的!")
# 如果时间紧或者想清淡if time < 30 or mood == "想吃清淡的": print("吃快餐吧")
mood = "想吃辣的"; money = 20; time = 60→ 推荐什么?mood = "随便"; money = 100; time = 15→ 推荐什么?mood = "想吃清淡的"; money = 40; time = 90; with_friends = False→ 推荐什么?# ❌ 错误!这是把"想吃辣的"放进mood里if mood = "想吃辣的": print("吃火锅")# ✅ 正确!这是比较mood是不是等于"想吃辣的"if mood == "想吃辣的": print("吃火锅")
两个等号==是“等于吗” (看看盒子里是不是这个东西)# ❌ 错误!if后面少了冒号if mood == "想吃辣的" # 少了: print("吃火锅")# ✅ 正确!if后面必须有冒号if mood == "想吃辣的": # 有冒号! print("吃火锅")
# ❌ 错误!缩进不一致if mood == "想吃辣的": print("吃火锅") # 4个空格 print("多点肉") # 3个空格,报错!# ✅ 正确!缩进要对齐if mood == "想吃辣的": print("吃火锅") # 4个空格 print("多点肉") # 4个空格 print("要辣锅") # 4个空格
# ❌ 错误!Python用elif,不是else ifif mood == "想吃辣的": print("火锅")else if mood == "想吃清淡的": # 报错! print("沙拉")# ✅ 正确!Python用elifif mood == "想吃辣的": print("火锅")elif mood == "想吃清淡的": # 用elif! print("沙拉")
# ❌ 可能匹配不上user_input = "YES" # 用户输入了大写if user_input == "yes": # 代码检查小写 print("同意") # 不会执行!# ✅ 解决方法:都转成小写user_input = "YES"if user_input.lower() == "yes": # .lower()转小写 print("同意") # 会执行!
# ❌ 顺序有问题score = 95if score >= 60: print("及格") # 95>=60,输出"及格",结束!elif score >= 70: # 不会检查这里了 print("中等")elif score >= 80: print("良好")elif score >= 90: print("优秀")# ✅ 从高到低检查score = 95if score >= 90: # 95>=90 ✓ print("优秀") # 输出"优秀"elif score >= 80: # 上面成立了,跳过 print("良好")elif score >= 70: print("中等")elif score >= 60: print("及格")
# ❌ 太长看不懂if (mood == "想吃辣的" and money > 30) or (time > 60 and with_friends) or (not busy and hungry): print("吃大餐")# ✅ 拆开写,清楚多了can_afford = mood == "想吃辣的" and money > 30have_time = time > 60 and with_friendsreally_want = not busy and hungryif can_afford or have_time or really_want: print("吃大餐")
# ❌ mood写成了moo(少了个d)mood = "想吃辣的"if moo == "想吃辣的": # 变量名错了! print("吃火锅") # 不会执行# ✅ 先打印看看mood = "想吃辣的"print(f"看看mood是什么:{mood}") # 先打印出来if mood == "想吃辣的": print("吃火锅")
当你不知道代码为什么不对时,就多用 print() :# 调试示例mood = "有点想吃辣的" # 注意:不是"想吃辣的"print("=== 开始调试 ===")print(f"1. mood的值是:'{mood}'")print(f"2. 我想检查它是不是'想吃辣的'")print(f"3. mood == '想吃辣的' 的结果是:{mood == '想吃辣的'}")if mood == "想吃辣的": print("4. 进入if块") print("推荐:火锅")else: print("4. 进入else块") print("推荐:再看看")print("=== 调试结束 ===")
=== 开始调试 ===1. mood的值是:'有点想吃辣的'2. 我想检查它是不是'想吃辣的' 3. mood == '想吃辣的' 的结果是:False4. 进入else块推荐:再看看=== 调试结束 ===
一下子就明白了:mood是"有点想吃辣的",不是"想吃辣的",所以是False,执行了else块。# ===== 智能午餐推荐系统 =====print("🍽️ 【午餐救星】上线!")print("回答几个问题,帮你终结选择困难~")print("=" * 40)# 1. 收集你的信息print("\n1. 你现在有多饿?")print(" A. 饿到能吃下一头牛")print(" B. 正常饿")print(" C. 不太饿")hunger = input("请选A/B/C:")print("\n2. 钱包有多鼓?")print(" A. 土豪,随便吃")print(" B. 正常预算") print(" C. 吃土中,省点花")budget = input("请选A/B/C:")print("\n3. 有多少时间?")print(" A. 时间充足(>1小时)")print(" B. 正常时间(30-60分钟)")print(" C. 赶时间(<30分钟)")time_left = input("请选A/B/C:")print("\n4. 今天想吃什么口味?")print(" A. 辣的过瘾")print(" B. 清淡健康")print(" C. 随便,能吃就行")taste = input("请选A/B/C:")# 2. 开始推荐print("\n" + "=" * 40)print("🤔 正在分析你的需求...")print("=" * 40)recommendation = ""details = []# 根据饥饿程度if hunger == "A": details.append("你很饿,需要顶饱的") recommendation = "大盘菜或自助餐"elif hunger == "B": details.append("正常饿,正常分量就行") recommendation = "套餐或定食"else: # C details.append("不太饿,吃点轻食吧") recommendation = "沙拉或小吃"# 根据预算if budget == "A": details.append("预算充足,可以吃点好的") if recommendation == "大盘菜或自助餐": recommendation = "豪华自助餐" else: recommendation = "精致料理"elif budget == "C": details.append("预算有限,性价比优先") if "自助" in recommendation: recommendation = "实惠自助" elif "套餐" in recommendation: recommendation = "经济套餐"# 根据时间if time_left == "C": details.append("时间很紧,要快的") if "自助" in recommendation: recommendation = "快餐" details.append("建议提前手机点单")# 根据口味if taste == "A": details.append("想吃辣的") if "自助" in recommendation: recommendation = "麻辣香锅自助" elif "套餐" in recommendation: recommendation = "川菜套餐" elif "快餐" in recommendation: recommendation = "麻辣烫"elif taste == "B": details.append("想吃清淡的") if "自助" in recommendation: recommendation = "素食自助" elif "沙拉" not in recommendation: recommendation = "轻食沙拉"# 3. 输出结果print(f"\n🎯 为你推荐:{recommendation}")print("\n📋 推荐理由:")for detail in details: print(f" • {detail}")# 4. 特别提醒print("\n💡 特别提醒:")if hunger == "A" and budget == "C": print(" 你很饿但预算有限,建议去食堂,米饭可以免费加")elif time_left == "C" and "自助" in recommendation: print(" 时间紧但选了自助,可能会来不及,建议换快餐")elif taste == "C" and "沙拉" in recommendation: print(" 选了'随便'但推荐了沙拉,真的不想吃点有味道的吗?")print("\n" + "=" * 40)print("祝用餐愉快!记得按时吃饭哦~")
C, C, C, C → 不饿没钱赶时间的随便人士# 早餐决策器time = 8.5 # 时间,8.5表示8:30is_weekday = True # 是否是工作日weather = "晴朗" # 天气print(f"⏰ 现在时间:{time}点")print(f"📅 今天是{'工作日'if is_weekday else'周末'}")print(f"🌤️ 天气:{weather}")# TODO:根据条件推荐早餐# 规则:# 1. 如果时间<7.5 → "再睡会儿,别吃早餐了"# 2. 如果时间>=7.5且<=9 → # - 如果是工作日 → "快速早餐:面包牛奶"# - 如果是周末 → "丰盛早餐:豆浆油条"# 3. 如果时间>9 → "别吃早餐了,直接等午餐吧"# 4. 如果下雨 → 加上"外卖送到家"
# 电影之夜选择器mood = "开心" # 心情:开心/难过/紧张/放松with_whom = "朋友" # 和谁:自己/朋友/家人/恋人movie_length = 120 # 电影时长(分钟)has_popcorn = True # 有爆米花吗?print("🎬 今晚看电影!")print(f"心情:{mood}")print(f"和谁看:{with_whom}")print(f"电影时长:{movie_length}分钟")print(f"爆米花:{'有'if has_popcorn else'没有'}")# TODO:推荐电影类型和准备事项# 规则:# 1. 根据心情推荐:# - 开心 → 喜剧片# - 难过 → 暖心治愈片# - 紧张 → 轻松动画片# - 放松 → 文艺片# 2. 根据和谁看:# - 自己 → "选个舒服的姿势"# - 朋友 → "多准备点零食"# - 家人 → "选合家欢电影"# - 恋人 → "浪漫爱情片"# 3. 如果电影>150分钟 → "准备好坐垫"# 4. 如果没有爆米花 → "建议点外卖"
# 我想判断是否要带伞weather = "下雨"if weather = "下雨": # 应该用== print("带伞")# 报错:SyntaxError: invalid syntax# 我:语法是什么?错在哪???
# 我想根据分数输出等级score = 85if score > 60: print("及格")if score > 70: # 应该用elif! print("中等")if score > 80: print("良好")if score > 90: print("优秀")# 输出:及格 中等 良好 (三个都输出!)# 我:为什么都执行了???
# 终于写对了!score = 85if score >= 90: print("优秀")elif score >= 80: # 用elif,不是if! print("良好")elif score >= 70: print("中等")elif score >= 60: print("及格")else: print("不及格")# 输出:良好# 我:终于对了!🎉
# 先调试,再写逻辑print(f"调试:score={score}")print(f"调试:score>=90? {score>=90}")print(f"调试:score>=80? {score>=80}")if score >= 90: print("优秀")elif score >= 80: print("良好")# ... 剩下的代码
- 从最简单的开始:先写一个if,测试通过再加else
《解放双手!让Python自动给100个朋友发祝福》今天你的代码学会了“做选择”,但它还是一次只做一个选择。把“明天开始努力”说100遍(虽然你可能还是不会开始)准备好迎接“循环”这个永动机,让代码帮你做重复劳动!🔄今天是个值得纪念的日子: 你的代码第一次拥有了“判断力” 。
这完全正常 。写了那么多代码,上周还因为少了个冒号调试了半小时。今日成就感 :写出了一个能帮你决定“中午吃什么”的智能程序。今日允许 :条件写错了就改,我当初写了10遍才让早餐推荐器正常工作。记住 :你不是在学if-else,你是在学 如何把选择困难外包给代码 。你的大脑,应该用来思考更重要的事 ——比如学完Python后,第一顿大餐吃什么?🍖# 我的晚餐选择器mood = "累"money = 45time = 20 # 分钟if mood == "累" and time < 30: if money > 30: print("点个外卖吧,别做饭了") else: print("煮个泡面,加个蛋")else: print("做顿好的!")
P.S. 今天学的if-else,是自动回复机器人的核心,是智能家居的大脑,是游戏NPC的灵魂。你写的每行判断,都在创造一个会“思考”的小世界。 而这个世界,从“中午吃什么”开始。