public static double tripleBet(Dice dice, double betAmount) {
double payout = 0.0;
double three_rolled = 3;
if (dice.getFirst() == dice.getSecond() && dice.getThird() == dice.getFirst()) {
payout = betAmount * three_rolled;
} else {
payout = -betAmount;
}
return payout;
}
在这里,我正在比较一个叫做“幸运”的游戏中的死亡情况。如果玩家下注,所有骰子都相同,那么我只需要返回一个支付金额。
条件语句中的表达式是我主要关心的问题。我想知道这样写是否有效或“好的做法”。
也欢迎其他任何建议。
答案 0 :(得分:2)
是的,它是有效的。 df['td'] = df.apply(lambda x: x['td'] if x['X'] is not np.NaN else None, axis=1)
运算符是可传递的,表示A == B和B == C表示A == C。
因此,我可能将其写为
==
答案 1 :(得分:1)
您在做什么很好。也可以为此编写自己的辅助方法。
@SafeVarargs
public static final boolean equals(Object... objs) {
if (objs== null || objs.length < 2) return false; // You may return true or throw exception
for (int i = 0; i < nums.length - 1; i++) {
if (!Objects.equals(objs[i], objs[i + 1])) return false;
}
return true;
}
如果您可能需要比较更多值的用例,这将使您以后更容易阅读。
if (Helper.equals(dice.getFirst(), dice.getSecond(), dice.getThird()) {}
答案 2 :(得分:0)
到目前为止,我看不到您提供的代码有任何问题。
以下是您可以对代码进行的一些化妆品更新。将使它看起来更简单,并减少行数,并在此过程中还节省一些内存。
public static double tripleBet(Dice dice, double betAmount) {
double three_rolled = 3;
// Using Ternary Operator we eliminated the need for a separate variable "payout" by simple returning the resultant values to the caller method.
return (dice.getFirst() == dice.getSecond() && dice.getThird() == dice.getFirst()) ? betAmount * three_rolled : -betAmount;
}
P.S:如果变量
three_rolled
的值始终保持为3,那么我认为您可以将其分配给byte
或类似的数据类型。这么小的值不需要double
。更好的内存管理可带来令人满意的编译器和更简洁的代码。