首页 > 解决方案 > 我如何将这个计时器变成每秒更新的函数?

问题描述

def timer()
    import time
    x, y, z = 0, 0, 0
    while True:
        time.sleep(1)
        print(str(z) + ":" + str(y) + ":" + str(x))
        x += 1
        if x == 3:
            x = 0
            y += 1
            if y == 3:
                x, y = 0, 0
                z += 1
                if z == 3:
                    x, y, z = 0, 0, 0

我尝试返回该值,但它只会返回 0:0:0 一次,而且我不知道如何让它作为一个函数不断更新。

标签: python

解决方案


如果您更正语法错误,似乎可以正常工作:

import time


def timer():
    x, y, z = 0, 0, 0
    while True:
        time.sleep(1)
        print(str(z) + ":" + str(y) + ":" + str(x))
        x += 1
        if x == 3:
            x = 0
            y += 1
            if y == 3:
                x, y = 0, 0
                z += 1
                if z == 3:
                    x, y, z = 0, 0, 0


if __name__ == '__main__':
    timer()
0:0:0
0:0:1
0:0:2
0:1:0
0:1:1
0:1:2
0:2:0
0:2:1

如果您决定扩大此计时器(例如,时钟中有更多空间),将值存储在列表中而不是三个硬编码变量中会给您更大的灵活性:

import time


def timer() -> None:
    clock = [0] * 3
    while True:
        time.sleep(1)
        print(":".join(str(d) for d in clock[::-1]))
        i = 0
        while True:
            clock[i] += 1
            if clock[i] < 3:
                break
            clock[i] = 0
            i = (i + 1) % len(clock)


if __name__ == '__main__':
    timer()

这给出了与原样相同的输出,但您可以通过更改此行来任意增大“时钟”:

    clock = [0] * 3

并且您可以通过更改此行来任意增加每个数字的计数:

            if clock[i] < 3:

推荐阅读