Forum Programmation.python Pourquoi le résultat est il différent entre le programme en C et celui en python ?

Posté par  .
Étiquettes : aucune
0
28
nov.
2009
Bonjour,
voici le programme en python


def gotoxy(x,y):
print('\x1b['+str(y)+';'+str(x)+'H')
#print('\033['+str(y)+';'+str(x)+'H')

def horizontal(x, y, largeur, car):
debut=0
while (debut < largeur) :
gotoxy(x+debut,y)
print(car)
debut=debut+1

gotoxy(20,20)
print("hello")
horizontal(15,6,8,'*')


et le même en C

void gotoxy(int x,int y)
{
printf("\x1b[%d;%dH",y,x);
}

void horizontal(int x, int y, int largeur, int car)
{
int debut=0;
while (debut < largeur)
{
gotoxy(x+debut,y);
printf("%c",car);
debut=debut+1;
}
}


int main()
{
gotoxy(20,20);
printf("hello");
horizontal(15,6,8,'*');

return 0;
}



Celui en C fonctionne bien pas celui en python (le but est de faire le gotoxy et aussi une horizontale. Je n'ai pas mis les stdio.h car je n'arrive pas à mettre les "braquets" qui sont pris comme des balises ici.
Merci
  • # print

    Posté par  . Évalué à 3.

    Je n'ai pas testé, mais je suppose que le problème vient du fait que le print de python ajoute un retour à la ligne, il faut utiliser "sys.stdout.write" (après "import sys")
  • # Normal

    Posté par  . Évalué à 5.

    ==> sys.stdout.write('\x1b['+str(y)+';'+str(x)+'H')
    print te rajoute un newline d'où l'erreur de positionnement.
    Si tu tiens à utiliser print, deux méthodes:
    1) Python 2.x

    chaine='\x1b['+str(y)+';'+str(x)+'H'
    print chaine, # pas de parenthèses, sinon l'interpréteur s'emmèle les pinceaux.


    2) Python 3.x

    # from __future__ import print_function # pour que ça fonctionne avec Python 2.x
    print('\x1b['+str(y)+';'+str(x)+'H', end='') # on spécifie le caractère ajouté en fin de chaine par défaut c'est '\n'
    • [^] # Re: Normal

      Posté par  . Évalué à 2.

      Merci cela fonctionne

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.