Python:确定第一,第二,第二个生日

时间:2018-06-06 02:22:02

标签: python class oop

我刚刚完成了由Colt Steele(Udemy)的 The Modern Python Bootcamp - 面向对象编程的视频练习。练习使用类import java.util.Arrays; public class ArrayTest { public static void main(String[] args) { int[] x = {12, 8, 6, 23, 6, 5, 17, 20, 9}; // Arrays.sort(x); int y = linearSearch(x, 23); System.out.println("" + y); // int z = Arrays.binarySearch(x, 23); // System.out.println("" + z); } public static int linearSearch(int[] ar, int value) { for (int i = 0; i < ar.length; i++) { if (ar[i] == value) { return i; } } return -1; } } ,该类具有名字,姓氏和年龄的属性。还有一种课堂方法User,祝愿这个人与他们的年龄一起过生日快乐。

我对生日方法的问题是,在这个人的年龄之后它有一个静态birthday(),如果这个人是1,61,52等没有意义。我怎样才能确定数字在结尾处有1或2,或者在第1个数字开头的情况下?我是否必须创建一个我对年龄进行测试的元组?

"th"

2 个答案:

答案 0 :(得分:1)

但是,您可以使用a a a safsd a a a a条件手动检查。像这样:

if-else

答案 1 :(得分:1)

最简单的事情是:

if self.age%10 == 1:
    # print with st
elif self.age%10 == 2:
    # print with nd
elif self.age%10 == 3:
    # print with rd
else:
    # print with th

首先要做的是寻找可能出错的边缘情况。 11会发生什么? 13? 21? 101? 111?尽你所能并添加逻辑。

接下来,寻找通过重构简化事物的方法。除了st / nd / rd / th之外,你的四个print语句几乎相同,所以将if / elif / else更改为suffix = 'st',然后你就可以了包含print的单{suffix}。重复age%10怎么样?是否值得将其存储在变量中,如lastdigit,以避免重复自己?试试吧,看看。

还要查看数据结构是否有助于简化逻辑。如果你有一个映射{1: 'st', 2: 'nd', 3: 'rd'}的字典,你可以做suffix = d.get(lastdigit, 'th'),这看起来更干净。但是,一旦你加入处理&#39; 11&#39;等等。再试一次,看看。

最后,这可能是您不止一次需要的东西。也许不是在这个程序中,但你写的其他程序可能想要做的第二个&#39;。因此,将后缀代码提取到函数中。也许拿一个数字,并返回带有数字和后缀的序数字符串。