Python While循环不迭代变量,仅打印命令

问题描述 投票:0回答:1

背景信息-我正在制作一个特殊的时钟,它将通过WS2812B像素显示时间并在我学习时学习!

我有一个字典,其中包含要发送给像素的命令,如下所示

hourvalues = {1: "Hour One",
              2: "Hour Two"}

etc等最多24并且主文档包含循环:

while True:
    print(hourvalues[hour])
    sleep(1)

目前,通过打印(作为测试),它的效果非常好,我每秒都会听到一个字。但是,如果我将字典更改为

hourvalues = {1: print("Hour One"),
              2: Print("Hour Two")}

和身体到

while True:
    hourvalues[hour]
    sleep(1)

为了表示将要发送命令而不是打印行的最后一件事,我只得到一个单词,就是这样。

我在做什么错?

这是我的第一篇文章,请保持温柔!谢谢大家

python loops dictionary while-loop clock
1个回答
0
投票

由于在构建字典时调用了print函数,它将在那时打印出该值,然后将返回值(None)存储在实际的字典中。

而是要创建一个函数字典,该函数字典将在调用时打印给定的字符串。 lambda表达式对此有用:

hour_actions = {
    1: lambda: print("Hour One"),
    2: lambda: print("Hour Two")
}

while True:
    hourvalues[hour]()
    sleep(1)

注意,您需要使用()来实际调用该函数!

© www.soinside.com 2019 - 2024. All rights reserved.