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ır1. 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.
n = 5
total = 0
for i in range(1, n): # stops at 4: n is missing
total += i
print(total)10n = 5
total = 0
for i in range(1, n + 1): # the end of range() is exclusive
total += i
print(total)15Sə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:
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__)