Materjalid koostas ja kursuse viib läbi
Tartu Ülikooli arvutiteaduse instituudi programmeerimise õpetamise töörühm
6.10 TypeError: 'float' object is not iterable
Veateade TypeError: 'float' object is not iterable tekib siis, kui for-tsükli koostamisel kasutatakse ujukomaarvu tüüpi muutujat tsükli pikkuse määramiseks.
Tuleb jälgida, et tsükli pikkuse määramisel kasutatakse Pythonis funtsiooni range()
, mille sisendiks antakse täisarvu tüüpi muutuja
Näide 1:
number = 6 arv = float(input("Sisestage arv: ")) for loendur in arv: print("Arvu " + str(arv) + " astendamisel " + str(loendur) + "-ga saadud väärtus on: " + str(arv ** loendur))
Veateade kuvatakse, sest for-tsükli pikkuse määramisel on jäetud lisamata funktsioon range()
, mis suudab tsüklit korrata etteantud täisarv kordi:
>>> %Run test.py Sisestage arv: 5 Traceback (most recent call last): File "C:\Users\Kursus\Test.py", line 3, in <module> for loendur in arv: TypeError: 'float' object is not iterable >>>
Võimalik parandus:
Pythonis on vajalik funktsiooni lisamine tsüklisammude kordamiseks.
Näide parandatud programmist:
number = 6 arv = float(input("Sisestage arv: ")) for loendur in range(number): print("Arvu " + str(arv) + " astendamisel " + str(loendur) + "-ga saadud väärtus on: " + str(arv ** loendur))