Ошибка Python : TypeError: ‘float’ object is not iterable.
age = float(input(«Entre age: «))
name = input(«Entre your name: «)
for i in age:
if i print(«Acces interdit , your age less than 18»)
break
else:
print(«Hello. Your age «+str(age)+ «!»)
print(«Hello. Your name is «+name+ «!»)
Ошибка :
for i in age:
TypeError: ‘float’ object is not iterable.
Скажите пожалуйста, почему переменная i получается не инерируемая ? Как исправить ошибку ?
Лучший ответ
НЕ переменная i, а ЗНАЧЕНИЕ переменной age. Как ты представляешь себе цикл по вещественному числу, которое записано в эту переменную? Цикл можно делать по набору значений, но нельзя делать по скаляру.
Александр АлександрУченик (152) 1 год назад
да, разобрался, сделал через цикл for не по числу.
Александр АлександрУченик (152) 1 год назад
Так вот, я разобрался как можно сделать цикл for рабочим в данном случае. Сразу скажу, смысла в этом нет.
Но все прекрасно работает если использовать переменную обозначающую индекс. затем перевести из класса list в int и дальше использовать условие if 🙂 но здесь for лiшний точно. Прикольно шо разобрался.
age = int(input(«Etry your age : «))
name = input(«Name :»)
a = [age]
i = 0
for element in a:
a[i] = element +1
i+=1
print(type(a))
int_1 = int(a[0])
if int_1 print(«Acces interdit , your age less than 18»)
else:
print(«Hello. Your age %d» %int_1, «!»)
print(«Hello. Your name is %s» %name, «!»)
Как исправить ошибку «TypeError: ‘float’ object is not iterable»
Мне необходимо написать программу, которая открывает файл, считывает данные и производит над ними операции. При отладке появилась ошибка:
«TypeError: ‘float’ object is not iterable».
Не могу понять с чем она связана и как ее решить. Сама ошибка представлена на скриншоте https://i.stack.imgur.com/NuFwt.png
Код программы:
class File(): # в классе происходит обработка данных из файла и необходимые для работы вычисления def __init__(self): print('в классе') def FILE(self):#построчное чтение из файла self.y = [] self.t1 =[] self.t2 =[] self.x = [] self.y1 = [] self.input_file = easygui.fileopenbox(filetypes=["*.docx"]) self.f = open (self.input_file) nenado = '---end of log file---' for i in range (2): self.f.readline() for line in self.f: if nenado in line: break else: a = line[1:6] b = line[7:12] time = line[25:32] self.t1.append(float(a)) self.t2.append(float(b)) self.x.append(float(time)) self.f.close() def rasschet_ΔTy(self):#график из файла self.y = [self.t2 - self.t1 for self.t1, self.t2 in zip(self.t1, self.t2)] return self.y def rasschet_x(self):#ось времени self.x = [z/60 for z in self.x] return self.x def rasschet_ΔTy1(self):# график смещенный в 0 self.k = self.t2[0] - self.t1[0] self.rasschet_ΔTy() self.y1 =[g - self.k for g in self.y] return self.y1 def rasschet_filtr_ΔTy(self):# цифровой фильтр для графика из файла self.yhat = savgol_filter(self.rasschet_ΔTy(), 251, 3) return self.yhat def rasschet_filtr_ΔTy1(self):# цифровой фильтр для графика смещенного в 0 self.yhat1 = savgol_filter(self.rasschet_ΔTy1(), 251, 3) return self.yhat1 a = File() def demo(): a.FILE() demo() def Demo():#для проверки print(a.rasschet_ΔTy1()) print(a.rasschet_ΔTy()) print(a.rasschet_x()) Demo()
TypeError: ‘float’ object is not iterable for dataframe
No actually df[‘text’] has some tweets but this dataset has only one column which is text. It is giving me error when I am using nested for loop..
Mar 19, 2023 at 3:20
1 Answer 1
@miepsik is right, you probably have NaN in text column.
df = pd.DataFrame() text = [] for i in df['text']: string = "" for j in i: string += j text.append(string)
. TypeError: 'float' object is not iterable
To debug your dataframe and find NaN values, you can use:
>>> df.loc[df['text'].isna()] text 1 NaN
What I understand is you iterate on strings ( i ) then loop on each character ( j ) and create a list. I don’t know exactly what your dataframe looks like but you can optimize your code with vectorized functions like:
>>> df['text'].dropna().tolist() ['Hello', 'World']
Что означает ошибка TypeError: int object is not iterable
Ситуация: у нас есть какая-то переменная с числами, и мы хотим перебрать количество символов в ней с помощью цикла.
numbers = [4, 8, 15, 16, 23, 42] for number in len(numbers): print(number)
Кажется, что всё правильно, но при запуске появляется ошибка:
❌ TypeError: int object is not iterable
Что это значит: мы пытаемся запустить цикл для типа данных, с которым циклы не могут работать.
Когда встречается: когда мы пытаемся выполнить операцию с переменной, которая представляет собой целое число.
Что делать с ошибкой TypeError: int object is not iterable
Ошибка TypeError возникает, когда функция применяется к объекту неправильного типа данных. Например, если мы пытаемся применить математическую функцию к строке или вызвать значение, которое не является функцией, как функцию.
В нашем случае мы пытаемся перебрать элементы переменной, которая не является перебираемой. В Python перебираемые, или итерируемые, данные — это объекты, которые содержат несколько объектов, например списки, кортежи, наборы, словари и так далее. А наша переменная — целочисленная.
Целое число — это одно значение, и пытаться перебрать его в цикле не будет правильно.
Чтобы исправить ошибку, используем функцию range в первой строке цикла for.
numbers = [4, 8, 15, 16, 23, 42] for number in range(len(numbers)): print(number)
В Python функция range проверяет переданную в неё переменную и возвращает последовательность чисел внутри диапазона, начиная с 0.
Теперь всё работает:
Как проверить, является ли объект итерируемым
Чтобы узнать, что объект итерируемый, нужно выяснить, имеет ли объект метод __iter__() . Проверить это можно двумя способами.
Первый способ — использовать функцию hasattr() .
numbers = [3, 8, 15, 16, 23, 42] if hasattr(numbers, '__iter__'): print("Этот объект итерируемый") else: print("Этот объект не итерируемый")
Запустим этот код:
Второй способ — использовать функцию dir() .
numbers = [3, 8, 15, 16, 23, 42]
print(dir(numbers))
Среди перечисленных методов есть __iter__ (в центре третьей строки результата).