Petit soucis en python
Résolu/Fermé
jojol_8144
Messages postés
132
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
5 novembre 2020
-
8 mars 2019 à 00:58
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 25 mars 2019 à 13:17
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 25 mars 2019 à 13:17
A voir également:
- List indices must be integers or slices not float
- Citizen code python avis - Accueil - Outils
- Petit 3 ✓ - Forum Word
- Petit colis distribution - Forum Réseaux sociaux
- Excel trier du plus grand au plus petit - Guide
5 réponses
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
8 mars 2019 à 10:41
8 mars 2019 à 10:41
Salut jojol_8144,
En Python, tu as les fonctions int() et hex() faisant partie du langage qui te permettent de faire ces conversions en une ligne.
donne :
Vois :
https://docs.python.org/3/library/functions.html#int
https://docs.python.org/3/library/functions.html#hex
Lorsque tu postes sur le forum programmation de CCM, poste ton code et les éléments de ton problème sur le forum, décrit précisément quel est ton problème et illustre le avec un exemple de code montrant le comportement anormal selon toi et indique le comportement attendu.
Sinon : on doit aller nous mêmes à la pêche aux informations, sur un autre site, en ne sachant rien de la nature réelle de ton problème que l'on doit deviner. Les membres du forum répondent en fonction de leurs compétentes, de leur temps libre et de leur motivation, bénévolement. Pour espérer avoir une réponse, tu dois comprendre cela et leur faciliter la tâche.
Le forum permet l'affichage du code avec coloration syntaxique, numérotation des lignes et préservation de l'indentation en postant le code avec les balises <code python>.
Pour cela clique sur la flèche basse à gauche de l'icône image et choisis le langage python. Ensuite copie colle ton code à l'intérieur des balises, comme cela :
<code python>
ton code ici
</code>
Dal
En Python, tu as les fonctions int() et hex() faisant partie du langage qui te permettent de faire ces conversions en une ligne.
# -*- coding: UTF-8 -*- chaine_base_10 = "1234567" print("la chaîne", chaine_base_10, "vaut", hex(int(chaine_base_10)), "en hexadécimal") chaine_base_16 = "0x12d687" print("la chaîne", chaine_base_16, "vaut", int(chaine_base_16, 16), "en hexadécimal")
donne :
$ python3 35910791.py la chaîne 1234567 vaut 0x12d687 en hexadécimal la chaîne 0x12d687 vaut 1234567 en hexadécimal $
Vois :
https://docs.python.org/3/library/functions.html#int
https://docs.python.org/3/library/functions.html#hex
Lorsque tu postes sur le forum programmation de CCM, poste ton code et les éléments de ton problème sur le forum, décrit précisément quel est ton problème et illustre le avec un exemple de code montrant le comportement anormal selon toi et indique le comportement attendu.
Sinon : on doit aller nous mêmes à la pêche aux informations, sur un autre site, en ne sachant rien de la nature réelle de ton problème que l'on doit deviner. Les membres du forum répondent en fonction de leurs compétentes, de leur temps libre et de leur motivation, bénévolement. Pour espérer avoir une réponse, tu dois comprendre cela et leur faciliter la tâche.
Le forum permet l'affichage du code avec coloration syntaxique, numérotation des lignes et préservation de l'indentation en postant le code avec les balises <code python>.
Pour cela clique sur la flèche basse à gauche de l'icône image et choisis le langage python. Ensuite copie colle ton code à l'intérieur des balises, comme cela :
<code python>
ton code ici
</code>
Dal
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
Modifié le 8 mars 2019 à 14:50
Modifié le 8 mars 2019 à 14:50
J'ai pris la peine de te donner une méthodologie, relis mon message précédent (je pense que tu as posté les messages suivants sans lire la totalité de ce que j'ai écris, car j'ai terminé de modifier mon post à 13:38 et c'est à la même heure que tu postais ton algorithme) :
https://forums.commentcamarche.net/forum/affich-35910791-petit-soucis-en-python#3
Commencer par réfléchir à l'algorithme est toujours une bonne chose, mais tu n'as pas nécessairement besoin de le formaliser de façon aussi détaillée, car tu ne dois utiliser ton algorithme que pour inclure dans ton programme Python la logique que l'algorithme implémente au lieu de tenter de traduire ligne par ligne ce que tu as écris en langage algorithmique qui utilise une syntaxe différente.
Si tu n'as pas à définir une fonction, commence directement ton code par le menu :
Dal
https://forums.commentcamarche.net/forum/affich-35910791-petit-soucis-en-python#3
Commencer par réfléchir à l'algorithme est toujours une bonne chose, mais tu n'as pas nécessairement besoin de le formaliser de façon aussi détaillée, car tu ne dois utiliser ton algorithme que pour inclure dans ton programme Python la logique que l'algorithme implémente au lieu de tenter de traduire ligne par ligne ce que tu as écris en langage algorithmique qui utilise une syntaxe différente.
Si tu n'as pas à définir une fonction, commence directement ton code par le menu :
# -*- coding: UTF-8 -*- from math import pow, log choix = ' ' while choix not in ['Q', 'q', '1', '2']: print("Conversion base 10 en base 16 ............ 1") print("Conversion base 16 en base 10 ............ 2") print("Quitter l'application .................... Q") choix = input("Votre choix : ") if choix == 'Q' or choix == 'q': print("Adios") exit if choix == '1': print("Conversion base 10 en base 16") # TODO if choix == '2': print("Conversion base 16 en base 10") # TODO
Dal
jojol_8144
Messages postés
132
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
5 novembre 2020
3
8 mars 2019 à 14:54
8 mars 2019 à 14:54
d'accord, mais il ne faut pas que je définisse ma liste tHexa d'abord ?
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
Modifié le 8 mars 2019 à 14:57
Modifié le 8 mars 2019 à 14:57
note que mon exemple de menu ci-dessus corrige un certain nombre d'erreurs et de confusions dans ton code précédent :
- l'opérateur "et" en Python est
- une affectation en Python se fait avec
- l'indentation est corrigée dans la boucle pour permettre la répétition de la demande de saisie avec
- l'opérateur "et" en Python est
andet pas "&"
- une affectation en Python se fait avec
=et une comparaison d'égalité avec
==...
- l'indentation est corrigée dans la boucle pour permettre la répétition de la demande de saisie avec
input()et l'indentation est aussi corrigée dans le traitement des choix
jojol_8144
Messages postés
132
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
5 novembre 2020
3
Modifié le 8 mars 2019 à 15:00
Modifié le 8 mars 2019 à 15:00
Ah, dans le PDF que j'ai téléchargé, ils me disent que c'est &....par exemple,
c'est déjà un début.....
Mais en soi, en prenant en comptes les erreurs de syntaxes, est-ce que je part sur la bonne voie pour mon code ou je suis à l'ouest ?
c'est déjà un début.....
Mais en soi, en prenant en comptes les erreurs de syntaxes, est-ce que je part sur la bonne voie pour mon code ou je suis à l'ouest ?
jojol_8144
Messages postés
132
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
5 novembre 2020
3
8 mars 2019 à 15:11
8 mars 2019 à 15:11
en fait j'ai besoin de savoir centaines chose,
j'arrive pas à traduire ça par ex:
ou encore ça qui est similaire à la ligne précédente:
j'arrive pas à traduire ça par ex:
extraction du dernier caractère hexa s ← extraire(unHexa, unHexa.size()-1, 1)
ou encore ça qui est similaire à la ligne précédente:
unHexa ← extraire(unHexa, 0, unHexa.size()-1)
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
Modifié le 8 mars 2019 à 15:21
Modifié le 8 mars 2019 à 15:21
Je pense que ton PDF indique que
https://www.w3schools.com/python/python_operators.asp
Si ton PDF te dit autre chose, jette le aux orties.
d'accord, mais il ne faut pas que je définisse ma liste tHexa d'abord ?
si tu veux, mais en quoi ta liste tHexa t'est-elle utile pour programmer ton menu et tester son fonctionnement ?
Tu peux la définir après, n'est-ce pas ? Une fois que tu as vérifié que ton menu fonctionne, tu ajoutes la définition de la liste entre la ligne 10 et la ligne 12, ou avant entre la ligne 3 et la ligne 5 si tu veux, afin qu'elle puisse servir au reste du programme, mais pas avant.
Ne rajoute à ton programme que ce qui est nécessaire à ce que tu fais et ce que tu veux tester, sinon tu rajoutes de la complexité et des chances d'erreurs inutilement par rapport à ce que tu cherches déjà mettre au point.
Lorsque tu ajoutes la moindre chose, tu testes tout de suite si tu n'as pas fait d'erreurs de syntaxe et si ton programme continue de faire ce qu'il est sensé faire, ensuite tu ajoutes une autre partie et dès que tu as quelques lignes que tu peux tester, tu le fais, etc.
Jusqu'à ce que ton programme soit terminé et au point.
C'est la méthode que j'essaye de faire entrer dans ta tête et que je t'ai indiquée dès ce post : https://forums.commentcamarche.net/forum/affich-35910791-petit-soucis-en-python#3
&est un opérateur bit à bit faisant un "et" logique (il sert à altérer des bits de données et non pas ajouter des conditions cumulatives à des comparaisons) et que
andest l'opérateur booléen (il sert dans les comparaisons).
https://www.w3schools.com/python/python_operators.asp
Si ton PDF te dit autre chose, jette le aux orties.
d'accord, mais il ne faut pas que je définisse ma liste tHexa d'abord ?
si tu veux, mais en quoi ta liste tHexa t'est-elle utile pour programmer ton menu et tester son fonctionnement ?
Tu peux la définir après, n'est-ce pas ? Une fois que tu as vérifié que ton menu fonctionne, tu ajoutes la définition de la liste entre la ligne 10 et la ligne 12, ou avant entre la ligne 3 et la ligne 5 si tu veux, afin qu'elle puisse servir au reste du programme, mais pas avant.
Ne rajoute à ton programme que ce qui est nécessaire à ce que tu fais et ce que tu veux tester, sinon tu rajoutes de la complexité et des chances d'erreurs inutilement par rapport à ce que tu cherches déjà mettre au point.
Lorsque tu ajoutes la moindre chose, tu testes tout de suite si tu n'as pas fait d'erreurs de syntaxe et si ton programme continue de faire ce qu'il est sensé faire, ensuite tu ajoutes une autre partie et dès que tu as quelques lignes que tu peux tester, tu le fais, etc.
Jusqu'à ce que ton programme soit terminé et au point.
C'est la méthode que j'essaye de faire entrer dans ta tête et que je t'ai indiquée dès ce post : https://forums.commentcamarche.net/forum/affich-35910791-petit-soucis-en-python#3
jojol_8144
Messages postés
132
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
5 novembre 2020
3
15 mars 2019 à 12:33
15 mars 2019 à 12:33
Bonjour,
Je me suis remis sur le script mais j'ai un soucis,
Lorsque je saisie un entier, le programme boucle et me renvois dans le menu au lieux de m'afficher le résultat de la conversion:
Je me suis remis sur le script mais j'ai un soucis,
Lorsque je saisie un entier, le programme boucle et me renvois dans le menu au lieux de m'afficher le résultat de la conversion:
# -*- coding: UTF-8 -*- from math import pow, log tHexa = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'] choix = ' ' while choix not in ['Q', 'q', '1', '2']: print("Conversion base 10 en base 16 ............ 1") print("Conversion base 16 en base 10 ............ 2") print("Quitter l'application .................... Q") choix = input("Votre choix : ") if choix == 'Q' or choix == 'q': print("entrez un entier naturel") unEntier = int(input("saisie de l'entier à convertir ")) unHexa = "" while unEntier > 0: unHexa = tHexa [unEntier // 16] + unHexa unEntier = unEntier / 16 print("valeur Hexa ="+ unHexa) if choix == '1': print("Conversion base 10 en base 16") # TODO if choix == '2': print("Conversion base 16 en base 10") # TODO
jojol_8144
Messages postés
132
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
5 novembre 2020
3
Modifié le 15 mars 2019 à 14:21
Modifié le 15 mars 2019 à 14:21
Bon, j'ai compris mon erreur mais maintenant, j'ai ça:
Traceback (most recent call last):
File "C:/Users/jojol/.PyCharmCE2018.3/config/scratches/scratch.py", line 22, in <module>
unHexa = tHexa[unEntier // 16] + unHexa
TypeError: list indices must be integers or slices, not float
Traceback (most recent call last):
File "C:/Users/jojol/.PyCharmCE2018.3/config/scratches/scratch.py", line 22, in <module>
unHexa = tHexa[unEntier // 16] + unHexa
TypeError: list indices must be integers or slices, not float
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
15 mars 2019 à 16:27
15 mars 2019 à 16:27
le double slash fait une division fournissant un résultat avec des nombres flottants, qui ne peuvent évidemment pas être utilisés comme indices d'une liste.
jojol_8144
Messages postés
132
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
5 novembre 2020
3
Modifié le 15 mars 2019 à 16:29
Modifié le 15 mars 2019 à 16:29
Ah, et comment puis-je remédier à cela puisque je désire obtenir un flottant en résultat svp ?
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
15 mars 2019 à 17:34
15 mars 2019 à 17:34
Travailles-tu en Python 3 ?
jojol_8144
Messages postés
132
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
5 novembre 2020
3
15 mars 2019 à 17:35
15 mars 2019 à 17:35
oui
jojol_8144
Messages postés
132
Date d'inscription
vendredi 8 mars 2019
Statut
Membre
Dernière intervention
5 novembre 2020
3
Modifié le 24 mars 2019 à 15:26
Modifié le 24 mars 2019 à 15:26
reBonjour,
J'aurais aimé savoir comment on déclare une constante en Python car j'ai cru comprendre que cela n'existait pas à proprement parler dans ce langage s'il vous plait
Et est-il possible de déclarer un def pour une procédure ou cela est juste réservé au fonction svp ?
Merci
J'aurais aimé savoir comment on déclare une constante en Python car j'ai cru comprendre que cela n'existait pas à proprement parler dans ce langage s'il vous plait
Et est-il possible de déclarer un def pour une procédure ou cela est juste réservé au fonction svp ?
Merci
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
25 mars 2019 à 13:17
25 mars 2019 à 13:17
Ce fil de discussion est marqué "résolu".
Si tu as de nouvelles questions, poses les dans un nouveau fil, avec un titre explicite (pas "Petit soucis avec python"), qui renforcera les chances que quelqu'un réponde.
Si tu as de nouvelles questions, poses les dans un nouveau fil, avec un titre explicite (pas "Petit soucis avec python"), qui renforcera les chances que quelqu'un réponde.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
durga1234
Messages postés
2
Date d'inscription
mardi 19 mars 2019
Statut
Membre
Dernière intervention
19 mars 2019
19 mars 2019 à 13:53
19 mars 2019 à 13:53
its nice topic
http://www.javaonexperiance.com/python-tutorials/python-string-tutorials.htmlPython Strings
durga1234
Messages postés
2
Date d'inscription
mardi 19 mars 2019
Statut
Membre
Dernière intervention
19 mars 2019
19 mars 2019 à 13:54
19 mars 2019 à 13:54
<a href="http://www.javaonexperiance.com/python-tutorials/python-string-tutorials.html">Python String</a>
Modifié le 8 mars 2019 à 11:44
Donc voici mon code:
je sais qu'il est mauvais, j'aimerais juste un petit correctif de votre part si cela est possible bien sur
merci d'avance
Modifié le 8 mars 2019 à 13:38
Le premier problème évident est que ce code ne peut pas être exécuté par Python en raison d'erreurs de syntaxe. Python te signale ces erreurs de syntaxe, que tu devrais déjà corriger une par une en utilisant les indications fournies par Python.
Commence par la première :
vois à la ligne 10 ou avant cette ligne ce qui ne serait pas conforme à la syntaxe de Python, et tu verras qu'il manque une virgule dans ta liste de paramètres à la ligne immédiatement au dessus de la ligne 10. Continue jusqu'à ce que ton programme ne comporte plus d'erreurs de syntaxe.
Commence petit :
- ajoute un appel à cette fonction avec des paramètres (j'avoue ne pas comprendre pourquoi tu passes tous ces paramètres à la fonction, vu que tu définis leur valeur dans la fonction..., de quels paramètres ta fonction a-t-elle réellement besoin pour être appelée ?) - si tu n'appelles pas la fonction, elle ne s'exécutera pas (tu ne fais que définir une fonction qui ne s'exécute pas)
- commence avec une fonction sans rien dedans qu'un seul et ne comprenant qu'une liste de paramètres réellement nécessaires à l'appel de la fonction, teste cela, et si cela s'exécute sans erreurs de syntaxe et que cela fonctionne comme tu l'attends, passe à la suite
- ajoute ton menu à la fonction, teste cet ajout, et si cela s'exécute sans erreurs de syntaxe et que cela fonctionne comme tu l'attends, passe à la suite,
- etc.
C'est comme cela que l'on réalise un programme dans n'importe quel langage. Lorsque l'on programme, on n'attend pas d'avoir écrit plusieurs dizaines de lignes avant de tester son programme, surtout lorsque l'on est inexpérimenté.
Fais cela s'il te plaît, et si tu as une erreur de syntaxe ou un bogue à l'exécution que tu ne sais pas corriger, reviens sur le forum en postant ton code modifié dans ce fil de discussion, et en expliquant exactement quelle est l'erreur ou le problème que tu n'arrives pas à corriger ou à résoudre.
Sois vigilant sur l'indentation de ton code. Si tu veux écrire du code qui fait partie de ta fonction, ton code doit rester indenté dans la fonction.
Tu devrais commencer par quelque chose de pas plus compliqué que cela :
Ne rajoute des arguments à la fonction que s'ils sont strictement nécessaires à l'appel de la fonction.
Dal
8 mars 2019 à 13:38
j'ai pas vraiment de cours, on se contente de nous dire de chercher par nous même, pour être autonome, j'ai tout un tas d'exercice et je n'ai aucun modèle type de correction,
Je dois attaquer tout un tas d'exos comme ça et je ne connais pas vraiment l'approche à avoir.....
C'est pour ça que j'ai démarré avec la rédac du prog en langage algorithmique....je ne sais pas si c'est une bonne approche du tout...
Serait-il me traduire celui-ci en python s'il vous plait ou mon algo n'est pas bon ? j'ai mis le lien de mon algo dans le premier message,
Cela m'aiderais énormément pour la suite parce-que pour le moment, je patine
je lis en parallèle les liens qui m'ont été fournis en haut, à défaut d'en avoir un en main
Merci à ceux qui prennent le temps de m'expliquer
8 mars 2019 à 13:43
8 mars 2019 à 13:53