2017-02-22 49 views
0

Так у меня есть функция, которая содержит петлю следующим образом:Как проверить, если переменная существует в операторе печати

for k,v in dict1.items(): 
    try: 
     if dict1[k] != dict2[k]: 
      key_diff = k 
      value_diff = dict1 [k] 
    except: 
     pass 

Если key_diff и value_diff определены (то есть разница между 2 словарях), то Я хочу напечатать каждую из этих переменных в другом месте. Но проблема в том, что я хочу, чтобы напечатать его в заявлении для печати многострочного как так (обратите внимание на последнюю строку) ...

print("File extension count:", 
    len(ext1_lst), '.ext1 files', 
    len(ext2_lst), '.ext2 files', 
    'Missing File Types:', '\n', 
    'Missing ext1 files =', ','.join(set(ext1_names).difference(ext1_lst)), 
    'Missing ext2 files =', 'there is/are', value_diff, 'missing', key_diff, 'files', '\n\n\n', 

код не будет работать, если словари идентичны, так как ни один словарь не является created - я получаю «unboundlocalerror, на который ссылается перед назначением». Мой вопрос в том, как я могу проверить, был ли результат для оператора try/except в инструкции print.

+0

В целом, если есть какая-либо неопределенность в отношении того, определена ли переменная, вы делаете что-то неправильно. Инициализируйте их перед циклом: '' 0'' и '' '' '' будут производить разумный вывод без дальнейших изменений или вы можете проверить одну из переменных для его начального значения и полностью исключить эту последнюю строку вывода в том, что дело. – jasonharper

ответ

0

Я не понимаю, почему у вас есть попытка/улов внутри цикла for. Не существует условия, при которых это может вызвать исключение.

Независимо от того, простым решением было бы инициализировать переменные с начальным значением перед входом в цикл. Впоследствии вы можете сравнить, изменились ли значения.

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

  • Нет связанных вопросов^_^