0
votes

Convertir des chiffres de clavier numériques mobiles en son mot correspondant Python

J'ai besoin de créer une fonction, où, si je donne une entrée de 999933. Il devrait donner une sortie "ZE". Il travaille essentiellement en tant que clavier de téléphone mobile numérique. Comment puis-je cela. J'ai cherché à obtenir un exemple d'échantillon sur Internet. Tout, j'ai eu était tout à fait opposé. Comme, donnant le texte en entrée et vous obtiendrez le numéro. Je ne pouvais pas obtenir le flux exact de, comment y parvenir. S'il vous plaît laissez-moi savoir, comment puis-je faire cela. XXX


1 commentaires

Qu'avez-vous essayé? Avez-vous construit la structure de la lettre?


3 Réponses :


0
votes

Créer une cartographie pad_number à la lettre.
Utilisez itheroTools.groupby code> à itérer sur des presses de pad consécutives et calculez quelle lettre nous obtenons.

letters = {"3": "def", "9": "wxyz"}
def number_to_text(val):
    return "".join([letters[d][(len(list(g)) - 1) % len(letters[d])] for d, g in itertools.groupby(str(val))])

print(number_to_text(999933))
# ze


1 commentaires

Réponse sans explication n'affiche rien



0
votes

Vous devez

  • groupe les mêmes chiffres avec le regex (\ d) \ 1 * qui capturer un chiffre puis le même chiffre x fois
  • Utilisez la valeur d'un chiffre dans le groupe pour obtenir la clé
  • Utilisez la longueur de celui-ci pour obtenir la lettre xxx

    à l'aide de la compréhension de la liste xxx


6 commentaires

Qu'est-ce que "re" ici. Quand j'exécute le code. Je reçois l'erreur. "re" n'est pas défini


Module de regex @Jeyeanthkanagaraj regex importer re


Ceci est bien trop simplifié et n'a presque aucune explication quant à la façon dont cela fonctionne vraiment.


@Seedyrom vraiment? Partie: 1.Le regex au groupe? 2. Obtenir un int ? 3. Obtenir une longueur?


Vous avez les marches en haut, mais vous sautez complètement sur ce que la Groupby fait et comment votre code fonctionne réellement. Je peux supposer que l'OP est un débutant et ne comprend probablement pas ce que vous faites réellement.


@azro je pensais que je regardais l'autre solution, désolé c'est tard PST! Mais toujours re.finditer est TERSE pour un débutant et a le même effet que Groupby ici. Vous devriez au moins expliquer comment cela fonctionne!



1
votes

Les autres réponses sont correctes, mais j'ai essayé d'écrire un monde moins bref plus vrai (y compris les doctests) expliquant de la manière dont les résultats précédents fonctionnaient:

dialpad_text.py : : : xxx

espère que cela vous aide à comprendre ce qui se passe au niveau inférieur! De plus, si vous ne faites pas confiance à mon code, il suffit de sauvegarder cela dans un fichier et d'exécuter python -m doctest donalpad_text.py et il passera les doctests du module.

(Notes: sans le drapeau -v, il ne produira rien, le silence est doré!)


0 commentaires