python - 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)
解决方案
不过,您可以使用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}"
推荐阅读
- sql - Oracle - 拆分输入字符串并与列值进行比较
- asynchronous - XMLHttpRequest 已弃用?帮助更新
- react-native - 从抽屉导航打开特定的底部选项卡
- android-studio - kotlin 中的样式类
- r - 使用不连续函数创建单个 ggplot 渐变配色方案
- c - 绝对值通过位操作问题
- reactjs - 如何将 selectAll 和 deSelectAll 应用于 ag-grid react 中的标题复选框
- java - 变量循环不循环
- c++ - 错误 C2601 'EnumWindowsProc':本地函数定义无效
- node.js - 有一个 Babel 问题已删除 Lock.json 重新安装但仍然相同