如何找出哪个变量值最大

4 投票
2 回答
20465 浏览
提问于 2025-04-18 03:16
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)

这里的 zipmap 会把 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,它们就被认为是真;如果这些都是整数分数,CD在不等于0时就为真。

撰写回答