【问题标题】:Simple logic explanation in loop?循环中的简单逻辑解释?
【发布时间】:2016-07-11 06:24:31
【问题描述】:

我正在尝试解决与循环相关的逻辑问题。如果我有一个用于例如 50 次迭代的 n 循环,并且我只想在迭代为 n+10(值分别为 10、20、30、40 和 50)时提取值,那么逻辑是什么? (cmets中的行是我的逻辑,仍然导致错误的输出):

x[0] = 0
for n in xrange(0,50):
    x[n+1] = x[n] + 5
    #if x[n]%10==0:
        #y = x[n]

print x
#print y

【问题讨论】:

  • n%10,不是x[n]%10
  • 请提供您希望y 成为的示例。
  • 有效!感谢您的所有解释和示例

标签: python loops logic


【解决方案1】:

看起来您有一个列表x 并希望设置x 中的每个值。您还希望 y 成为 x 的子集(每 10 个元素)。

x = [0] * 51
for n in range(50):
    x[n+1] = x[n] + 5
y = x[::10]

print(y)  # prints [0, 50, 100, 150, 200]

【讨论】:

    【解决方案2】:

    你的基本逻辑是正确的。这是你的算法:

    For every element n between 0 and 50:
      if n is evenly divisible by ten
        return the value of n
    

    不过,您的实现有点偏离。试试这个:

    x = list()
    for n in range(0,50):
        if n % 10 == 0:  # Save the value if it's evenly divisible by ten
            x.append(n)
    
    print(x)
    

    在 REPL 中,这给出了输出:

    >>> print(x)
    >>> [0, 10, 20, 30, 40]
    

    请注意,如果您不需要其他值(不能被十整除),则没有理由将它们保存到数组中。迭代仍将遍历这些值,但在这种情况下,对它们不做任何事情。

    【讨论】:

      猜你喜欢
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 2019-05-25
      • 2017-05-25
      • 2014-10-03
      • 2011-01-14
      相关资源
      最近更新 更多