如何在 python 中获取 - 仅最后一个元素 - While 循环?

How do I get - the last element only - of a While Loop in python?

提问人:Mo Al Ali 提问时间:9/8/2023 最后编辑:ChrisMo Al Ali 更新时间:9/9/2023 访问量:133

问:

问题是我在 while 循环中获取所有元素,而不是最终结果。 有人知道我如何让 python 仅在终端中插入最后一个元素吗?

我试图插入以下循环的结果: 从 74 中减去 6,42 倍。结果应该是 -178,我使用以下代码得到:

i = 74
while i > -180:
    print(i)
    i = i - 6

我希望结果打印在一个元素(最后一个元素)中,而不是所有导致 -178 的数字。

python-3.x while-loop

评论

1赞 nicomp 9/8/2023
在循环后移动 print 语句?
0赞 JRiggles 9/8/2023
@nicomp在这种情况下打印,因为正如所写的那样,在减法之前调用了。我想 OP 可以,但这感觉很笨拙。-184printprint(i + 6)
0赞 Chris 9/8/2023
@nicomp,比这稍微复杂一些,因为在循环之后,是.i-184
0赞 Kelsey 9/9/2023
这回答了你的问题吗?检测“for”循环中最后一个元素的 pythonic 方法是什么?

答:

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-6step
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)