Ошибка записи в файл: int' object is not subscriptable
Код:
def new_dict(self):
file = open('C:/Users/vlodko/Desktop/PYTHON_WORK/base.txt', 'w')
for i in range(self.num_dict):
print("People №", i)
nam = str(input("Person Name: "))
sur = str(input("Person Surname: "))
age = int(input("Person age: "))
color = str(input("Person Lovely color: "))
self.dict_1[i] = {
"Name": nam,
"Surname": sur,
"Age": age,
"Lovely color": color}
file.write("Name: "+nam[i]+'\n')
file.write("Surname: " + sur[i]+'\n')
file.write("Age: " + age[i]+'\n')
file.write("Color: " + color[i]+'\n')
file.write(self.c+'\n')
file.close()
Когда в словарь входит 2+ человека получаю ошибку file.write("Age: " + age[i]+'\n') int' object is not subscriptable
Как это все правильно записать в файл?
Ответы (1 шт):
age = int(input("Person age: "))
...
file.write("Age: " + age[i]+'\n')
В age у вас целое число, что вы пытаетесь сделать, когда берёте от числа [i]?
На самом деле и в остальных строках вы непонятно что делаете. Вы перебираете символы строк с помощью [i], при этом значение i у вас никак не коррелирует с длиной этих строк, я не понимаю, что вы вообще тут пытаетесь сделать.
Возможно, вы хотите записать элементы словаря, который заполняете, тогда можно записывать их либо из текущих переменных:
file.write("Name: "+ nam+'\n')
file.write("Surname: " + sur+'\n')
file.write("Age: " + str(age)+'\n')
file.write("Color: " + color+'\n')
Либо из элементов самого словаря:
file.write("Name: "+self.dict_1[i]["Name"]+'\n')
file.write("Surname: " + self.dict_1[i]["Surname"]+'\n')
file.write("Age: " + str(self.dict_1[i]["Age"])+'\n')
file.write("Color: " + self.dict_1[i]["Lovely color"]+'\n')
P.S. У file.close() нужно уменьшить табуляцию, у вас файл закрывается на каждой итерации цикла, нужно вынести закрытие файла на тот же уровень, что и for.
Но ещё лучше использовать такую конструкцию и не вызывать file.close() вообще:
with open('C:/Users/vlodko/Desktop/PYTHON_WORK/base.txt', 'w') as file:
for ...