【问题标题】:Check how much a variable has changed over an amount of time检查变量在一段时间内发生了多少变化
【发布时间】:2020-01-18 07:04:33
【问题描述】:

所以我对 python 还很陌生,我正在尝试构建一个“类似股票市场”的游戏。

如果每次点击次数增加,价格就会上涨,反之亦然。

我现在的第一个挑战是存储我点击的次数。

到目前为止,我的代码如下所示:

from pynput.mouse import Listener

count = 0

def on_click(x, y, button, pressed):

 print("check")
 count += 1
 print(count)

with Listener(on_click=on_click) as listener:
listener.join()

现在,当我单击它时,它会按原样打印出“检查”,并且还会打印出“0”,因为我之前是这样定义的。但如果我再次点击它不会计数。抱歉,我最近才开始编程。

稍后我想知道每个时间跨度我点击了多少次。但还有很长的路要走。

感谢您的帮助

【问题讨论】:

  • 尝试使用import datetimetime = datetime.datetime.utcnow 在点击时保存到数据库/文件
  • 具体来说,您遇到的问题是局部变量与全局变量。您的第一个 count = 0 是一个全局范围变量,但是当您尝试在函数内重新分配 count += 1 时,它指的是函数内的局部变量。因此,每次执行函数时,局部变量 count 都是空的。
  • 解决方案可以在@Roca 的链接中看到。将 global count 放入您的 on_click 功能中
  • 谢谢你帮了我这么多。现在它起作用了。现在它实际上计数为 2。按下鼠标时一次,再次松开鼠标时一次。

标签: python python-3.x


【解决方案1】:

除了我对使用local vs global的评论之外,根据您的使用情况,您还可以考虑使用OOP方法:

class Mouse:
    def __init__(self):
        self.count = 0
    def on_click(self, x, y, button, pressed):
        print('check')
        self.count += 1
        print(self.count)

m = Mouse()
with Listener(on_click=m.on_click) as listener:
    listener.join()

这样,如果您想要跟踪不同的鼠标事件,您可以创建 Mouse() 的单独实例,这样将计数分开比使用一个全局变量要容易得多。

【讨论】:

    【解决方案2】:

    尝试全局变量

    from pynput.mouse import Listener
    
    count = 0
    
    def on_click(x, y, button, pressed):
        print("check")
        global count 
        count += 1
        print(count)
    
    with Listener(on_click=on_click) as listener:
        listener.join()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2017-12-27
      • 2022-07-29
      • 2019-01-05
      相关资源
      最近更新 更多