2016-01-18 30 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如果您修复了安装,那会更好 –