【问题标题】:Can you help me to understand the loop?你能帮我理解循环吗?
【发布时间】:2021-06-11 16:00:03
【问题描述】:

list_=[1,3,5,7] 对于列表中的 i: 对于范围(i)中的j: 打印(一)

输出-1,2,2,3,3,3,5,5,5,5,5。

【问题讨论】:

    标签: python-3.x


    【解决方案1】:
    list_ = [1,3,5,7]
    for i in list_:
       for j in range(i):
           print(i)
    

    发生了什么:

    1. 在第一个外部循环 (for i in list_) 中,您将遍历 list_ 中的所有四个元素。这意味着i 的值在第一次迭代中为 1,在第二次迭代中为 3,在第三次迭代中为 5,在最后一次迭代中为 7。
    2. 在第二个内部循环 (for j in range(i)) 中,它创建了一个数字范围。这一次,for 的运行方式有所不同,它将不再获取范围的数字,而是将 i 重复其中的代码次数。

    例如,for j range(3) 这意味着,根据定义,我正在创建一个长度为 3 的迭代器,其元素范围从 0 到 2:[0,1,2],每个值将被分配给 j 一次。

    由于第一次外部迭代中的i 为1,所以内部循环首先将运行print(1) 一次。然后外循环中的其他剩余数字也会发生同样的情况。看看:

    for j in range(1)
        print(1)      # outputs 1
    
    for j in range(3)
        print(3)      # outputs 3 3 3
    
    for j in range(5)
        print(5)      # outputs 5 5 5 5 5
    
    for j in range(7)
        print(7)      # outputs 7 7 7 7 7 7 7
    

    最后,正确的输出应该是:1 3 3 3 5 5 5 5 5 7 7 7 7 7 7 7

    【讨论】:

      【解决方案2】:

      您提供的输出错误。 你正在做的循环是这样的: 迭代提供的列表,然后打印出该列表中的元素(您当前正在迭代的元素)与该元素的值一样多。

      因此,在您的情况下,您将有:1,然后是 3 乘以 3、5 乘以 5 和 7 乘以 7。

      我在这里简化了你的逻辑,因为 for j in range(i) 实际上是迭代:0、1、2、... i(其中 i 等于 1、3、5 或 7,具体取决于外部循环迭代)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-05
        • 2011-04-02
        • 2012-06-05
        • 2014-10-13
        • 2011-02-19
        • 2020-04-11
        相关资源
        最近更新 更多