在for循环中打印列表中的项
我正在为我所连接的人写一个程序。在这个循环中,我想打印出正在循环的变量的名字和它的值。但是奇怪的是,当我在第一个循环中用“print str(item)”来打印这些变量时,什么都没有显示出来。虽然“unknown”会打印出来,但变量的名字却没有。
在另一个循环中,当我尝试把列表的名字当作字符串来运行时,我收到了一个错误信息,提示“TypeError: cannot concatenate 'str' and 'list' objects”。我该怎么解决这个问题呢?
如果还不太清楚,我想做的就是打印出变量的名字和它的值。
List= [Name, Company, Email, Work, Cell, Address]
Name = "Last, First"
Company = ""
Email = ""
Work = ""
Cell = ""
Address = ""
Todo = ['Do this']
Done = ['Did this']
Follow = ['Follow up on this day']
for item in List:
if item == "":
print str(item)+ "unknown"
else:
print item
print " "
for item in List1:
if len(item) == 0:
pass
else:
print str(item) + item
2 个回答
0
把 List
放在 Follow
后面;你是在把组件放进列表之后再定义它们。
0
你需要把以下内容移动:
List= [Name, Company, Email, Work, Cell, Address]
到下面的位置:
Name = "Last, First"
Company = ""
Email = ""
Work = ""
Cell = ""
Address = ""
Todo = ['Do this']
Done = ['Did this']
Follow = ['Follow up on this day']
否则程序就不知道那些变量的类型是什么。至于想要打印出变量里存的名字,这就有点复杂了。因为在循环中,程序会把名字“item”当作这个范围内的名字。所以即使你使用inspect模块去获取变量的名字,最后得到的也都是“item”。你可能更想用一个字典(如果你在意顺序,可以用OrderedDict)。它看起来会像这样:
List = {"Name": Name, "Company": Company, "Email": Email, "Work": Work, "Cell": Cell, "Address": Address}
然后你可以把你的循环修改成这样:
for item in List:
if List[item] == "":
print item + " unknown"
else:
print item
另外,作为一个通用的建议,给变量命名时最好不要用它们的类型来命名。避免用像List、Int、String这样的名字。这样做不好,将来只会让你感到困惑。