如何找出哪个变量值最大
if A > B and C and D:
print("A wins")
if B>A and C and D:
print("B wins")
我怎么检查一下,看看一组变量中哪个包含最大的整数?也就是决定谁是赢家?
2 个回答
1
你可以使用 max()
函数来实现这个功能:
if A > max(B,C,D):
print("A wins")
elif B > max(A,C,D):
print("B wins")
当然,还有一种函数式编程的方法可以做到这一点:
var_names = ['A', 'B', 'C', 'D']
max_var = max(zip(names, (map(eval, var_names))), key=lambda tuple: tuple[1])[0]
print("%s wins!" % max_var)
这里的 zip
和 map
会把 var_names
这个列表转换成一系列的元组,比如 ('A', A)
。然后,它会找到第二个元素最大的那个元组。最后,从这个元组中提取出变量名。
8
你可以测试每一个:
if A > B and A > C and A > D:
或者你可以直接测试其他三个中的最大值:
if A > max(B, C, D):
但看起来你真正想要的是找出哪个玩家的分数最高。你应该把玩家的分数存储在一个字典里:
players = {'A': A, 'B': B, 'C': C, 'D': D}
这样就更容易找出谁赢了:
winner = max(players, key=players.get)
print(winner, 'wins')
这段代码会返回players
中分数最高的玩家的名字。你可以在代码中一直使用players
,而不是到处都用不同的变量。
为了更清楚地说明:A > B and C and D
是行不通的;布尔逻辑不是这样工作的;每个表达式都是单独测试的,所以你需要A > B
必须为真,而且 C
也必须为真并且 D
也必须为真。在Python中,如果值不是空的容器,或者不是数字0,它们就被认为是真;如果这些都是整数分数,C
和D
在不等于0
时就为真。