检查 While 循环中的值是否仍然相同 Python

Check if a value still remains the same in a While loop Python

我想知道是否有一种优雅的方法来查看是否可以检查在 while 循环中不断变化的值,并在值停止变化并保持不变时停止 while 循环。

例如:

Value = 0
while True:
    value changes everytime
    (if value still the same break)

这样怎么样?顺便说一句:修正你的拼写错误 while is not While in python.

value = 0
while True:
    old_value, value = value, way_to_new_value
    if value == old_value: break

您可以:

value_old = 0
value_new = 1
value = [value_old, value_new]
while True:
    # change

    # test
    if value[0] == value[1]:
        break
    else:
        value = [value[1], value[0]]
previous = None
current = object()
while previous != current:
    previous = current
    current = ...

一种更便携的解决方案是将其设为 class,以便实例保持先前的值。我还需要模糊匹配,所以我将其包含在下面的示例中。

class SamenessObserver:
    """An object for watching a series of values to see if they stay the same.
    If a fuzy match is required maxDeviation may be set to some tolerance.

    >>> myobserver = SamenessObserver(10)
    >>> myobserver.check(9)
    False
    >>> myobserver.check(9)
    True
    >>> myobserver.check(9)
    True
    >>> myobserver.check(10)
    False
    >>> myobserver.check(10)
    True
    >>> myobserver.check(11)
    False
    >>> myobserver = SamenessObserver(10, 1)
    >>> myobserver.check(11)
    True
    >>> myobserver.check(11)
    True
    >>> myobserver.check(10)
    True
    >>> myobserver.check(12)
    False
    >>> myobserver.check(11)
    True
    >>> 

    """

    def __init__(self, initialValue, maxDeviation=0):
        self.current = 0
        self.previous = initialValue
        self.maxDeviation = maxDeviation

    def check(self, value):
        self.current = value
        sameness = (self.previous - self.maxDeviation) <= self.current <= (self.previous + self.maxDeviation)
        self.previous = self.current
        return sameness