[Tutor] Is there an easily or shorter way?

Ken G. beachkidken at gmail.com
Tue Dec 16 01:46:07 CET 2014


On 12/15/2014 05:49 PM, Steven D'Aprano wrote:
> On Mon, Dec 15, 2014 at 04:25:42PM -0500, Ken G. wrote:
>> I am sure there is a better way to refine the following lines.
>>
>> Letting x equal a number from 1 to 28, go through 28 separate 'if'
>> statements to print a resulting value that equaled the value of x.
> Since you only care about the first 28 values, a list or dict is the way
> to go. The two look remarkably similar:
>
> # Using a dict. Replace the dots ... with the rest of the values.
> names = {1: "one", 2: "two", 3: "three", ... 28: "twenty-eight"}
> print(names[x])
>
> # Using a list. Again, replace the dots.
> names = ["zero", "one", "two", "three", ... "twenty-eight"]
> print(names[x])
>
>
> I stress that neither version *quite* works yet. You have to replace the
> dots ... with the rest of the values, which is tedious but not hard.
>
> In the case of the list version, the reason that I add an entry for zero
> is that lists are indexed from zero. That is, given the list:
>
>      L = ['spam', 'eggs', 'cheese', 'toast']
>
> the first entry is written L[0], the second entry L[1] and so forth.
> Although it takes a bit of getting used to, there actually are good
> reasons for that. One advantage of dicts over lists is that you can
> leave gaps while a list must have placeholders for every position:
>
>      {2: "two", 4: "four", 8: "eight"}
>      ["", "", "two", "", "four", "", "", "", "eight"]
>
>
> Of course, as Danny suggested, if you're going to be using this
> seriously for arbitrary numbers, you can't possibly list every single
> one in advance. What if somebody asks for the name of 9274810276523? In
> that case, we need a function that turns a number into an name digit by
> digit:
>
>      nine trillion, two hundred and seventy-four billion,
>      eight hundred and ten million, two hundred and
>      seventy-six thousand, five hundred and twenty-three
>
> Doing this makes a nice little programming exercise, so I will leave it
> to you :-)
>
>
Yes, Steven, it would be a 'nice' programming exercise. If I could just
find the time...sighs.

Thanks,

Ken



More information about the Tutor mailing list