Partage
  • Partager sur Facebook
  • Partager sur Twitter

Transformer une chaîne de caractère en entier

    23 septembre 2019 à 12:42:34

    Salut à tous !

    Je début un master en Astrophysique et je suis des cours de programmation en Python, car l'info est indispensable de nos jours dans ce genre de domaine :D!

    J'ai un programme à réaliser pour convertir les nombres en chiffres romains, et je suis confronté à un problème dans mon implémentation.

    Je souhaite d'abord affecter I=X=C=M=1 (je ne donne pas plus de détails pour aller droit au but :D), puis demander à l’exécuteur de rentrer une valeur pour ce que j'appelle l'indice numéro 1. Celui ci va rentrer (pour la première boucle) : a=input("entrer la valeur du premier indice : ").

    A ce stade, mon a prend la valeur "I" sous forme d'une chaîne de caractère. Et c'est là que mon problème pointe à l'horizon, car je souhaite revenir à I en tant qu'entier, mais lorsque j'envoie int(a), il me renvoie évidemment et malheureusement 

    ValueError: invalid literal for int() with base 10: 'I' :colere:

    Je ne vois pas de solution à ce problème pour l'instant... Pouvez vous m'aider ? HELP ! :(

    • Partager sur Facebook
    • Partager sur Twitter
      23 septembre 2019 à 14:34:03

      J'ai pas vraiment compris ce que tu veux faire, tu veux faire quoi avec I=X=C=M=1 ? 

      Là tu essayes de transformer un caractère en entier c'est ça ? Si c'est le cas, forcément python te dit que ça fonctionne pas, il peut changer que des nombres en entier. 

      Il faut que tu écrives une fonction qui prennent en paramètre une chaine de caractère de nombre romain et renvoie l'entier correspondant.

      Où tu peux par exemple créer un dictionnaire en associant chaque nombre romain avec son entier correspondant.

      • Partager sur Facebook
      • Partager sur Twitter
        23 septembre 2019 à 21:18:22

        Je confirme, tu dois faire quelque chose du style

        int("I")

         Je l'ai déjà fait cet exercice, je te file un indice : pour transformer un entier n en chiffre romain, il suffit de faire n * "I" puis faire des replace, tu ne trouveras pas plus simple.

        • Partager sur Facebook
        • Partager sur Twitter
          25 septembre 2019 à 1:02:05

          thelinekioubeur a écrit:

          Je confirme, tu dois faire quelque chose du style

          int("I")

           Je l'ai déjà fait cet exercice, je te file un indice : pour transformer un entier n en chiffre romain, il suffit de faire n * "I" puis faire des replace, tu ne trouveras pas plus simple.

          Tout d'abord, merci pour ta réponse :).

          Tu veux donc dire que dans ta méthode, tu écris un entier, prenons l'exemple de 20 : "IIIIIIIIIIIIIIIIIIII" (chaîne de caractères contenant vingts fois le caractère "I"), puis tu remplaces les "I" par les autres symboles en effectuant des boucles conditionnelles et en utilisant les règles de syntaxe des chiffres romains ?

          Sinon je vais tester ce que tu me dis et je te tiens au courant :).

          • Partager sur Facebook
          • Partager sur Twitter
            25 septembre 2019 à 7:54:32

            Tu n'as besoin d'aucune boucle, aucune condition.

            n = 20
            
            roman = n * "I"
            roman = roman.replace("IIIII", "V")
            ...

            je te laisse trouver les autres replace

            • Partager sur Facebook
            • Partager sur Twitter
              27 septembre 2019 à 0:11:06

              GENIAL cette fonction, effectivement le programme devient on ne peut plus simple...

              Merci pour ton aide thelinekioubeur !

              • Partager sur Facebook
              • Partager sur Twitter

              Transformer une chaîne de caractère en entier

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown