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

How to print strings and integers in the same line?

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

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] 

试过这段代码:

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)

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

两期:

  1. for 循环中的嵌套过多。您不想遍历所有三个列表中的每个元素组合;相反,您有一份人员列表和有关这些人的信息,并且您希望一次打印一个人的信息。这只需要通过每个列表一次。

  2. 如错误所述,您不能连接字符串和整数。您可以改用 f-string

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

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

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

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

这些输出:

Person: 0, Name: John, Age: 45
Person: 1, Name: David, Age: 14
Person: 2, Name: Michael, Age: 32

如果您的姓名和年龄列表的长度相同,那么您可以这样做:

names = ['John','David','Michael']
ages = [45,14,32]

for i, (n, a) in enumerate(zip(names, ages)):
    print(f'Person {i}, Name: {n}, Age {a}')

输出:

Person 0, Name: John, Age 45
Person 1, Name: David, Age 14
Person 2, Name: Michael, Age 32

在不使用 f"" 格式的情况下,您可以使用一个 for 循环来实现该结果,但是在继续该解决方案之前您需要检查您的三个列表是否具有相同的长度并且它们的数据是正确的:

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

for i in range(len(lAges)):
    print("Person: " + str(i) + ", Name: " + lNames[i] + ", Age: " + str(lAges[i]))

通过使用 str.format,您可以先创建一个模式字符串,然后在(例如)迭代期间动态填充。字符串中的占位符用 {}.

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


pattern = "Person {}, Name: {}, Age {}."

output = '\n'.join(pattern.format(i, lNames[i], lAges[i]) for i in range(len(lNames)))
print(output)