Convertisseur numérique

Jean-PierreBoudine -  
Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je cherche à écrire le script d'un convertisseur de la base dix à la base trois.
Je suis tout à fait débutant en Python.
J'ai écrit ceci, qui imite la démarche standard :

n=input("n:")
i=0
q[i]=n
while q[i] > 0 :
    q[i+1]=q[i]//3
    r[i]=q[i]%3
print "r[i-1],r[i-2],..r[1],r[0]"


Mais Python me dit que "q" n'est pas défini.
Quelqu'un peut-il m'expliquer quelle(s) faute(s) je fais ?
Bien cordialement,
JP Boudine

Configuration: Windows / Chrome 70.0.3538.102
A voir également:

1 réponse

Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   171
 
Tu n'a jamais affecté de valeur à q donc cette variable n'existe pas. Voici un bout de code à ajouter au début :
q = [] #tableau vide
0
Jean-PierreBoudine Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Hum. Merci ! Mais il doit y avoir d'autres erreurs.
JP
0
Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   171
 
S'il y a d'autres erreurs, ajoute les ici. Je ne connais que la première erreur que tu as cité.
0
Jean-PierreBoudine Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Maintenant Python me dit, à propos de la ligne 4 (q[i]=n) "index assignment out of range". Le fond de l'affaire c'est que je ne comprends pas comment fonctionne l'indice. On fait des divisions successives des quotients par trois jusqu'à obtenir un quotient inférieur à 3, ainsi le suivant sera zéro, et à la fin on collecte les restes dans l'ordre inverse. On ne peut pas savoir combien il y aura d'étapes, donc je ne comprends pas comment je peux être "out of range".

n=input("n")
i=0
q=[]
q[i]=n
while q[i] > 0 :
q[i+1]=q[i]//3
r[i]=q[i]%3
print "r[i-1],r[i-2],..r[1],r[0]"

Bonne journée,
JP

PS je n'ai pas non plus compris où il faut mettre des balises pour que le code apparaisse correctement ici.
0
Jithel Messages postés 843 Date d'inscription   Statut Membre Dernière intervention   171
 
En fait, y'a plusieurs soucis :
1. "index assignment out of range" signifie que tu tentes d'accéder à un élément du tableau par un index (ici i) qui est en supérieur à sa taille (ici, 0).

Il faut initialiser ton tableau à une taille si tu la connais au début, ou ajouter des éléments dedans au fur et à mesure avec la méthode
q.append(q[i]//3)


2. La boucle while n'est jamais censé s'arrêter et effectuera la même opération tout le temps :
q[1]=q[0]//3
r[0]=q[0]%3

il manque la ligne suivante après les deux instructions de la boucle :
i = i+1


Concernant l'insertion de code Python dans les balises, il faut que tu cliques sur l'icone <> dans l'édition de ton message puis tu choisis Python. Tu peux aussi écrire
<code python>#ceci est un commentaire python à remplacer par du code
</code>
0