gpt4 book ai didi

python - 为什么 time.sleep() 延迟在嵌套 while 循环中不能按预期工作?

转载 作者:行者123 更新时间:2023-11-28 21:42:55 25 4
gpt4 key购买 nike

有人可以解释为什么以下代码(打印乘法表)没有按预期工作吗?

import time
n = int(input("Enter number of multiples: "))
k = int(input("Enter number of tables: "))
c = 1
m = 1 #multiple
while m <= n:
while c <= k:
print("%4d" % (c*m), end='')
c+=1
time.sleep(1) #slower behaviour
m+=1
c=1
print("")

奇怪的是,它不是以一秒的间隔打印单个水平元素,而是以“k”秒的间隔一次打印整行。

事实上,用 C 编写的代码表现出相同的行为。

#include<stdio.h>
#include<unistd.h>
void main(){
int n,k,c=1,m=1;
printf("Enter number of Multiples: ");
scanf("%d",&n);
printf("Enter number of tables: ");
scanf("%d",&k);
while(m<=n){
while(c<=k){
printf("%4d",(c*m));
c+=1;
//sleep(1); //slower here
}
m+=1;
c=1;
sleep(1); //faster here
printf("\n");
}
}

也就是说,它不是打印一个元素并等待一秒钟,而是以“k”秒的间隔一次打印整行。

最佳答案

您告诉 print 跳过换行,但终端输出是行缓冲的。您需要刷新数据。

print("%4d" % (c*m), end='', flush=True)

关于python - 为什么 time.sleep() 延迟在嵌套 while 循环中不能按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43032339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com