Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
6.7 TypeError: list indices must be integers or slices, not str
Veateade TypeError: list indices must be integers or slices, not str tekib siis, kui järjendi indeksiks antakse sõnetüüpi väärtus. Sobivad indeksi väärtused on Pythonis täisarvu tüüpi väärtus ja lõigutüüpi väärtus.
Tuleb jälgida, et järjendite puhul ei kasutataks indeksina sõnetüüpi väärtusi.
Näide 1:
tooted = input("Sisestage tooted: ").split(',') toode = input("Valige toode: ") print(tooted[toode])
Veateade kuvatakse, sest toode
on sõnetüüpi väärtus ja ebasobiv andmetüüp järjendi elementidele viitamisel:
>>> %Run Test.py Sisestage tooted: leib, sai, piim Valige toode: sai Traceback (most recent call last): File "C:\Users\Kursus\Test.py", line 4, in <module> print(tooted[toode]) TypeError: list indices must be integers or slices, not str >>>
Võimalik parandus:
Muutuja toode
tuleks teisendada täisarvu tüüpi muutujaks.
Näide parandatud programmist:
tooted = input("Sisestage tooted: ").split(',') toode = int(input("Valige toote järjekorra number: ")) print(tooted[toode - 1])
Tuleb jälgida, et järjendi lõikude märgistamise puhul ei kasutataks jutumärke.
Näide 2:
tooted = ['sai','või','leib','piim','keefir'] print(tooted[':'])
Veateade kuvatakse, sest järjendi kõikide elementide kuvamiseks ei ole tarvis koolonile jutumärke ümber lisada:
>>> %Run Test.py Traceback (most recent call last): File "C:\Users\Kursus\Test.py", line 3, in <module> print(tooted[':']) TypeError: list indices must be integers or slices, not str >>>
Võimalik parandus:
Listi kõigi elementide välja printimisel tuleks eemaldada kooloni ümbert jutumärgid.
Näide parandatud programmist:
tooted = ['sai','või','leib','piim','keefir'] print(tooted[:])