Mon programme fonctionne pas
Résolu/Fermé
MiSter_OutFox
Messages postés
197
Date d'inscription
jeudi 24 novembre 2016
Statut
Membre
Dernière intervention
10 janvier 2019
-
Modifié le 3 févr. 2018 à 14:40
MiSter_OutFox Messages postés 197 Date d'inscription jeudi 24 novembre 2016 Statut Membre Dernière intervention 10 janvier 2019 - 3 févr. 2018 à 19:51
MiSter_OutFox Messages postés 197 Date d'inscription jeudi 24 novembre 2016 Statut Membre Dernière intervention 10 janvier 2019 - 3 févr. 2018 à 19:51
A voir également:
- Le programme à télécharger ci-dessous contient des erreurs et n'est pas complet. corrigez-le et exécutez-le. quel mot de dix lettres est obtenu ?
- Télécharger film complet sur mobile - Télécharger - TV & Vidéo
- Identifiant et mot de passe - Guide
- Telecharger fl studio 20 pour pc gratuit complet - Télécharger - Édition & Montage
- Comment trouver le mot de passe wifi sur son téléphone - Guide
5 réponses
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
345
3 févr. 2018 à 14:41
3 févr. 2018 à 14:41
De mémoire, il n'y as pas de majuscule sur les instructions :
While -> while
While -> while
MiSter_OutFox
Messages postés
197
Date d'inscription
jeudi 24 novembre 2016
Statut
Membre
Dernière intervention
10 janvier 2019
3
Modifié le 3 févr. 2018 à 16:46
Modifié le 3 févr. 2018 à 16:46
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 :
Encore merci de votre aide :)
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. |
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
346
3 févr. 2018 à 16:08
3 févr. 2018 à 16:08
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.
--
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.
--
MiSter_OutFox
Messages postés
197
Date d'inscription
jeudi 24 novembre 2016
Statut
Membre
Dernière intervention
10 janvier 2019
3
Modifié le 3 févr. 2018 à 16:47
Modifié le 3 févr. 2018 à 16:47
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 :
Le problème, c'est que maintenant j'ai l'erreur suivante : "Traceback (most recent call last):"
Merci du temps accordé à mon égard :)
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 :)
NHenry
Messages postés
15163
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 novembre 2024
345
Modifié le 3 févr. 2018 à 16:49
Modifié le 3 févr. 2018 à 16:49
C'est bien, ça te donne la pile des appels, mais sans erreur ni emplacement, pas possible d'aider.
Et Quent217 t'indique que Input retourne une chaine pas un entier, il faut donc faire la conversion.
Merci aussi de penser à la coloration syntaxique, j'ai modifié tes 3 messages sur ce point.
Et Quent217 t'indique que Input retourne une chaine pas un entier, il faut donc faire la conversion.
Merci aussi de penser à la coloration syntaxique, j'ai modifié tes 3 messages sur ce point.
MiSter_OutFox
Messages postés
197
Date d'inscription
jeudi 24 novembre 2016
Statut
Membre
Dernière intervention
10 janvier 2019
3
3 févr. 2018 à 18:09
3 févr. 2018 à 18:09
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 :
Merci encore ^^
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
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
346
3 févr. 2018 à 18:44
3 févr. 2018 à 18:44
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.
--
Je ne sais pas d'où viens ton problème mais apparemment pas du code.
--
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
346
3 févr. 2018 à 18:58
3 févr. 2018 à 18:58
Si je peux te donner un conseil, remplace le A/2 et (A-1)/2 par A//2 qui correspond à la division entière par 2. Sinon A va devenir un nombre flottant et quand tu va vouloir convertir des grands nombres, python va arrondir le résultat, ce qu'il ne fera pas avec un entier.
MiSter_OutFox
Messages postés
197
Date d'inscription
jeudi 24 novembre 2016
Statut
Membre
Dernière intervention
10 janvier 2019
3
3 févr. 2018 à 19:13
3 févr. 2018 à 19:13
Merci. Personnellement, je lance mon programme en faisant clic droit ouvrir avec, python; je le code avec sublime texte. Comment tu fais pour lancer tes programmes ? S'il te plaît
A quoi sert le "//" ? (pour mieux comprendre ton raisonnement ^^ )
Merci d'avance :)
A quoi sert le "//" ? (pour mieux comprendre ton raisonnement ^^ )
Merci d'avance :)
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
346
3 févr. 2018 à 19:20
3 févr. 2018 à 19:20
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
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
MiSter_OutFox
Messages postés
197
Date d'inscription
jeudi 24 novembre 2016
Statut
Membre
Dernière intervention
10 janvier 2019
3
3 févr. 2018 à 19:25
3 févr. 2018 à 19:25
Oui ! ça fonctionne avec la cmd, c'est plus simple x) Merci ! Et effectivement, les // seront mieux du coup :) Si je me trompe pas, du coup je mettrais A//2 et (A-1)//2, c'est bien cela ?
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
346
3 févr. 2018 à 19:33
3 févr. 2018 à 19:33
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
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
3 févr. 2018 à 15:18
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.