提问人:Mo Al Ali 提问时间:9/8/2023 最后编辑:ChrisMo Al Ali 更新时间:9/9/2023 访问量:133
如何在 python 中获取 - 仅最后一个元素 - While 循环?
How do I get - the last element only - of a While Loop in python?
问:
问题是我在 while 循环中获取所有元素,而不是最终结果。 有人知道我如何让 python 仅在终端中插入最后一个元素吗?
我试图插入以下循环的结果: 从 74 中减去 6,42 倍。结果应该是 -178,我使用以下代码得到:
i = 74
while i > -180:
print(i)
i = i - 6
我希望结果打印在一个元素(最后一个元素)中,而不是所有导致 -178 的数字。
答:
5赞
Chris
9/8/2023
#1
将打印件移到循环外部。跟踪递减前的值,然后打印该变量。i
i = 74
while i > -180:
j = i
i -= 6
print(j)
如果你只是在循环之后打印,你会得到.i
-184
或者,如果你喜欢非常简洁:
i = 74
while i > -180:
j, i = i, i - 6
print(j)
数学
如果你想使用数学方法,那么你需要得到你的开始和停止之间的间隔。
>>> start = 74
>>> stop = -180
>>> interval = stop - start
>>> interval
-254
除了你不想一直下降到-180,所以应该是-179。这给出的间隔为 -253。步长为 -6。如果我们进行整数除法,我们可以找出该步长进入该区间的次数。stop
>>> start = 74
>>> stop = -179
>>> interval = stop - start
>>> step = -6
>>> interval // step
42
现在,您只需要将该数字乘以 然后将其添加到您的开始中。step
>>> num_steps = interval // step
>>> start + num_steps * step
-178
1赞
Prudhviraj
9/9/2023
#2
i = 74
step = 6
while True:
i = i - step
if i <= -180:
i = i + step
break
print(i) # prints(-178)
如果低于-180,您也可以办理入住手续。
评论
0赞
Chris
9/9/2023
如果你要走这条路,我建议将 或 保存为一个名为 .6
-6
step
0赞
Prudhviraj
9/9/2023
谢谢@Chris - 添加了步骤变量。
0赞
Mo Al Ali
9/9/2023
谢谢!我现在得到了最后一个元素,但是“42”,即从数字 74 中减去的“6”的次数需要包含在代码中才能使其成为一个程序(即,如果我想从 74 中减去 6 x 次,x 在上一个示例中是 42。
0赞
trincot
9/9/2023
#3
看起来您要找到大于 -180 且其与 74 之差是 6 的倍数的最小值。
这不需要循环,因为它有一个闭合公式:
i = 74
j = -180 # the limit in your while condition
k = 6 # the step that is subtracted
print(j + 1 + (i - j - 1) % k) # -178
0赞
Alain T.
9/9/2023
#4
while 循环实现了递减级数,可以使用范围函数表示: 。如果在该范围内使用该函数,则将首先获得最后一个值。在该反转范围上使用该函数将只得到第一个值(即范围中的最后一个值):range(74,-180,-6)
reversed()
next()
print(next(reversed(range(74,-180,-6)))) # -178
对于对代码进行最小更改的解决方案,可以预先计算条件中的下一个值,以便不执行最后/额外的递减:i
i = 74
while i - 6 > -180:
i = i - 6
print(i)
或者您可以使用两个变量,一个用于控制循环 (nexti),另一个用于存储所需结果 (i):
nexti = i = 74
while nexti > -180:
i = nexti
nexti -= 6
print(i)
评论
-184
print
print(i + 6)
i
-184