繁体   English   中英

使用 2 for 循环

[英]Using of 2 for loop

我想从用户那里获取信息,并用 for 循环显示它。 我写了这段代码:

name=["Name","Age","Gender"]
n=str(input())
a=int(input())
g=str(input())
nameinput=[n,a,g]
for i in name:
    for j in nameinput:
        print(i,j)

我希望代码的 output 是:

姓名 Fuad,18 岁,性别 M

但实际的 output 是

姓名 Fuad 姓名 18 姓名 M 年龄 Fuad 年龄 18 年龄 M 性别 Fuad 性别 18 性别 M

我该如何解决这个问题,请你解释为什么我的代码没有运行

您正在执行迭代笛卡尔积的嵌套循环( name的每个元素都与nameinput的每个元素配对)。 您想要对多个可迭代对象进行成对迭代,这是由zip实现的:

for i, j in zip(name, nameinput):
    print(i,j)

zip的工作原理可以通过以下示例说明:

list(zip([1, 2, 3], [4, 5, 6]))
# [(1, 4), (2, 5), (3, 6)]

然而,嵌套循环会:

>>> [(i, j) for i in [1, 2, 3] for j in [4, 5, 6]]
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]

如果您逐步考虑循环代码,则该逻辑应该变得清晰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM