Python: transformer 103 en ("3","0","1")
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Python: transformer 103 en ("3","0","1")



  1. #1
    WhiteChocapic

    Python: transformer 103 en ("3","0","1")


    ------

    Bonjour, j aurais besoin de transformer le nombre 103 en ("3","0","1"). Je pensais appliquer str() à 103, inverser le tout avec L[::-1] et enfin appliquer split() mais comme les caractères de "301" ne seront séparés par rien je ne sait pas si je pourrai appliquer split() et sinon quelle autre méthode utiliser.
    Merci d'avance pour votre aide

    -----

  2. #2
    CM63

    Re : Python: transformer 103 en ("3","0","1")

    Bonjour,

    Ca doit marcher avec split'). Tu as essayé?

    A plus.

  3. #3
    Loupsio

    Re : Python: transformer 103 en ("3","0","1")

    tu peux en faire une liste, tu remplace juste ton split() par list()

    Code:
    >>> yo="103"
    >>> yo=yo[::-1]
    >>> yo=list(yo)
    >>> yo
    ['3', '0', '1']

  4. #4
    CM63

    Re : Python: transformer 103 en ("3","0","1")

    Non en fait ça ne marche pas avec split sans séparateur. Mais tu convertis d'abord 103 en chaîne de caractères. Ah oui avec la liste aussi c'est pas mal.

  5. A voir en vidéo sur Futura
  6. #5
    Loupsio

    Re : Python: transformer 103 en ("3","0","1")

    @CM63, si je me rappel bien, il me semble que le split demande un caractere à remplacer,
    du genre

    Code:
    >>> plop='abc'
    >>> replop=plop.split('b')
    >>> replop
    ['a','c']
    après il y a peu etre un moyen de lui dire "tout les x caractere et de definir x=1 ici, mais ducoup je pense que list() reste le plus simple

    EDIT:
    j'ai pas été assez rapide, tu t'en est rendu compte avant que j'envoi ^^
    Dernière modification par Loupsio ; 21/10/2015 à 18h47.

  7. #6
    polo974

    Re : Python: transformer 103 en ("3","0","1")

    tu veux un tuple, donc demande un tuple:
    Code:
    tuple(str(123)[::-1])
    ('3', '2', '1')
    Jusqu'ici tout va bien...

  8. #7
    WhiteChocapic

    Re : Python: transformer 103 en ("3","0","1")

    merci pour votre aide, effectivement list() convient parfaitement.
    Le but du programme est de compter le nombre de 0 à la fin de factoriel 100 (ou 100!) en utilisant les chaines de caractères. Voila mon programme mais le problème c'est qu il tourne sans s’arrêter et mon explorateur de variable me renvoie un nombre de 0 toujours plus important et invraisemblable:
    Images attachées Images attachées  

  9. #8
    Loupsio

    Re : Python: transformer 103 en ("3","0","1")

    le dernier nombre renvoyé par ta boucle est :
    933262154439441526816992388562 667004907159682643816214685929 638952175999932299156089414639 761565182862536979208272237582 511852109168640000000000000000 00000000

    il devrait te renvoyer la valeur 24 donc? c'est bien ca?

    En tout cas tu rentre dans une boucle infinie a cause du while qui est une boucle dans la boucle, sauf que celle ci tourne tant que j=0 sauf que tu rentre dans la boucle for, j=0 donc tu rentre dans la boucle while, et tu vas tourner en boucle la dedans sans incrémenter le "j", donc arrivé a la fin de la boucle while il la recommence sempiternellement

    utilise un if a la place.
    essaie ca :
    Code:
    factoriel="93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000"
    factoriel=str(factoriel)
    factoriel=list(factoriel)
    factoriel=factoriel[::-1]
    final=0
    for j in factoriel:
        print(j)
        if j=="0":
            final=final+1
        else:
            break
        
    print(final)
    Il incrementera jusqu'a ce qu'il trouve autre chose qu'un zéro, et si il trouve autre chose, il rentre dans les "else" et arrete la boucle for avec le break
    sans le else, il te comptera tout les zeros dans la liste (a savoir qu'il y en a 30 puisque il y en a 6 après l'arret des zero initiaux
    Dernière modification par Loupsio ; 22/10/2015 à 17h31.

  10. #9
    polo974

    Re : Python: transformer 103 en ("3","0","1")

    exploite les fonctionnalités de python:
    Code:
    >>> a='01520125630'
    >>> a
    '01520125630'
    >>> print len(a.lstrip('0')) - len(a.replace('0',''))
    2
    >>>
    le lstrip vire les 0 non significatifs.

    edit: il y a aussi la fonction help() dans python... sinon, il y a les recherches sur internet
    Dernière modification par polo974 ; 23/10/2015 à 05h54.
    Jusqu'ici tout va bien...

  11. #10
    imoca

    Re : Python: transformer 103 en ("3","0","1")

    Le but du programme est de compter le nombre de 0 à la fin de factoriel 100
    Une double utilisation de la formule de Legendre est très efficace.

  12. #11
    WhiteChocapic

    Re : Python: transformer 103 en ("3","0","1")

    super merci pour vos réponses.
    imoca je ne vois pas comment utiliser la formule de Legendre. pourrais tu m'expliquer?

  13. #12
    imoca

    Re : Python: transformer 103 en ("3","0","1")

    soit a=100!
    avec non divisible par 2 ni 5.
    Le nombre de zero a la fin de a est le minimum entre p et q.
    Or calculer p et q est facile avec la formule de Legendre.
    et

  14. #13
    WhiteChocapic

    Re : Python: transformer 103 en ("3","0","1")

    ok merci c est plus clair pour moi maintenant

Discussions similaires

  1. "fondamentales", "dures", "molles" ... : comment classer les sciences ?
    Par Arvirik dans le forum Epistémologie et Logique (archives)
    Réponses: 13
    Dernier message: 22/04/2017, 22h41
  2. "trame asynchrone"= "frame relay" ou "Asynchronous transfer mode (ATM)"?
    Par JulienVictor dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 07/04/2015, 20h45