Script qui affiche la lecture d'un entier naturel

Fermé
Rachid_1043 Messages postés 5 Date d'inscription mardi 30 juin 2020 Statut Membre Dernière intervention 3 juillet 2020 - Modifié le 1 juil. 2020 à 01:04
Rachid_1043 Messages postés 5 Date d'inscription mardi 30 juin 2020 Statut Membre Dernière intervention 3 juillet 2020 - 3 juil. 2020 à 21:37
Bonjour

On décide de ≪ lire ≫ un entier comme dans l'exemple suivant:
l’entier p = 1444577 se lit ≪ un 1 trois 4 un 5 deux 7 ≫, ce qui donne le nouvel entier q = 11341527 appelé ≪ lecture ≫ de l’entier p.

J'ai essayé ce programme avec p mais ça donne 34152711, je ne vois pas exactement où est le problème, merci d'avance

def lecture(p):
    chaine = str(p)
    se = set(chaine)
    
    for k in se:
        print(chaine.count(k),k,end =' ')

p = int(input('Entrer un entier naturel: '))
lecture(p)

1 réponse

yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
Modifié le 1 juil. 2020 à 10:21
bonjour, ajoute des print(), cela t'aidera à comprendre.
par ailleurs, n'oublie pas de tester d'autres cas, pas exemple "121".
0
Rachid_1043 Messages postés 5 Date d'inscription mardi 30 juin 2020 Statut Membre Dernière intervention 3 juillet 2020
2 juil. 2020 à 05:41
bonsoir, effectivement ça marche pour des nombres entiers de tailles petites (3 chiffres par exemple), mais pas pour les grands nombres par exemple 44555677899 !!! merci d'avance
0
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476 > Rachid_1043 Messages postés 5 Date d'inscription mardi 30 juin 2020 Statut Membre Dernière intervention 3 juillet 2020
2 juil. 2020 à 09:05
as-tu testé 121? cela donne quoi?
0
Rachid_1043 Messages postés 5 Date d'inscription mardi 30 juin 2020 Statut Membre Dernière intervention 3 juillet 2020 > yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
3 juil. 2020 à 02:03
Pour 121 ça donne 2112, donc ça marche, mais pour 44555677899 ça donne 3 5 1 8 2 4 2 7 1 6 2 9 donc !!!!
0
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476 > Rachid_1043 Messages postés 5 Date d'inscription mardi 30 juin 2020 Statut Membre Dernière intervention 3 juillet 2020
Modifié le 3 juil. 2020 à 10:28
pour 121, je pensais qu'il fallait obtenir 111211.
2112, c'est la lecture de 112, pas de 121.
as-tu ajouté des print(), pour t'aider à comprendre?
0
Rachid_1043 Messages postés 5 Date d'inscription mardi 30 juin 2020 Statut Membre Dernière intervention 3 juillet 2020 > yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
3 juil. 2020 à 21:06
pour 112 et 121 ça donne la même chose puisque l'ordre des éléments n'est pas important en considérant la fonction set qui convertit une chaîne de caractères en un ensemble (set), d'ailleurs, j'ai déjà vérifié sur spyder!!!
0