2013-12-04 5 views
-7

http://i.stack.imgur.com/etfOX.pngПроблемы с python, если условие

вопрос1: Условие if не работает. Каждый раз, когда она завершает работу
question2: (для г в диапазоне (1, в отставке [0] +1): NameError: имя 'RET' не определен)

+1

Пожалуйста, покажите нам свой код, где находится условное обозначение, и какая ошибка вы получаете – TerryA

+0

удалите инициализацию action 'action =" "' –

+0

, если я удалю действие, ошибка будет "действие не определено" – user3063988

ответ

0

Вот упрощенная версия того, что у вас есть:

action = "" 
if action == "stat": # Not true, action == "" 
    # stuff 
elif action == "list": # Not true, action == "" 
    # stuff 
elif action == "retr": # Not true, action == "" 
    # stuff 
else: # Looks like this is where we will end up 
    exit() 

Это не удивительно, вы бросить курить каждый раз, так как вы жёстко условие, чтобы сделать его бросить каждый раз.

Вы говорите, что если вы удалите action = "" вы получите NameError говоря action не определен ... это потому, что вы никогда не установить его на что-нибудь ... Я не уверен, что вы ожидали, если блок поступать так, как написано , Вам нужно что-то вроде этого:

action = a_function_that_gets_info_from_user_and_returns_a_string() 

Это установит action к чему-то, что может пройти ваш if блок.


В качестве примечания стороны, вы должны делать скриншоты для своих вопросов. Вместо этого скопируйте/вставьте; это вежливая вещь. Теперь мне нужно ввести свой код, чтобы проиллюстрировать, что неправильно, вместо того, чтобы самому копировать его.

+0

Прошу прощения. Я попытался скопировать/вставить, но он сказал, что я должен добавить контекст, чтобы объяснить раздел кода .... Я добавил контекст для моего кода, но он не смог. Так что мне пришлось загрузить картинку ... Мне так жаль об этом – user3063988

2

Ваш отступа, кажется, далеко. Это должно быть одинаковое количество кода. PEP 8 предлагает четыре пробела для отступов.

Возможно, вы получили IndentationError.


Возможно, вы упоминали, что "Every time it quits". Это ожидается. Ваш код, pp.quit() выйдет из программы, если action не равно 'stat', 'list', или 'retr', что и происходит.

+0

Я не согласен ... отступы выглядят хорошо для меня, кроме как в блоке 'else', но я не думаю, что это вызвало бы ошибку. – SethMMorton

+0

@SethMMorton Бит 'else' - это то, о чем я говорю. Код будет туда, потому что 'action! =' Любой из этих параметров, следовательно, ошибка – TerryA

+0

. Я хочу сказать, что поскольку 'pp.quit()' согласован внутри собственного блока ('else'), это законный питон, просто плохой стиль. Он не вызывает «IndentationError». Попробуй. – SethMMorton

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