在for循环中打印列表中的项

0 投票
2 回答
654 浏览
提问于 2025-04-18 08:26

我正在为我所连接的人写一个程序。在这个循环中,我想打印出正在循环的变量的名字和它的值。但是奇怪的是,当我在第一个循环中用“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这样的名字。这样做不好,将来只会让你感到困惑。

撰写回答