当前位置:首页>python>一种全新的思维方式|《Think Python》第5章

一种全新的思维方式|《Think Python》第5章

  • 2026-09-08 16:47:44
一种全新的思维方式|《Think Python》第5章

Python 条件判断与递归:编程核心逻辑|从分支到递归

⚡ 学会 if / else / 递归,你的代码真正拥有“判断能力”


5. 条件语句与递归

本章核心内容:

  • 取模运算
  • 布尔表达式
  • 条件语句 if/elif/else
  • 逻辑运算符
  • 递归函数
  • 用户输入 input
  • 递归栈与无限递归

5.1 整数除法与取模运算

# 普通除法(浮点数)minutes = 105print(minutes / 60)

结果:

1.75
# 整数除法(向下取整)hours = minutes // 60print(hours)

结果:

1
# 取模运算(求余数)remainder = minutes % 60print(remainder)

结果:

45

取模 % 常用场景

  • 判断整除:x % y == 0
  • 取最后一位:x % 10
  • 取最后两位:x % 100
  • 时钟循环:(11 + 3) % 12 = 2

5.2 布尔表达式

布尔表达式结果只有:True / False

# 等于判断 ==print(5 == 5)print(5 == 7)

结果:

TrueFalse
# 关系运算符x = 5y = 7print(x != y)   # 不等于print(x > y)    # 大于print(x < y)    # 小于print(x >= y)   # 大于等于print(x <= y)   # 小于等于

结果:

TrueFalseTrueFalseTrue

注意:

  • = 是赋值
  • == 是判断相等

5.3 逻辑运算符

  • and 全真才真
  • or 有一真就真
  • not 取反
x = 5print(x > 0and x < 10)print(x % 2 == 0or x % 3 == 0)print(not x > y)

结果:

TrueFalseTrue

5.4 if 语句

根据条件选择执行代码。

x = 3if x > 0:print('x is positive')

结果:

x is positive

空语句占位:pass

if x < 0:pass# 待处理负数情况

5.5 else 分支

二选一执行。

x = 5if x % 2 == 0:print('x is even')else:print('x is odd')

结果:

x is odd

5.6 多分支条件 elif

elif = else if

x = 3y = 5if x < y:print('x is less than y')elif x > y:print('x is greater than y')else:print('x and y are equal')

结果:

x is less than y

5.7 嵌套条件

可以嵌套,但尽量少用,用逻辑运算符简化。

# 嵌套写法(不推荐)if0 < x:if x < 10:print('x is a positive single-digit number.')# 简化写法(推荐)if0 < x < 10:print('x is a positive single-digit number.')

结果:

x is a positive single-digit number.

5.8 递归(函数调用自己)

递归是编程最强大的思想之一。

示例1:倒计时

defcountdown(n):# 基线条件:停止递归if n <= 0:print('Blastoff!')else:print(n)# 递归调用自己        countdown(n - 1)countdown(3)

结果:

321Blastoff!

示例2:重复打印

defprint_n_times(string, n):if n > 0:print(string)        print_n_times(string, n - 1)print_n_times('Spam ', 4)

结果:

Spam Spam Spam Spam

5.9 递归栈图

以 countdown(3) 为例:

countdown(n=3)    countdown(n=2)        countdown(n=1)            countdown(n=0) → 基线条件,停止
  • 基线条件 base case:不再递归的条件
  • 递归条件:继续调用自己

5.10 无限递归

没有基线条件 → 栈溢出报错。

defrecurse():    recurse()recurse()

结果:

RecursionError: maximum recursion depth exceeded

5.11 用户输入 input

暂停程序,等待用户输入。

# 带提示输入name = input('What is your name?\n')print(name)
# 输入数字(需转换)speed = int(input('Enter a number: '))print(speed)

5.12 调试技巧

  • 看错误类型
  • 看出错行
  • 缩进错误最隐蔽
  • 报错行不一定是真正错误行

5.13 术语表

英文
中文
说明
modulus
取模
% 求余数
boolean
布尔
True/False
conditional
条件
if/elif/else
recursion
递归
函数调用自己
base case
基线条件
递归停止点
infinite recursion
无限递归
无停止条件
input
输入
获取用户输入

5.14 练习

  1. 用 time 模块计算从1970年到现在的天/时/分/秒
  2. 写 is_triangle(a,b,c) 判断三边能否构成三角形
  3. 分析递归函数 recurse(3,0) 输出
  4. 用海龟绘图实现科赫曲线、谢尔宾斯基三角形

最新文章

随机文章