05-Chapter-4-决策思维程序如何判断与选择
Chapter 4: 决策思维:程序如何“判断与选择”
在程序的世界里,一切并非一成不变。程序需要像人类一样,根据不同的情况做出不同的“选择”和“判断”。比如,用户输入了错误密码,程序需要拒绝登录;今天气温超过30度,程序可能需要提醒穿短袖。这种让程序具备智能决策能力的核心,就是决策思维。
本章将带你理解程序如何进行比较和判断,以及如何通过条件分支来指导程序在不同路径上执行。AI 在这方面是你的得力助手,它能帮你轻松构建出复杂的决策逻辑。
4.1 运算符:数据的“比较与组合”
在程序做出判断之前,它首先需要能够“比较”数据。这就像你判断两个数字大小,或者判断两句话是否相同。这就是运算符 (Operators) 的作用。
我们主要关注以下几类运算符:
- 比较运算符 (Comparison Operators): 用于比较两个值,结果是布尔值 (True 或 False)。
- == (等于):判断两个值是否相等。
- 5 == 5 结果是 True
- "hello" == "world" 结果是 False
- != (不等于):判断两个值是否不相等。
- 5 != 10 结果是 True
- > (大于) / < (小于)
- >= (大于等于) / <= (小于等于)
- 10 > 5 结果是 True
- 7 <= 7 结果是 True
- == (等于):判断两个值是否相等。
-
逻辑运算符 (Logical Operators): 用于组合布尔值,构建更复杂的条件。
- and (与):当所有条件都为 True 时,结果才为 True。
- True and True 结果是 True
- True and False 结果是 False
- or (或):当至少一个条件为 True 时,结果就为 True。
- True or False 结果是 True
- False or False 结果是 False
- not (非):反转布尔值,True 变 False,False 变 True。
- not True 结果是 False
- and (与):当所有条件都为 True 时,结果才为 True。
-
AI辅助运算符理解:
- AI提示词: “请用Python代码演示如何判断一个人的年龄是否在18到60岁之间(包含18和60)。”
- AI生成:
age = 25 is_adult_worker = (age >= 18) and (age <= 60) print(f"年龄 {age} 是否在18到60岁之间: {is_adult_worker}") # 输出:True age = 15 is_adult_worker = (age >= 18) and (age <= 60) print(f"年龄 {age} 是否在18到60岁之间: {is_adult_worker}") # 输出:False
- AI的“思维过程”: AI会识别“在...之间”的逻辑,并自动组合 >= 和 <= 比较运算符,以及 and 逻辑运算符来构建条件。
4.2 条件分支 (If-Else-Elif):构建程序的决策树(快递运费规则)
一旦程序能够进行比较,它就可以根据比较的结果来执行不同的代码块。这就是条件分支 (Conditional Statements) 的核心作用,它们是程序“决策树”的骨架。
最常见的条件分支结构是 if-elif-else:
- if 语句: 如果某个条件为 True,就执行 if 后面的代码块。
score = 90 if score >= 60: print("及格了!") # 条件为True,执行此行
- else 语句: 如果 if 语句的条件为 False,就执行 else 后面的代码块。
score = 50 if score >= 60: print("及格了!") else: print("没及格,需要继续努力。") # 条件为False,执行此行
-
elif 语句 (else if): 当有多个条件需要按顺序判断时,可以使用 elif。它会在 if 条件为 False,但下一个 elif 条件为 True 时执行。
temperature = 28 if temperature > 30: print("天气炎热,请注意防暑。") elif temperature > 20: # 如果上面条件不满足,再判断这个 print("天气舒适,适合出行。") else: # 如果所有条件都不满足,执行这个 print("天气凉爽,注意保暖。")
- 重要提示: elif 和 else 必须与 if 一起使用。一个 if 语句可以有零个或多个 elif,以及零个或一个 else。
- 缩进: 在 Python 中,if、elif、else 后面的代码块必须通过缩进来表示层级关系。通常使用 4 个空格的缩进。
-
案例:快递运费规则的决策树 假设一个快递公司的运费规则如下:
- 重量小于等于 1 kg:运费 5 元。
- 重量大于 1 kg 且小于等于 5 kg:运费 10 元。
- 重量大于 5 kg:运费 20 元。
-
如果目的地是偏远地区,额外加收 5 元。
-
程序思维拆解:
- 获取包裹重量和目的地是否是偏远地区的信息。
- 根据重量判断基础运费。
- 根据是否偏远地区,判断是否加收额外费用。
- 计算总运费。
-
AI辅助构建决策逻辑:
- AI提示词: “请用Python编写一个函数 calculate_shipping_cost(weight, is_remote_area),根据以下规则计算运费:
- 重量 <= 1kg: 5元
- 1kg < 重量 <= 5kg: 10元
- 重量 > 5kg: 20元
- 如果 is_remote_area 为 True,额外加收 5 元。”
- AI生成代码:
def calculate_shipping_cost(weight, is_remote_area): base_cost = 0 if weight <= 1: base_cost = 5 elif weight <= 5: # 这里的条件实际上是 1 < weight <= 5,因为上面的if已经排除了 <=1 的情况 base_cost = 10 else: # 这里的条件是 weight > 5 base_cost = 20 # 额外加收偏远地区费用 if is_remote_area: base_cost += 5 # base_cost = base_cost + 5 return base_cost # 示例用法 print(f"1kg 普通地区运费: {calculate_shipping_cost(1, False)}元") # 预期: 5 print(f"3kg 偏远地区运费: {calculate_shipping_cost(3, True)}元") # 预期: 10 + 5 = 15 print(f"7kg 普通地区运费: {calculate_shipping_cost(7, False)}元") # 预期: 20 print(f"7kg 偏远地区运费: {calculate_shipping_cost(7, True)}元") # 预期: 20 + 5 = 25
- AI的“思维过程”: AI会根据规则中的“小于等于”、“大于且小于等于”等描述,自动选择 if-elif-else 结构,并使用 and 隐式地处理条件范围(如 elif weight <= 5 实际包含了 weight > 1 的前置条件)。它还会识别出额外的“加收”规则,并用另一个独立的 if 语句来处理。
- AI提示词: “请用Python编写一个函数 calculate_shipping_cost(weight, is_remote_area),根据以下规则计算运费:
4.3 AI提示词模板:用自然语言构建复杂决策逻辑
AI 在理解自然语言描述的决策逻辑方面表现出色。掌握一些提示词模板,可以让你更高效地“导演”AI生成你所需的条件分支代码。
- 基础判断:
- “如果 [条件 A],则 [执行操作 X]。”
- “如果 [条件 A],则 [执行操作 X],否则 [执行操作 Y]。”
- “请判断变量 user_status 是否等于 active,如果是,打印‘用户在线’。”
- 多重条件判断:
- “如果 [条件 A],则 [操作 X];如果 [条件 B],则 [操作 Y];否则 [操作 Z]。”
- “根据用户在网站停留的时间 time_spent_minutes:
- 如果小于 5 分钟,打印‘新访客’。
- 如果介于 5 到 30 分钟之间(包含两端),打印‘普通用户’。
- 如果大于 30 分钟,打印‘高活跃用户’。”
- 复杂逻辑组合:
- “请根据以下情况决定一个订单是否可以被处理:
- 订单状态必须是‘待支付’ 或者 ‘已支付’。
- 同时,订单金额必须大于 0。”
- “请编写代码,检查一个年份是否是闰年。闰年的规则是:能被4整除但不能被100整除,或者能被400整除。”(这是一个经典的编程题,AI 可以轻松解决)
- “请根据以下情况决定一个订单是否可以被处理:
小结: 决策思维是让程序变得“智能”和“灵活”的关键。通过运算符进行比较,再通过 if-elif-else 构建决策树,你的程序就能根据不同的数据和情况做出不同的响应。在 AI 的辅助下,你可以直接用自然语言描述复杂的决策规则,让 AI 帮你完成代码的编写,从而将你的精力聚焦在业务逻辑的清晰定义上,而不是困于语法的细节。