Fonction Python decimale base(n, base)
Résolu/Fermé
Jean
-
Modifié le 30 nov. 2021 à 19:58
mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 1 déc. 2021 à 13:15
mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 1 déc. 2021 à 13:15
A voir également:
- Fonction Python decimale base(n, base)
- Fonction si et - Guide
- Formules excel de base - Guide
- Base de registre - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
4 réponses
yg_be
Messages postés
23428
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
Ambassadeur
1 559
9 oct. 2021 à 20:34
9 oct. 2021 à 20:34
Bonsoir excusez-moi de vous déranger à nouveau, si tardivement. Mais après avoir lu pendant plusieurs heures différents cours sur internet, et effectuer plusieurs petits exercices. J'ai réussi à faire un programme qui est le suivant :
Exécution du script
C'était afin de savoir si mon programme était bon par rapport à la question demandée . (Et si cela est juste, je voulais vous demander s'il existe une autre manière peut-être plus simple de faire ?)
Bonne soirée,
Merci
#Donner un nombre décimale
nbrD= int (input())
print ("Entrer le nombre décimale =" , (nbrD))
#Donner la base binaire
print ("La base binaire est =" , bin(nbrD)[2:])
#Donner la base hexadécimale
print ("La base hexadecimale est =" , hex(nbrD)[2:])
Exécution du script
Le nombre décimale = 80512
La base binaire est = 10011101010000000
La base hexadecimale est = 13a80
C'était afin de savoir si mon programme était bon par rapport à la question demandée . (Et si cela est juste, je voulais vous demander s'il existe une autre manière peut-être plus simple de faire ?)
Bonne soirée,
Merci
yg_be
Messages postés
23428
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
10 oct. 2021 à 09:50
10 oct. 2021 à 09:50
et pour une autre base que 2 ou 16?
Salut j'avais fais ça mais mon prof m'a dit que j'utilise juste les fonctions de python et il voulait que je crée moi même la chose qui calcule voilà j'espère que cela peut t'aider
yg_be
Messages postés
23428
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
28 nov. 2021 à 21:06
28 nov. 2021 à 21:06
ton programme n'est pas bon, car il ne fonctionne que pour les bases 2 et 16.
JulesWlu
>
yg_be
Messages postés
23428
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
29 nov. 2021 à 08:32
29 nov. 2021 à 08:32
les bases 2 et 16 sont les plus utilisés dans le codage on aura très peu l'occasion d'utiliser
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
Modifié le 30 nov. 2021 à 20:31
Modifié le 30 nov. 2021 à 20:31
Bonjour,
Avant d'essayer d'écrire le programme en python, demande-toi comment tu ferais mathématiquement pour faire ta conversion.
Ecrire un nombre x en base b revient à l'écrire sous la forme : x = sum(ai * b^i) où ai est le i-ème chiffre de la représentation de x en base b et où i va de 0 a une valeur suffisamment grande.
Exemple : prenons x = 13 et b = 2 : alors :
x = 1 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 1 * 2³ + 1 * 2² + 0 * 2^1 + 1 * 2^0
... ce qui explique pourquoi en binaire, 13 s'écrit 1101.
Alors comment retrouver cette décomposition ? Comme expliqué sur cette page Wikipedia on peut utiliser la méthode des divisions successives. Il faut d'abord trouver la plus grande puissance de b=2 inférieure à x. Ici c'est 8 = 2³.
Quelques indices pour ton programme en python :
Bonne chance
Avant d'essayer d'écrire le programme en python, demande-toi comment tu ferais mathématiquement pour faire ta conversion.
Ecrire un nombre x en base b revient à l'écrire sous la forme : x = sum(ai * b^i) où ai est le i-ème chiffre de la représentation de x en base b et où i va de 0 a une valeur suffisamment grande.
Exemple : prenons x = 13 et b = 2 : alors :
x = 1 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 1 * 2³ + 1 * 2² + 0 * 2^1 + 1 * 2^0
... ce qui explique pourquoi en binaire, 13 s'écrit 1101.
Alors comment retrouver cette décomposition ? Comme expliqué sur cette page Wikipedia on peut utiliser la méthode des divisions successives. Il faut d'abord trouver la plus grande puissance de b=2 inférieure à x. Ici c'est 8 = 2³.
- On calcule la division euclidienne de 13 par 8 et on en déduit que 13 = 1*2³ + 5. On a donc le premier chiffre de la décomposition binaire (1) et le reste (5) va nous permettre de trouver les suivants.
- Pour trouver le chiffre suivant, on applique le même raisonnement avec la puissance de 2 du dessous soit 2² = 4. On fait la division euclidienne et on trouve 5 = 1 * 2² + 1. On a donc le second chiffre de la décomposition binaire (1) et le reste (1) nous permet de trouver les suivants.
- On continue avec la puissance de 2 du dessous soit 2^1 = 2 et le nouveau reste. 1 = 0 * 2^2 + 1. On obtient donc le troisième chiffre de la décomposition binaire (0) et le reste (1) nous permet de trouver les suivants.
- On continue avec la puissance de 2 du dessous soit 2^0 = 1 et qui sera la dernière. 1 = 1 * 2^0 + 0, et on obtient donc le quatrième chiffre de la décomposition binaire. Comme le reste est nul, on a fini la décomposition. Si la puissance courante n'était pas 2^0, les chiffres restants seraient tous des 0.
Quelques indices pour ton programme en python :
- On calcule le quotient avec
//
: par exemple13 // 8 == 1
car13 = 1 * 8 + 5
. - On calcule le quotient avec
%
: par exemple13 % 8 == 5
car13 = 1 * 8 + 5
.
Bonne chance
Bonsoir
je pense que tu t'es embêtée pour rien.
La demande initiale date d'un mois et demi.
Le lendemain, jean montre une solution que ne répond pas à l'énoncé, ce qu'yg-ge lui signale.
Et hier, il se réveil (changer de nom) pour dire que son prof n'est pas content mais qu'il "offre" son code au monde car les bases 2 et 16 sont les plus utilisées.
Comme si le monde avait besoin de lui pour ça....
je pense que tu t'es embêtée pour rien.
La demande initiale date d'un mois et demi.
Le lendemain, jean montre une solution que ne répond pas à l'énoncé, ce qu'yg-ge lui signale.
Et hier, il se réveil (changer de nom) pour dire que son prof n'est pas content mais qu'il "offre" son code au monde car les bases 2 et 16 sont les plus utilisées.
Comme si le monde avait besoin de lui pour ça....
yg_be
Messages postés
23428
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
>
Utilisateur anonyme
30 nov. 2021 à 21:27
30 nov. 2021 à 21:27
On ne s'embête pas quand on fait ce qu'on aime.
Utilisateur anonyme
>
yg_be
Messages postés
23428
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 déc. 2021 à 07:11
1 déc. 2021 à 07:11
c'est pas faux ;)
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
>
Utilisateur anonyme
1 déc. 2021 à 13:15
1 déc. 2021 à 13:15
:-)))) En fait, j'y ai répondu car la discussion était encore active récemment, et je n'ai pas fait attention à la date du premier message... :-)
9 oct. 2021 à 21:21
Pouvez-vous alors m'aiguiller ? Car je ne sais pas où commencer. Je n'ai pas eu de leçon sur cette partie là, je ne connais donc pas le python et aie donc besoins d'aiguillements si cela est possible.
9 oct. 2021 à 21:38
je pense qu'il vaut mieux commencer par apprendre, puis faire des exercices plus simples.