Typowe błędy przy przetwarzaniu napisów

1. Mylenie indeksów i błędne zakresy

  • używanie indeksu o 1 za dużego lub za małego,

  • zapominanie, że indeksowanie zaczyna się od 0,

  • wychodzenie poza zakres (zapominanie, że ostatni znak ma index o jeden mniejszy niż długość tekstu).

2. Niepoprawne użycie wycinków (slicing)

  • próby modyfikowania pojedynczego znaku przez text[i] = 'a' (napisy są niemodyfikowalne!),

  • zapominanie, że text[a:b] nie zawiera indeksu b.

3. Używanie == zamiast in

  • np. if tekst == "a": zamiast if "a" in in tekst:

  • albo odwrotnie: if slowo in tekst == slowo.

Przykład 1
Linia 1. kratka stosowanie. Linia 2. if cudzysłów abc cudzysłów znak równości znak równości tekst dwukropek. Linia 3. kratka zamiast. Linia 4. if cudzysłów abc cudzysłów in tekst dwukropek.

4. Brak uwzględnienia wielkości liter

  • “Python" != “python"

  • brak stosowania metod typu .lower() lub .upper() przy porównaniach.

5. Nadmierne poleganie na split() bez kontroli danych

  • zapominanie, że split() bez argumentu usuwa dowolną liczbę spacji,

  • split(" ") dzieli tylko po JEDNEJ spacji.

6. Niezauważanie znaków specjalnych w tekście

  • niezliczanie \n, \t, spacji podwójnych, znaków końca linii,

  • niekorzystanie z metody split() dla usunięcia znaku końca wiersza.

7. Używanie pętli tam, gdzie wystarczy jedna metoda

Przykład 2

Stosowanie kodu:

Linia 1. count znak równości 0. Linia 2. for c in text dwukropek. Linia 3. if c znak równości znak równości apostrof a apostrof dwukropek. Linia 4. count plus znak równości 1.

Zamiast:

Linia 1. text kropka count otwórz nawias okrągły apostrof a apostrof zamknij nawias okrągły.

8. Próby konwersji całego napisu na liczbę (błąd ValueError)

  • np. int("12a"),

  • zapominanie, że tekst może zawierać inne znaki niż cyfry.

9. Modyfikowanie napisu bez przypisania wyniku

Ponieważ stringi są niemodyfikowalne:

tekst.replace("a", "b")

nic nie zmieni, jeśli nie zapiszemy:

tekst = tekst.replace("a", "b")

10. Zła obsługa indeksów ujemnych

  • nieświadomość, że tekst[-1] to ostatni znak,

  • błędne używanie ujemnych indeksów w wycinkach.