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
Bonjour à tous je ne comprends pas cette exercice,

Pourriez-vous m'aider? Merci par avance :

Ecrire une fonction Python décimale base(n, base) qui prend en arguments un nombre entier positif en base décimale n et la valeur de la base dans laquelle convertir la valeur n et qui renvoie son écriture dans la nouvelle base.
A voir également:

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
0
Excusez moi alors je ne savais pas, c'est la première fois que je demande de l'aide sur un forum. Je n'avais pas vu ça dans les règles.
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.
0
yg_be Messages postés 23428 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 janvier 2025 1 559 > Jean
9 oct. 2021 à 21:38
si tu ne connais pas le python, je pense que cet exercice est trop compliqué pour toi.
je pense qu'il vaut mieux commencer par apprendre, puis faire des exercices plus simples.
0
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 :

#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
0
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
et pour une autre base que 2 ou 16?
0
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
0
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
ton programme n'est pas bon, car il ne fonctionne que pour les bases 2 et 16.
0
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
les bases 2 et 16 sont les plus utilisés dans le codage on aura très peu l'occasion d'utiliser
0
Utilisateur anonyme > JulesWlu
29 nov. 2021 à 09:03
Je crois que tu n’as pas compris un truc.
Le but de cet exercice est que tu codes un convertisseur universel.
Pas pour que le monde entier s’en serve, mais pour que tu saches le faire
0
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
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³.
  • 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 exemple
    13 // 8 == 1
    car
    13 = 1 * 8 + 5
    .
  • On calcule le quotient avec
    %
    : par exemple
    13 % 8 == 5
    car
    13 = 1 * 8 + 5
    .


Bonne chance
0
Utilisateur anonyme
30 nov. 2021 à 21:20
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....
0
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
On ne s'embête pas quand on fait ce qu'on aime.
0
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
c'est pas faux ;)
0
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
:-)))) 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... :-)
0