首页 > 解决方案 > Python:确定第一个,第二个,第一个生日

问题描述

我刚刚完成了Colt Steele (Udemy) - Object Oriented Programming 的 The Modern Python Bootcamp的视频练习。该练习使用User具有名字、姓氏和年龄属性的类。还有一种类方法birthday()是祝这个人生日快乐以及他们的年龄。

我对生日方法的问题是它"th"在人的年龄之后有一个静态,如果这个人是 1、61、52 ​​等,这是没有意义的。我如何确定这个数字是 1 还是 2结束还是在第一个数字的开头?我是否必须创建一个针对年龄进行测试的元组?

class User:
    def __init__(self, first, last, age):
        self.first = first
        self.last = last
        self.age = age

    def full_name(self):
        return f"{self.first} {self.last}"

    def initials(self):
        return f"{self.first[0]}.{self.last[0]}."

    def likes(self, thing):
        return f"{self.first} likes {thing}"

    def is_senior(self):
        return self.age >= 65

    def birthday(self):
        self.age += 1
        return f"Happy {self.age}th, {self.first}"


user1 = User("Joe", "Smith", 21)
user2 = User("Blanca", "Lopez", 20)

print(user2.is_senior())
print(user2.birthday())
print(user1.age) 

标签: pythonclassoop

解决方案


不过,您可以使用if-else条件手动检查。像这样的东西:

def birthday(self):
    age = self.age + 1
    age_str = str(age)
    if age // 10 == 1:
        age_str += 'th'
    elif age % 10 == 1:
        age_str += 'st'
    elif age % 10 == 2:
        age_str += 'nd'
    elif age % 10 == 3:
        age_str += 'rd'
    else:
        age_str += 'th'
    return f"Happy " + age_str + ", {self.first}"

推荐阅读