Alqoritm məsələlərindəki səhvlərin çoxu alqoritmin özü ilə yox, dilin xırdalıqları və sərhədlərlə bağlıdır. Onlar dəfələrlə təkrarlanır, ona görə üzdən tanımaq lazımdır. Aşağıda yeddi tipik Python tələsi və səhv artıq baş verəndə onu tapmaq yolu var.

`*` ilə təkrarlanan siyahı bir daxili siyahını bölüşür; siyahı generatoru ayrı-ayrı siyahılar yaradır
* ilə təkrarlanan siyahı bir daxili siyahını bölüşür; siyahı generatoru ayrı-ayrı siyahılar yaradır

1. Off-by-one

Bir vahid səhvi dövr sərhədlərində, kəsimlərdə və ikili axtarışda olur. Yadda saxlayın: range(a, b) və s[a:b] kəsimi b-ni daxil etmir, indekslər sıfırdan başlayır, ona görə son indeks len(a) - 1-dir.

python
n = 5
total = 0
for i in range(1, n):          # stops at 4: n is missing
    total += i
print(total)
text
10
python
n = 5
total = 0
for i in range(1, n + 1):      # the end of range() is exclusive
    total += i
print(total)
text
15

Sərhədləri kiçik girişdə yoxlayın: n = 0, n = 1, n = 2.

2. Dəyişən susmaya görə qiymət

Susmaya görə qiymət funksiya təyin ediləndə bir dəfə yaradılır və sonra eyni siyahıdır:

python
def add_item(x, items=[]):
    items.append(x)
    return items

print(add_item(1))
print(add_item(2))
print(add_item(3, []))
print(add_item.__defaults__)