我正在尝试制作我的代码,以便只输入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);
答案 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; 它不会进入循环。