Écriture dans une base quelconque

Vous voulez créer un programme capable d'écrire un entier dans n'importe quelle base. Votre programme doit lire un entier positif entierAConvertir donné par son écriture décimale habituelle puis la base d'arrivée baseArrivée. Il doit ensuite afficher le nombre de chiffres de entierAConvertir dans cette base puis, sur la ligne suivante, chacun de ces chiffres dans l'ordre habituel de gauche à droite en terminant par le chiffre des unités. Attention ces chiffres étant peut-être des entiers supérieurs à 9, il peuvent avoir une écriture décimale elle même composée de plusieurs chiffres.

Le chiffre de gauche ne peut être 0 que si le nombre à afficher est 0 (on n'écrit pas de 0 à gauche).

Contraintes

Entrée

Première ligne, deux entiers : entierAConvertir et baseArrivée.

Sortie

Exemples

Exemple 1

entrée :

1234 100

sortie :

2
12 34

Exemple 2

entrée :

254 16

sortie :

2
15 14

Solution

def écrire_base(n: int, base: int) -> None:
    """Écrit l'entier 'n', dans la 'base'.

    >>> écrire_base(1234, 100)
    2
    12 34
    
    """
    chiffres = []
    while n > 0:
        chiffre = n % base
        n = n // base
        chiffres.append(chiffre)

    if chiffres == []:
        print(1) # un seul chiffre
        print(0) # le chiffre 0
    else:
        print(len(chiffres))
        for chiffre in chiffres[::-1]:
            print(chiffre, end=" ")
        print()

n, base = map(int, input().split())
écrire_base(n, base)

Commentaires

n, chiffre = divmod(n, base)
print(" ".join(map(str, chiffres[::-1])))