在没有一堆 if 语句的情况下从大于、小于和等于中获取布尔值?
Getting Boolean value from greater than, less than, and equal to without a bunch of if statements?
我比较了两个游戏列表,看一个是否 greater/less 或者它们是否相等。
如果我使用 <=
或 >=
布尔值将打印 win/lose。但如果它们相等,则该值仍将是 win/lose。有没有办法在没有一堆 if
语句的情况下打印“领带”?
我现在的是这样的:
totalA = [5, 5, 5]
totalB = [5, 5, 5]
grandtotal = sum(totalA) <= sum(totalB)
if grandtotal == True:
print("Win")
else:
print("Lose")
如果您有三种可能的结果,那不是布尔值,因为根据定义,布尔值只有两种可能性。使用布尔值捕获三种可能性至少需要两个布尔值(例如 "Win" if a < b else "Lose" if b < a else "Tie"
)。但如果你想完全不使用 if
语句,有办法!
创建一个数学比较函数,它将 return 集合 -1, 0, 1
的结果基于两个数字中哪个较大,然后将这些结果映射到所需的字符串。
print({
1: "Win",
0: "Tie",
-1: "Lose",
}[(sum(totalB) - sum(totalA)) // (abs(sum(totalB) - sum(totalA)) or 1)])
将其放入一个函数中(并添加一些 int
转换以使其也处理 float
输入):
>>> def print_result(totalA, totalB):
... delta = sum(totalB) - sum(totalA)
... print({
... 1: "Win",
... 0: "Tie",
... -1: "Lose",
... }[int(delta // (abs(delta) or 1))])
...
>>> print_result([5, 5, 5], [5, 5, 5])
Tie
>>> print_result([1, 2, 3], [2, 3, 4])
Win
>>> print_result([3, 4, 5], [2, 3, 4])
Lose
>>> print_result([5, 5, 5], [5, 5, 5.0])
Tie
>>> print_result([5, 5.1, 5], [5, 5, 5.0])
Lose
>>> print_result([5, 5.1, 5], [5, 5.2, 5.0])
Win
我比较了两个游戏列表,看一个是否 greater/less 或者它们是否相等。
如果我使用 <=
或 >=
布尔值将打印 win/lose。但如果它们相等,则该值仍将是 win/lose。有没有办法在没有一堆 if
语句的情况下打印“领带”?
我现在的是这样的:
totalA = [5, 5, 5]
totalB = [5, 5, 5]
grandtotal = sum(totalA) <= sum(totalB)
if grandtotal == True:
print("Win")
else:
print("Lose")
如果您有三种可能的结果,那不是布尔值,因为根据定义,布尔值只有两种可能性。使用布尔值捕获三种可能性至少需要两个布尔值(例如 "Win" if a < b else "Lose" if b < a else "Tie"
)。但如果你想完全不使用 if
语句,有办法!
创建一个数学比较函数,它将 return 集合 -1, 0, 1
的结果基于两个数字中哪个较大,然后将这些结果映射到所需的字符串。
print({
1: "Win",
0: "Tie",
-1: "Lose",
}[(sum(totalB) - sum(totalA)) // (abs(sum(totalB) - sum(totalA)) or 1)])
将其放入一个函数中(并添加一些 int
转换以使其也处理 float
输入):
>>> def print_result(totalA, totalB):
... delta = sum(totalB) - sum(totalA)
... print({
... 1: "Win",
... 0: "Tie",
... -1: "Lose",
... }[int(delta // (abs(delta) or 1))])
...
>>> print_result([5, 5, 5], [5, 5, 5])
Tie
>>> print_result([1, 2, 3], [2, 3, 4])
Win
>>> print_result([3, 4, 5], [2, 3, 4])
Lose
>>> print_result([5, 5, 5], [5, 5, 5.0])
Tie
>>> print_result([5, 5.1, 5], [5, 5, 5.0])
Lose
>>> print_result([5, 5.1, 5], [5, 5.2, 5.0])
Win