我刚刚完成了由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"
答案 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;。因此,将后缀代码提取到函数中。也许拿一个数字,并返回带有数字和后缀的序数字符串。