我有一些代码,我想在我的一些故障排除

2024-05-06 13:00:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我的计时器不能正常工作,因为它一直在打印,不是我想要的。你知道吗

我已经尝试过用很多方法重新组织脚本,但结果总是一样的。你知道吗

import time
CommandInput = input()
#execution [uptime]
def uptime(y):
    while 1 == 1:
        if (CommandInput == "uptime"):
            print(y, " seconds")
        y = y + 1
        time.sleep(1)


uptime(9)

我想制作一种“后台计时器”,从脚本执行到脚本关闭一直运行,如果在输入中键入某一行,它将显示当前的数字。问题是,它会永远打印计时器,每一个数字都会计数。我想做一个一次性的事情,在那里你可以等待你想要的,并键入输入,这将显示计时器在数字。你知道吗


Tags: 方法import脚本input键入iftimedef
2条回答

要编写这样的脚本,您需要研究一个名为asyncio(https://docs.python.org/3/library/asyncio.html)的模块,它允许您同时运行多个程序。你知道吗

以下是asyncio hello world:

import asyncio

async def main():
    print('Hello ...')
    await asyncio.sleep(1)
    print('... World!')

# Python 3.7+
asyncio.run(main())

当前程序必须等待input()完成。直到用户按enter键,编译器才移过第二行。因此,一旦输入完成,函数就会启动。你知道吗

这个计时器可以通过多种方式完成,例如线程或计时器。有一些这样的例子herehere。对于线程,您需要一个用于用户输入的进程和一个用于计时器的进程。但更好更简单的方法是使用计时器并存储当前时间。我相信下面的代码与您想要的有些相似:

import time

start_time = time.time()

def get_time():
    current_time = time.time()
    total = current_time - start_time
    return total

while True:
    CommandInput = input()
    if CommandInput == "uptime":
        y = get_time()
        print(str(round(y)) + " seconds")

变量start\u time记录开始时的当前时间。时间。时间()获取计算机上的当前时间(以秒为单位)。get_time函数在输入后调用,通过减去当前时间减去开始时间来查看粘贴了多少时间。这样就不需要多个循环。你知道吗

while True循环只是等待用户输入,然后打印时间。然后重复此操作,直到程序退出。你知道吗

相关问题 更多 >