首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果python中变量的值发生了变化,如何打印语句?

如果python中变量的值发生了变化,如何打印语句?
EN

Stack Overflow用户
提问于 2018-06-25 06:18:21
回答 2查看 1.4K关注 0票数 2

假设我的代码是这样的:

代码语言:javascript
复制
while True:
    nheight = tc.getblockcount()['count']

和tc.getblockcount..。作为一个rpc调用,结果是一个存储在变量nheight中的整数。这个值更改了大约30秒,那么如何让它在更改时打印一条语句呢?现在我已经做了这样的事情:

代码语言:javascript
复制
height = tc.getblockcount()['count']

while True:

    nheight = tc.getblockcount()['count']

    if height != nheight:

            print("Val Changed")

            height = nheight

            time.sleep(0.4)

所以希望当nheight发生变化时,它会检测到它,因为它不同于height,后者具有相同的原始值。然后,它更新值height,这样它就不会因为值更改了一次而一直打印Val Changed。然后它会休眠0.4秒,然后再次循环

现在的问题是,它会打印"Val Changed“一次,但不会再打印一次,即使值发生了变化(我已经通过插入一些print语句进行了验证)。

有人能帮我做一些东西,当nheight的值改变时打印一些东西吗?

另外,如果可能的话,由于我的其余代码不是使用OOP编写的,而且我对它的理解也不是很好,所以给出的示例没有使用OOP?

(我认为有一种叫做观察者模式的东西可以做到这一点,对吗?)

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-20 08:23:14

更新:我在一些帮助下让它工作,问题出在代码的另一部分上,谢谢!

票数 0
EN

Stack Overflow用户

发布于 2018-06-25 06:29:29

因为我不知道tc.getblockcount是什么,所以这里有一个函数,它返回的数字基本相同,但有10%的时间会发生变化

代码语言:javascript
复制
def value_iter():
    last_value = 1
    while True:
        yield last_value
        if random.random() < 0.1:
           last_value = last_value + 1

def getblockcount(it=value_iter()):
    return next(it)

height = getblockcount()
while True:
    nheight = getblockcount()
    print(nheight,"=?=",height)
    if nheight != height:
       print("UPDATE!\n\n")
       height=nheight

正如你所看到的,如果你复制它,它会像预期的那样工作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51014427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档