Quelqu'un peut-il expliquer pourquoi le code suivant (pour imprimer la table de multiplication) est ne fonctionne pas comme prévu?Pourquoi le délai time.sleep() ne fonctionne pas comme prévu dans la boucle while imbriquée?
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("")
Ce qui est étrange à ce sujet est qu'au lieu d'imprimer un seul des éléments horizontaux à des intervalles d'une seconde, il imprime toute la ligne à la fois dans un intervalle de secondes « k ». En fait, le code écrit en C présentait le même comportement.
#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");
}
}
Autrement dit, au lieu d'imprimer un élément et en attente d'une seconde, il toute imprimé rangée à la fois à des intervalles de « k » seconde (s).