These are chat archives for BernieenJos/weetikveel

23rd
May 2015
iambernie
@iambernie
May 23 2015 14:24
Ik denk dat ordinal wel een handige functie in te bouwen.
>>> ordinal = lambda n: "%d%s" % (n,"tsnrhtdd"[(n/10%10!=1)*(n%10<4)*n%10::4])
>>> [ordinal(i) for i in range(1,10)]
['1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th']
>>> ordinal(234234)
'234234th'
Deze definitie is misschien wat leesbaarder.

>>> def ordinal(n):
...     if 10 <= n % 100 < 20:
...         return str(n) + 'th'
...     else:
...        return  str(n) + {1 : 'st', 2 : 'nd', 3 : 'rd'}.get(n % 10, "th")
... 
>>> [ordinal(i) for i in range(20)]
['0th', '1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th', '10th', '11th', '12th', '13th', '14th', '15th', '16th', '17th', '18th', '19th']
>>>
iambernie
@iambernie
May 23 2015 15:16

Wanneer je jezelf steeds opnieuw hetzelfde stukje code ziet tikken, dan is het hoogstwaarschijnlijk interessant om dat een beetje te veralgemeniseren.

Ik denk dat je hier een goede use-case hebt voor een nieuw Python object. (Heb ik je ooit wat verteld over object georienteerd programmeren?)

iambernie
@iambernie
May 23 2015 15:22

Hier een voorbeeldje van object definitie, dat ik heb opgeslagen in example1.py

class Person(object):
    def __init__(self, age, firstname=None, lastname=None):
        self.age = age
        self.firstname = firstname
        self.lastname = lastname

    def __repr__(self):
        if self.firstname and self.lastname:
            return self.firstname+" "+self.lastname
        else:
            return "No name"

    def is_allowed_to_drink(self):
        if self.age > 16:
           return True
        else:
           return False

    def invert_age(self):
        return 1.0/self.age

en het werkt ongeveer zo:

>>> from example1 import Person
>>> iemand = Person(28, firstname="Ber", lastname="Nie")
>>> print(iemand)
Ber Nie
>>> iemand.is_allowed_to_drink()
True
>>> iemand.invert_age()
0.03571428571428571
JosvanderSpek
@JosvanderSpek
May 23 2015 16:02
Ja er zijn nog 1000 dingen die ik wil aanpassen hoor, en ik wil hier ook best nog even naar kijken, maar dit heeft zeg maar wel echt zeer lage prioriteit haha :p
Maar goed vnv wordt het sws niks meer, IJsbrand komt ook langs nog (samen met Kobus). Als je wilt ben je ook welkom
JosvanderSpek
@JosvanderSpek
May 23 2015 16:10
Oh ik zie nu dat niet alles over die ordinals gaat "p
:p