所以,基本上,你要找的是一个 "argmax "的实现。 意思是你有N个值(卷),对应N个索引(车),你想找到哪个索引包含最高值。
不管怎么说,既然你没有提到,我就假设如果几个数值都是最大的(几辆车得到了相同的、最高的滚动),那么其中第一个被认为是赢家。
在你的案例中,鉴于N=4,你可以直接比较所有的变量。这就给了你4个案例(每辆车获胜一个),每个案例有3个比较。实际上是3个案例,因为如果前3个案例没有获胜,那么第四个案例肯定会获胜。 每个案例看起来都是这样。
if car_1 >= car_2 && car_1 > car_3 && car_1 > car_4:
print("Car 1 is in the lead with a roll of {}".format(car_1))
这是个可怕的方法.因此,让我们首先把汽车变成一个汽车列表
list_cars = [car_1, car_2, car_3, car_4]
你可以使用numpy中已经存在的argmax函数,但让我们看看对于这个简单的案例,你如何在没有numpy的情况下做到这一点。
由于默认的'max'函数只会给你一个值(roll),而不会给你一个车的值,所以我们将给这个函数一个list_cars的索引列表,以及一个键,表示对于每个索引,使用相应的车的值。
func = lambda idx: list_cars[idx]
best_car = max(range(len(list_cars)), key = func)
这里'func'定义了一个lambda函数,对于汽车列表中的每个索引,返回汽车的值,而range(len(list_cars))给出了一个从0到list_cars长度的数字列表,所以是[0, 1, 2, 3]。
结果,'best_car'将是一个介于0和3之间的数字,是价值最高的汽车。然后你只需打印
print("Car {} is in the lead with a roll of {}".format(best_car + 1, list_cars[best_car]))
我们用best_car+1来打印汽车的编号,因为索引是从0开始计算的,而汽车是从1开始计算的。