2016-01-18 53 views
1
for cVariable in CFile.Variables: 
    occCtr=0 
    for cVar2 in CFile.Variables: 
     if cVariable.Name == cVar2.Name: 
      occCtr+=1 
    if occCtr > 1: 
     res = False 
     errmsg += cVariable.Name + ' is declared more than once ' + '\n' 

這是我的算法。它正在解析一個C文件並發現變量是否被多次聲明。但是,當我打印錯誤消息時,它顯示了兩個具有相同名稱的變量,我只需要從每個變量中打印一個變量。如果聲明不止一次,則打印C文件變量

+0

變量將與自身匹配。 –

回答

0
from collections import Counter 

declarations = Counter(var.Name for var in CFile.Variables) 
duplicates = [ 
    "{} is declared {} times".format(name, times) 
    for name, times in declarations.items() where times > 1 
] 
duplicates.sort() 
error_msg = "\n".join(duplicates) 
+0

它看起來像我的collections.py丟失。有什麼辦法可以將它轉換成一個有條件的循環?感謝您的回答 ! –

+0

@Alex如果您修復了安裝,那會更好 –