Problem with a dictionary program....

Alex Martelli aleaxit at yahoo.com
Tue Sep 28 17:42:16 CEST 2004


Ling Lee <janimal at mail.trillegaarden.dk> wrote:

> Hello.

Hi!  I suspect (from your name and address) that English is not your
mother tongue (it ain't mine, either), so I hope you'll appreciate some
suggestions in the following about natural language as well as Python.

> I'm trying to write a small program that lets you put in a number as an
> integer and then it tells you the textuel representation of the number.

"Textual".

> Like if your input is 42, it will say four two.

Ah, "Digit by digit".  The "textual representation of 42" would be
"fortytwo" -- a harder problem than outputting "four two".

> I found out that I have to make a dictionary like this: List = { 1:"one",
> 2:"two" and so on )

Yes, such a dict is one possibility (no "have to", really, since there
ARE quite practicable alternatives), but [a] don't name it List, that's
WAY confusing, and [b] you may consider using as keys the digit strings
rather than the corresponding numbers, e.g '1' instead of 1 and so on,
it might simplify your coding.
Still, let's assume that this thing IS what you have, one way or
another.


> and I have to use the raw_input method to get the number:

You don't HAVE to (you could obtain it in other ways) but, sure, it's
one possibility.  (Maybe you overuse "have to" a bit...?)

> 
> indput : raw_input(" Tell me the number you want to transform to textuel
> representaion")

No doubt you mean to use an equals-sign here, not a colon, since you are
assigning the result of raw_input to your variable 'indput' (VERY
confusing name, again).

> The I have to transform the input to a string
> indput = str(indput)

Not at all, this is a "no-operation", since the result of raw_input IS a
string already.

> so that I can count how many decimals the number has, like 23 has 2 decimals
> and 3000 has 4 decimals.

"digits".  When you say a number has "2 decimals" this would normally be
interpreted as meaning "two digits after the decimal point", something
like "27.12".  But I don't see why you would care, anyway.  Rather, try
checking indput.isdigit() to verify all of the chararacters are digits.

> After I have gotten the lenght of the string, I will write a loop, that goes
> through the dictionary as many times as the lengt of the string, and the
> gives me the corresponding numbers, the numner 21 would go 2 times through
> the loop and give me the output two one

Nah, loop on the string directly, that will give you one character at a
time in order.  No need to worry about lengths, number of times through,
etc.  Just "for c in indput: ...", that's all.

 
> Will one of you be so kind and tell me how I count the lengt of the indput
> number i was thinking on something like input.count[:] but that dosnt
> work...

That would be len(indput), but you don't need it.

> 
>  and how I make the loop.

You do it with a 'for' statement as above, no worry about the length.

 
>  Im trying to understand dictionaries but have gotten a bit stuck...
> 
> Thanks for all replies....

The Tutor list might be very helpful to you.  Happy studying!


Alex



More information about the Python-list mailing list