Mon programme fonctionne pas
Résolu
MiSter_OutFox
Messages postés
207
Statut
Membre
-
MiSter_OutFox Messages postés 207 Statut Membre -
MiSter_OutFox Messages postés 207 Statut Membre -
Bonjour,
J'ai codé vite-fait un programme python pour convertir un nombre normale en binaire, le problème c'est qu'il ne fonctionne pas :/
Je suis débutant, donc je pense que c'est une erreur de base. Quand j'ouvre mon programme avec python, j'arrive à distinguer qu'il me dit : " File : "*Localisation de mon programme*", line 4 ". J'ai cherché, mais je n'ai pas trouvé pourquoi il y a une erreur.
Voici le programme :
Merci d'avance de votre aide.
La seul question qui reste sans réponse est celle que tu ne te poses pas
J'ai codé vite-fait un programme python pour convertir un nombre normale en binaire, le problème c'est qu'il ne fonctionne pas :/
Je suis débutant, donc je pense que c'est une erreur de base. Quand j'ouvre mon programme avec python, j'arrive à distinguer qu'il me dit : " File : "*Localisation de mon programme*", line 4 ". J'ai cherché, mais je n'ai pas trouvé pourquoi il y a une erreur.
Voici le programme :
A = Input("Nommbre à convertir :")
X = 0
C = 1
While A > 0:
If(A%2=0):
A/2 = A
C*10 = C
Else :
(A-1)/2 = A
X+C = X
C*10 = C
print(X)
Merci d'avance de votre aide.
La seul question qui reste sans réponse est celle que tu ne te poses pas
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
5 réponses
-
De mémoire, il n'y as pas de majuscule sur les instructions :
While -> while
-
Bonjour, je confirme.
C'est le cas pour if et else aussi.
D'autre part, en python et dans de nombreux langages, il y a un différence de syntaxe entre l'égalité entre 2 variables et l'affectation de valeur
A=2 veut dire qu'on affecte 2 à 1
A==2 veut dire que l'on teste si la valeur de A est 2.
Je ne sais pas avec quoi tu codes, mais un bon éditeur (même gratuit) te signale à minima les lignes où la syntaxe est erronée.
Par exemple, avec spyder, il y a une croix en marge quand la ligne présente une erreur
Dans cette capture, les instructions en minuscules sont reconnues, donc affichées en bleu.
La ligne 5 présente l'erreur d'égalité, il y a une croix.
-
-
Tout d'abord, merci de votre aide. Effectivement, j'ai l'habitude de mettre des majuscules partout ^^. Je code avec sublime texte. Les 2 égales, bah je m'en souvenait plus x) (En même temps j'utilise une calculatrice Ti-83 CE, dont le codage est "un peu familier" et du coup je n'ai pas mit les 2 égales).
En ayant réglé ces problèmes j'ai une nouvelle erreur à la ligne 6...
Voici le code :
A = Input("Nommbre à convertir :") X = 0 C = 1 while A > 0: if(A%2==0): A/2 = A C*10 = C else: (A-1)/2 = A X+C = X C*10 = C print(X)
Encore merci de votre aide :)EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI
Merci d'y penser dans tes prochains messages. -
Bonjour,
en plus des erreurs qui ont déjà été signalé, je rajoute qu'une affectation de variable se fait avec le nom de la variable devant le signe =. C'est à dire qu'il faut remplacer A/2 = A par A = A/2.
De plus si tu utilise python3, la fonction input renvoie toujours un type string, il faut donc le convertir en entier avec la fonction int.
-- -
Merci de ton aide.
J'en apprend de plus en plus x) Je ne connaissais pas l'histoire de l'affection de variable... ça me sera utile. De même pour le input. Merci ^^
En corrigeant cela, ça donne :
A = Input("Nommbre à convertir :") X = 0 C = 1 while A > 0: if(A%2==0): A = A/2 C = C*10 else: A = (A-1)/2 X = X + C C = C*10 print(int(X))
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI
Merci d'y penser dans tes prochains messages.
Le problème, c'est que maintenant j'ai l'erreur suivante : "Traceback (most recent call last):"
Merci du temps accordé à mon égard :)
-
-
Je suis tête en l'air ^^ J'ai lu "input" et j'ai pensé à "print", alors j'ai remplacé pour "print"...
Pour la coloration syntaxique, j'avais pas vu (et je connaissais pas), désolé, mais merci c'est plus simple de compréhension :)
Du coup, j'ai remplacé, et maintenant ça me demande bien le nombre à convertir, mais ça n'affiche pas le résultat :/
Le code :
A = int(input("Nommbre à convertir :")) X = 0 C = 1 while A > 0: if(A%2==0): A = A/2 C = C*10 else: A = (A-1)/2 X = X + C C = C*10 print(X)
Merci encore ^^
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je viens de copier coller ton code et il fonctionne très bien.
Je ne sais pas d'où viens ton problème mais apparemment pas du code.
---
-
-
Pour lancer le programme j'ouvre tout simplement une invite de commande et j’écris le nom du fichier.
Peut-être que tu double-clique sur le fichier, au quel cas c'est normal que la console se ferme directement après que tu ai entré le nombre à convertir car c'est la fin du programme.
le // permet de calculer une division entière (on calcul le quotient avec // et le modulo avec %) et ça renvoie donc un entier
4/2 -> 2.0
4//2 -> 2 -
-
Ce n'est pas la peine de faire (A-1)//2 car A est impair donc la division entière par 2 donnera la même chose que A//2.
par exemple si je fais la division entière de 3 par 2 ça donne 1 soit exactement la même chose que 2 diviser par 2.
Tu peux donc en déduire aussi qu'il est inutile d'écrire A//2 dans chaque cas, il suffit de le faire 1 fois après la fin du else
-