我希望制作一个程序,将打印从0
到x
的数字,并同时计数时间,并且两者都在控制台中同时执行。我怎样才能做到这一点?
例如,当计算机将数字从0
写入x
时,我想让程序计数时间:
import time
import sys
time_counter = 0
number = int(input("NUMBER: "))
counter = 0
while (counter < number):
sys.stdout.write("NUMBERS: " + str(counter) + '\r')
counter += 1
sys.stdout.write('\n')
while (counter < number):
sys.stdout.write("TIME COUNTER: " + str(time_counter) + '\r')
time.sleep(1)
time_counter += 1
我希望这两个while
代码块同时执行。
答案 0 :(得分:1)
首先,我不清楚您要实现的目标(代码的一般目的)。
但是对于特定的代码问题,您可以使用单个while
循环进行尝试,也许像这样:
import time
stop_number = int(input("NUMBER: "))
num_counter = 0
time_counter = 0
while num_counter < stop_number:
print(num_counter, time_counter)
time.sleep(1)
num_counter += 1
time_counter += 1
我不知道如何轻松地在终端的两行中打印,因此我的代码仅在同一行上打印,每次迭代打印一行。如果您想了解这一点,请看看this answer和其他类似的内容。
答案 1 :(得分:0)
如果要测量打印数字所花费的时间,可以尝试timeit
module:
import timeit
def f1(stop_number):
num_counter = 0
print('Numbers:')
while num_counter < stop_number:
print(num_counter, end=' ', flush=True)
num_counter += 1
print()
if __name__ == '__main__':
stop_number = int(input("NUMBER: "))
t = timeit.timeit(
stmt='f1({})'.format(stop_number),
setup='from __main__ import f1',
number=1000)
print()
print('The statement took in average {} seconds to run.'.format(t))
或者,如果需要,您也可以使用time.perf_counter()
测量时差:
import time
stop_number = int(input("NUMBER: "))
start_time = time.perf_counter()
num_counter = 0
while num_counter < stop_number:
print(num_counter)
num_counter += 1
end_time = time.perf_counter()
print('The code took {} seconds to run.'.format(end_time - start_time))
请注意,打印输出会花费大量时间;只是不打印而进行的迭代将花费更少的时间。