1
有人可以解釋爲什麼下面的代碼(打印乘法表)是不按預期工作?爲什麼time.sleep()延遲在嵌套while循環內無法按預期工作?
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'秒的間隔一次打印整行。