2017-02-22 103 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', 

如果字典是相同的,因爲沒有字典的代碼將無法正常工作創建 - 我得到一個「unboundlocalerror在賦值之前被引用。」我的問題是如何檢查打印語句中是否存在try/except語句的結果。

+0

一般來說,如果對變量是否定義存在任何不確定性,那麼您做錯了什麼。在循環之前初始化它們:''0''和''「」''會產生一個合理的輸出而不做進一步的修改,或者你可以檢查其中一個變量的初始值,並且完全忽略最後一行輸出案件。 – jasonharper

回答

0

我不明白你爲什麼在for循環中有try/catch。沒有任何條件會導致異常。

無論如何,一個簡單的解決方案是在進入循環之前用初始值初始化變量。您稍後可以比較以查看值是否已更改。

相關問題