2015-12-22 2 views
-2
file.write(newrecord) 

NameError: имя «файл» не определенNameError: имя «файл» не определен

Это ошибка, которую я получаю.

classa = int(input("What class are you in?")) 
if classa == "1": 
    file=open("class 4.csv", "a+") 
file.write(newrecord) 

Файл явно определен, и я не знаю, почему я получаю эту ошибку.

+1

Что произойдет, если класс не «1»? – Alp

+0

@Alp Я сделал код для этого, но если я введу 1 для класса, я получу ошибку. –

+0

Проверьте ваши отступы. – user2357112

ответ

2

Ваш отступ выключен. Python обрабатывает блоки на основе отступов. Кроме того, как отметил @davidism в комментарии выше, вы пытаетесь сравнить int с строкой.

Попробуйте это:

classa = int(input("What class are you in?")) 
if classa == 1: 
    myfile=open("class 4.csv", "a+") 
    myfile.write(newrecord) 

Предполагая, что newrecord определяется где-то выше, это в вашем коде.

Отредактировано код еще раз, чтобы удовлетворить комментарий Клейтона. file - это функция-конструктор в Python из версии 2.2.2.

+0

Это половина проблемы, другая половина - то, что @davidism опубликовано: 'input' преобразуется в' int', затем сравнивается с литералом 'str', поэтому тест _never_ проходит, даже если пользователь вводит' 1' , – ShadowRanger

+0

@ShadowRanger Видел, что - я дал давидизм +1 для комментария там. –

+0

Я просто предлагал вам сложить его в свой ответ, чтобы он был полным; Мне не нравятся ответы с ответами, которые касаются только одного аспекта проблемы (когда вся проблема может быть решена, конечно, некоторые проблемы, размещенные здесь, представляют собой всего лишь ужасную группу). – ShadowRanger

Смежные вопросы