Comment dois-je dire à Python pour convertir des nombres entiers en mots
Je suis en train de dire à Python pour convertir des nombres entiers en mots.
Exemple: (à l'aide de la chanson 99 bouteilles de bière sur le mur)
J'ai utilisé ce code pour écrire le programme:
for i in range(99,0,-1):
print i, "Bottles of beer on the wall,"
print i, "bottles of beer."
print "Take one down and pass it around,"
print i-1, "bottles of beer on the wall."
print
Mais je ne peux pas comprendre comment écrire le programme, de sorte que les mots (c'est à dire quatre-vingt-dix-neuf, quatre-vingt-dix-huit, etc.) sera affiché à la place des numéros.
J'ai été ruiner ma tête dans le python livre que j'ai, je comprends que peut-être je ne comprends pas for
/if
/elif
/else
boucles encore, mais je suis juste de tourner mes roues.
Quelqu'un pourrait-il fournir aucune indication? Je ne cherche pas une réponse directe, bien que cela pourrait m'aider à voir mon problème, il suffit de rien pour me pointer dans la bonne direction serait génial.
for
,if
,elif
etelse
ne sont pas vraiment des boucles, ils sont instructions- Vous êtes seulement intéressés par les solutions
range(99, 0, -1)
? Ou à la recherche de quelque chose de plus général? - double possible de Code de Golf: Nombre de Mots
- allez-vous l'utiliser pour quelque chose de plus utile que de chanter une chanson?
- et stackoverflow.com/questions/493174/...
- Qui risque de décourager les nouveaux apprenants... Il est bon que l'on cherche à résoudre des problèmes(à moins qu'il/elle le veut pour le bien de trouver des devoirs à faire.)
- Je suis d'accord avec vous @0xc0de, mais ce problème n'est pas vraiment important-problème de la vie réelle, est-il?
- Non, il n'est pas. Je suppose que vous avez pointant vers le problème étant de moins en moins intéressant et délicat. Mais je ne pourrais jamais apprendre quoi que ce soit si j'avais commencé avec les problèmes de la vie réelle.. pour moi, ils étaient trop complexes pour commencer la programmation. Quand j'ai voulu voir comment les choses fonctionnent et en essayant d'éviter la syntaxe des bugs, je ne pouvais pas vraiment penser à des algorithmes 🙂
- Ce problème n'est pas de devoirs...pas encore. J'ai remarqué qu'il y a plusieurs exercices dans le livre "Penser Python" par Allen Downey, qui demandent au lecteur d'essayer de convertir les mots pour les nombres entiers et arrière. J'ai juste utilisé cela comme un exemple....il a été le premier que j'ai essayé. La chose la plus proche que je suis en train de faire avec Python par rapport à ses devoirs avec le programme FORTRAN pour les Ingénieurs Électriques, et nous n'avons pas arriver à faire quelque chose d'amusant comme ça.
- Merci pour le lien wim. J'ai cherché la nuit dernière pour les réponses, le long de ma question ligne. Il n'est jamais venu à moi de changer certains paramètres de la recherche autour de. Ill faire un peu de lecture sur ce forum quand je suis fait avec les classes d'aujourd'hui.
- Génial. Je travaillais sur le même programme exact, le 99 Bouteilles de problème, et je me demandais la même chose.
Vous devez vous connecter pour publier un commentaire.
L'infléchir package peut le faire.
https://pypi.python.org/pypi/inflect
et puis:
Utilisation pynum2word module qui peut être trouvé sur sourceforge
num2words
.Nous avons adapté un existant solution sympa (ref) pour la conversion des numéros de mots comme suit:
résultats:
Noter que cela fonctionne pour des nombres entiers. Néanmoins, il est trivial de diviser un nombre à virgule en deux parties correspondant aux entiers.
Voici un moyen de le faire en Python 3:
Et le résultat est:
Bien, les morts-simple façon de le faire est de faire une liste de tous les numéros qui vous intéressent:
(Le ... indique où vous tapez le texte des représentations d'autres nombres. Non, Python ne va pas magiquement remplir pour vous, vous avez le type de chacun d'eux pour utiliser cette technique.)
Et puis d'imprimer le nombre, il suffit d'imprimer
numbers[i]
. Facile comme bonjour.Bien sûr, cette liste est beaucoup de dactylographie, de sorte que vous pouvez vous demander à propos d'un moyen facile de générer. L'anglais n'a malheureusement beaucoup d'irrégularités, de sorte que vous auriez à mettre manuellement dans les vingt (0-19), mais vous pouvez utiliser les régularités pour générer le reste jusqu'à 99. (Vous pouvez également générer de la des ados, mais seulement certains d'entre eux, de sorte qu'il semble plus facile de simplement taper.)
Une autre approche consiste à écrire une fonction qui met en place la chaîne correcte à chaque fois. Encore une fois, vous aurez à coder en dur les vingt premiers numéros, mais après cela, vous pouvez facilement générer à partir de zéro en tant que de besoin. Il utilise un peu moins de mémoire (un beaucoup moins une fois que vous commencez à travailler avec un plus grand nombre).
Vous pouvez utiliser le python-n2w de la bibliothèque, il suffit de faire
alors simplement
Sonore comme vous aurez besoin d'utiliser un tableau, où
num[1] = "one"
,num[2] = "two"
, et ainsi de suite. Ensuite, vous pouvez parcourir chaque comme vous l'êtes déjà etIci est la version remaniée de plusieurs exemples de code affiché ci-dessus (pour la plupart de code collés par "développeur".
Et voici ma solution 🙂 Il est différentes des précédentes solutions, mais il s'est développé sur mon propre - peut-être quelqu'un en profiter plus que d'autres propositions.
Il est recoursive solution et peut être facilement développer pour le plus grand nombre
Code:
résultat:
Cela fonctionne pour trop les 1000 premiers nombres (Python 3). Débutant solution au problème, mais une solution néanmoins...
Ce fait le travail sans aucune bibliothèque. Utilisé récursivité et il est de style Indien. -- Ravi.
Vous devez utiliser un dictionnaire ou un tableau.
Par exemple :
Et vous pouvez générer la chaîne d'un nombre en faisant, par exemple :
Vous devez vérifier si le dernier chiffre n'est pas un zéro et ainsi de suite.. classique de la valeur de la vérification.
Il rappelle le projet euler défi (problème 17).. vous devriez essayer de trouver quelques solutions à ce sujet
Espère que cela aide