介绍)
文章目录Python差一错误/边界错误Off-by-one error (OBOE)介绍1. Off-by-one 是什么Python差一错误/边界错误Off-by-one error (OBOE)介绍1. Off-by-one 是什么Off-by-one error (OBOE)中文通常称为“差一错误”或“边界错误”。定义这是一种逻辑错误指程序在循环、数组索引或范围计算时多执行了一次或少执行了一次导致结果与预期相差恰好为 1。核心原因混淆了“包含/不包含”inclusive/exclusive边界或者混淆了“基于0的索引”0-based indexing与“基于1的计数”1-based counting。Python 中的典型表现切片Slicing误以为list[a:b]包含b实际上不包含。Range误以为range(n)包含n实际上是0到n-1。循环边界在手动管理索引时终止条件写成了 len却应该用 len或者反之。# ❌ 错误的 Off-by-one 示例items[a,b,c]# 意图遍历所有元素# 错误len(items) 是 3但索引最大是 2。range(len(items)) 生成 [0,1,2]这其实是正确的。# 但如果写成 range(1, len(items))就会漏掉第一个元素 a。foriinrange(1,len(items)):print(items[i])# 漏掉了 items[0]# ✅ 修正foriinrange(len(items)):# 或者直接用 for item in items:print(items[i])