python - 我如何将这个计时器变成每秒更新的函数?
问题描述
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 一次,而且我不知道如何让它作为一个函数不断更新。
解决方案
如果您更正语法错误,似乎可以正常工作:
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:
推荐阅读
- python - 如何在我制作的随机 2D 地牢中确定正确的墙壁碎片?
- python - 我想在 python 中使用 strip() 和字符串理解方法从多行字符串中删除所有特殊字符
- python - 模块没有属性'func'
- python - 从列表列表中按特定关键字提取列表
- tensorflow - 神经网络,为什么我们在进行批量梯度下降时沿轴 0 (np.sum(..., axis=0)) 求和偏差?
- r - 网格作为ggplot中的条形
- swift - Swift 暗模式背景渐变
- python - 无法创建文件 - 用于分类的 Resnet50 模型 api
- android - 在 EditText 中输入单词时删除下划线
- hortonworks-data-platform - Hortonwork Ambari 服务未启动