如何在检查列表中的项目时使用while循环

时间:2015-10-17 08:44:38

标签: python

我正在尝试制作我的代码,以便只输入7个项目,当输入7个时,循环将完成。但是下面的代码目前不会这样做。

这是我的代码:

SELECT UserId,
       StatId,
       CASE WHEN IT = 0 OR OT = 0
            THEN 0
            ELSE OT - IT
       END AS Suma
FROM (SELECT UserId,
             StatId,
             CASE EventInTime
                  WHEN 0 THEN InTime
                  ELSE EventInTime
             END AS IT,
             CASE EventOutTime
                  WHEN 0 THEN OutTime
                  ELSE EventOutTime
             END AS OT
      FROM Worktimes);

4 个答案:

答案 0 :(得分:2)

从空列表开始。否则循环体将不会运行,因为已有8个元素。

oc = []

while len(oc) < 7:  # `<=` -> `<`
    x = int(input("Enter a number"))
    oc.append(x)

并且,应该调整条件。否则,它将再获得一个项目(8)。

答案 1 :(得分:1)

你想要一个空列表,这样你就可以在每次迭代中追加一些东西,并且在7次迭代之后你想要打破循环。很简单。

现在,让我们看看你的参与。

>>oc = [0]*8
>>oc
[0, 0, 0, 0, 0, 0, 0, 0]
>>len(oc)
>>8

所以,你基本上是在创建一个8个元素的列表,每个元素都是0,行[0]*8

while len(oc) <= 7: #This will never be true because len(oc) is 8 already.

所以,取一个空列表[]。下面的代码可以使用。

def occupants():
    oc = []
    while len(oc) < 7:
        x = int(input("Enter a number"))
        oc.append(x)

答案 2 :(得分:0)

您的代码无效的原因是因为您从一个已包含7个以上项目的列表开始,因此while循环将在启动之前完成。其次,break条件是不必要的,因为while循环将在它True之前结束。

除非用例比问题中给出的示例更复杂,否则简单的列表理解可以实现此结果:

oc = [int(input("Enter a number")) for x in xrange(7)]

这只运行7个输入,只需要一行代码,在我看来更清晰和pythonic。

答案 3 :(得分:0)

您只需要重新检查您的逻辑,无论如何您可以编写如下代码

def occupants():
  oc = []
  while len(oc) < 7:
    x = int(input("Enter a number"))
    oc.append(x)
  print oc
  

你的循环将一直运行到&#34; oc&#34;是6并且在&#34; len(oc)= 6&#34;它   将进入循环以附加第7个元素,并且当&#34; len(oc)= 7&#34;   它不会进入循环。