# [Chicago] List revolution - errata

Brian Herman bherma3 at uic.edu
Sat Sep 10 18:43:03 CEST 2011

```Solution fork python call it python-1.

On Sat, Sep 10, 2011 at 11:40 AM, Massimo Di Pierro <mdipierro at cs.depaul.edu
> wrote:

>
> class List(list):
>    """
>    >>> a=List()
>    >>> for i in range(100000): a.append(i)
>    >>> print a.first
>    0
>    >>> print a.second
>    1
>    >>> print a.third
>    2
>    >>> print a.twentieth
>    19
>    >>> print a.twentysecond
>    21
>    >>> print a.onehundredthirtyfifth
>    134
>    >>> print a.onethousandfivehundredthirtyeighth
>    1537
>    """
>    def __getattr__(self,name):
>        import re
>        if name.endswith('first'): name = name[:-5]+'one'
>        elif name.endswith('second'): name = name[:-6]+'two'
>        elif name.endswith('third'): name = name[:-5]+'three'
>        elif name.endswith('fth'): name = name[:-3]+'ve'
>        elif name.endswith('hth'): name = name[:-3]+'th'
>        elif name.endswith('ieth'): name = name[:-4]+'y'
>        elif name.endswith('th'): name = name[:-2]
>        subs = [
>            ("eleven","+11"),
>            ("twelve","+12"),
>            ("thirteen","+13"),
>            ("fourteen","+14"),
>            ("fiftheen","+15"),
>            ("sixteen","+16"),
>            ("seventeen","+17"),
>            ("eighteen","+18"),
>            ("nineteen","+19"),
>            ("ten","+10"),
>            ("twenty","+20"),
>            ("thirty","+30"),
>            ("fourty","+40"),
>            ("fifthy","+50"),
>            ("sixty","+60"),
>            ("seventy","+70"),
>            ("eighty","+80"),
>            ("ninety","+90"),
>            ("one","+1"),
>            ("two","+2"),
>            ("three","+3"),
>            ("four","+4"),
>            ("five","+5"),
>            ("six","+6"),
>            ("seven","+7"),
>            ("eigth","+8"),
>            ("nine","+9"),
>            ("ten","+10"),
>            ("hundred",")*100+("),
>            ("thousand",")*1000+("),
>            ("million",")*1000000+("),
>            ("billion",")*1000000000+("),
>            ("trillion",")*100000000000+("),
>            ("and","")]
>        for key,value in subs:
>            name = name.replace(key,value)
>        if '(' in name: name='('+name+')'
>        name.replace('()','1')
>        if not re.compile('[\d\+\*\(\)]+').match(name): return
> AttributeError
>        try: return self[eval(name)-1]
>        except: raise AttributeError
>
> _______________________________________________
> Chicago mailing list
> Chicago at python.org
> http://mail.python.org/mailman/listinfo/chicago
>

--
Thanks,
Brian Herman

brianjherman.com
Research Assistant
University Of Illinois at Chicago
brianherman at acm.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/chicago/attachments/20110910/058c8152/attachment.html>
```