如何在同一行打印字符串和整数?

slb*_*slb 2 python string list

我正在尝试打印以下两个列表中的每个项目:

lNames = ['John','David','Michael']
lAges = [45,14,32] 

with the format: "Person 0, Name: John, Age 34".

I tried adding another list:

```py
lPersons = [0, 1, 2] 
Run Code Online (Sandbox Code Playgroud)

尝试了这个代码:

lNames = ['John','David','Michael']
lAges = [45,14,32]
lPersons = [0, 1, 2]

for a in lNames:
    for b in lAges:
        for c in lPersons:
            print("Person: " + c + ", Name: " + a + ", Age: " + b)
Run Code Online (Sandbox Code Playgroud)

这给出了TypeError,因为我在打印时错误地将整数与字符串组合在一起。为了达到预期的结果,我缺少什么?

Bro*_*ark 5

两个问题:

  1. 循环中的嵌套超出了for必要的范围。您不想迭代所有三个列表中元素的每个组合;相反,您有一份人员列表以及有关这些人员的信息,并且您希望一次打印一个人的信息。这只需要遍历每个列表一次。

  2. 正如错误所述,您无法连接字符串和整数。您可以改用f 字符串

这是解决这两个问题的代码片段:

for i in range(len(lNames)):
    print(f"Person: {lPersons[i]}, Name: {lNames[i]}, Age: {lAges[i]}")
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,使用zip()

for name, age, person_id in zip(lNames, lAges, lPersons):
    print(f"Person: {person_id}, Name: {name}, Age: {age}")
Run Code Online (Sandbox Code Playgroud)

这些输出:

Person: 0, Name: John, Age: 45
Person: 1, Name: David, Age: 14
Person: 2, Name: Michael, Age: 32
Run Code Online (Sandbox Code Playgroud)