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

Python 检查While循环中的值是否仍然相同,python,python-2.7,loops,while-loop,imperative-programming,Python,Python 2.7,Loops,While Loop,Imperative Programming,我想知道是否有一种优雅的方法可以检查while循环中不断变化的值,如果该值停止变化并保持不变,则停止while循环 例如: Value = 0 while True: value changes everytime (if value still the same break) 这样怎么样?顺便说一句:修复键入错误while在python中不是while value = 0 while True: old_value, value = value, way_to_new

我想知道是否有一种优雅的方法可以检查while循环中不断变化的值,如果该值停止变化并保持不变,则停止while循环

例如:

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

这样怎么样?顺便说一句:修复键入错误
while
在python中不是
while

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

这样怎么样?顺便说一句:修复键入错误
while
在python中不是
while

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]]
你可以:

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]]

一个更具可移植性的解决方案是将其设为类,以便实例保留以前的值。我还需要一个模糊匹配,所以我在下面的例子中包含了它

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
类SamenessObserver:
“”“用于监视一系列值以查看它们是否保持不变的对象。”。
如果需要引信匹配,可将最大偏差设置为某个公差。
>>>myobserver=SamenessObserver(10)
>>>myobserver.check(9)
假的
>>>myobserver.check(9)
真的
>>>myobserver.check(9)
真的
>>>myobserver.check(10)
假的
>>>myobserver.check(10)
真的
>>>myobserver.check(11)
假的
>>>myobserver=SamenessObserver(10,1)
>>>myobserver.check(11)
真的
>>>myobserver.check(11)
真的
>>>myobserver.check(10)
真的
>>>myobserver.check(12)
假的
>>>myobserver.check(11)
真的
>>> 
"""
定义初始值(self,initialValue,maxDeviation=0):
自身电流=0
self.previous=初始值
self.max偏差=max偏差
def检查(自身、值):
自身电流=值

sameness=(self.previous-self.maxDeviation)一个更具可移植性的解决方案是将其作为一个类,以便实例保留以前的值。我还需要一个模糊匹配,所以我在下面的例子中包含了它

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
类SamenessObserver:
“”“用于监视一系列值以查看它们是否保持不变的对象。”。
如果需要引信匹配,可将最大偏差设置为某个公差。
>>>myobserver=SamenessObserver(10)
>>>myobserver.check(9)
假的
>>>myobserver.check(9)
真的
>>>myobserver.check(9)
真的
>>>myobserver.check(10)
假的
>>>myobserver.check(10)
真的
>>>myobserver.check(11)
假的
>>>myobserver=SamenessObserver(10,1)
>>>myobserver.check(11)
真的
>>>myobserver.check(11)
真的
>>>myobserver.check(10)
真的
>>>myobserver.check(12)
假的
>>>myobserver.check(11)
真的
>>> 
"""
定义初始值(self,initialValue,maxDeviation=0):
自身电流=0
self.previous=初始值
self.max偏差=max偏差
def检查(自身、值):
自身电流=值

sameness=(self.previous-self.maxDeviation)如何定义保持不变?它是否应该匹配上一次迭代的值或任何已经发生的值?请在问题中添加更多细节。您只需将其保存到一个缓冲区中,该缓冲区将存储值并在每次值更改时刷新此缓冲区。是的,在多次迭代之间保持不变。唯一的方法是保存在缓冲区中?如何定义保持不变?它是否应该匹配上一次迭代的值或任何已经发生的值?请在问题中添加更多细节。您只需将其保存到一个缓冲区中,该缓冲区将存储值并在每次值更改时刷新此缓冲区。是的,在多次迭代之间保持不变。唯一的方法是保存在缓冲区中?请解释一下旧值、值=值、新值到新值的方式是如何工作的?好的,
way\u to\u new\u value
代表您更改值的操作。这个赋值是多行赋值的缩写。哇,这就是我当时所想的,这个双重赋值给人留下了深刻的印象。你能解释一下旧值,值=值,从新值到旧值的方式是如何工作的吗?嗯,
从新值到新值的方式
代表你改变值的操作。作业是多行作业的简称。哇,这就是我当时的想法,令人印象深刻的双重作业。