2013-05-08 2 views
4

У меня есть заявление, как этотPython вложенного если-иначе заявления

for word in tweet_text: 
    if word in new_words: 
     if new_words[word] == 0: 
      new_words[word] = sent_count 
     else: 
      new_words[word] = (new_words[word] + sent_count)/2 

И я очень подозрительно, что блок еще выполняется каждый раз, когда первое условие не выполняется (if word in new_words), возможно ли это? Я делаю что-то не так с углублением?

+0

Это кажется мне прекрасным ... что такое new_words и tweet_text, словари? –

+0

Область в Python определяется идентификатором, и я думаю, что ваш код даже не будет работать, если вы смешиваете пробелы с вкладками ... Вы действительно уверены в том, что вы говорите? Вы отлаживали свой код? – Renan

+0

Да, дело в том, что я получаю KeyError в блоке else, но это никогда не должно происходить из-за первого условия –

ответ

9

Предложение else соответствует if на том же уровне отступа, как вы ожидаете.

Проблема, которую вы видите, может быть связана с тем, что вы смешиваете вкладки и пробелы, поэтому кажущийся уровень отступов не совпадает с тем, который видит ваш интерпретатор.

Измените все вкладки на пробелы и проверьте, не исчезла ли проблема.

+0

Да, это действительно помогло, спасибо –

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