Python 检查While循环中的值是否仍然相同
我想知道是否有一种优雅的方法可以检查while循环中不断变化的值,如果该值停止变化并保持不变,则停止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
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
代表您更改值的操作。这个赋值是多行赋值的缩写。哇,这就是我当时所想的,这个双重赋值给人留下了深刻的印象。你能解释一下旧值,值=值,从新值到旧值的方式是如何工作的吗?嗯,从新值到新值的方式
代表你改变值的操作。作业是多行作业的简称。哇,这就是我当时的想法,令人印象深刻的双重作业。