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:
1 2 3 4 |
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:
1 2 3 4 |
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)) |