【问题标题】:How to update a variable inside the while loop and see the results?如何更新while循环内的变量并查看结果?
【发布时间】:2019-02-24 19:34:25
【问题描述】:

我想使用一个 for 循环来定义一个范围,我想使用一个 while 循环来检查这个 for 循环中每个值的条件,并为我提供不同 c 值的结果,但不幸的是,我的算法不起作用,我不知道我的错误是什么。

j=0
jl=[]
c=np.linspace(0,20,num=20)
for a in range(0,len(c)):
    while j<5:
        j=c[a]+2
    jl.append(j)

我正在寻找的结果是将不同的 c 值放入 while 循环中并计算 j 并检查它是否大于 5。如果是,则将其附加到 jl。总的来说,我想用带有索引的for循环定义一个范围,并在while循环中检查这个范围的每个值并获得j的结果。 所以预期结果是 j 的值小于 5 (c[a]+2

【问题讨论】:

  • 你从j=0开始,你的while条件是j&gt;5所以它永远不会运行。
  • @wwii 抱歉我写错了,我更正了
  • 您的示例有 jl.append(j) outside/after for 循环 - 这是有意的吗? - 它只会在 for 循环完成后运行一次。
  • @wwii 其实我是编程新手,尤其是python,这就是为什么我不知道自己的错误,这个任务对我来说非常重要,因为我要在大学里写一个程序。实际上,我现在不知道我应该把这个附加在哪里。我没有得到任何结果。
  • 您实际上并不需要此处的范围,因为您从不尝试将c[a] 分配 或将a 用于索引c 以外的任何内容。只需直接遍历cfor item in c: while j &lt; 5: j=item + 2; ...

标签: python


【解决方案1】:

你的代码有一个问题:

j=0

“While 循环”永远不会运行,因为他的条件是 j>5。纠正它并告诉我们它是否有效。

【讨论】:

    【解决方案2】:

    请仔细检查以下建议的解决方案是否满足您的所有要求。无论如何,我认为List Comprehensions(例如 compare section 5.1.3.)可以帮助你。

    c=np.linspace(0,20,num=20)
    ls = [x+2 for x in c if((x+2)<5)]
    print(ls)
    

    将产生以下输出:

    [2.0, 3.052631578947368, 4.105263157894736]
    

    如果你想做更复杂的数据操作,你也可以借助函数来实现,例如喜欢:

    def someManipulation(x):
        return x+2
    
    ls = [someManipulation(x) for x in c if(someManipulation(x)<5)]
    

    【讨论】:

      【解决方案3】:

      你的算法不起作用,因为

      while j<5:
          j=c[a]+2
      

      对于 j = 0, a = 0 是一个无限循环。

      你可能想写的是:

      for x in c:
          j = x + 2
          if j < 5:
              jl.append(j)
      

      不过,另一个答案中的列表理解版本的功能完全相同,但更好。

      【讨论】:

        猜你喜欢
        • 2021-11-09
        • 1970-01-01
        • 2018-02-14
        • 2013-09-13
        • 1970-01-01
        • 1970-01-01
        • 2011-09-08
        • 1970-01-01
        • 2018-04-28
        相关资源
        最近更新 更多