有没有更有效的方法来按Python大小组织随机结果?

时间:2010-06-04 23:03:08

标签: python random

我正在制作一个程序,部分地滚动四个骰子并从结果中减去最低的骰子。我正在使用的代码是

die1 = random.randrange(6) + 1
die2 = random.randrange(6) + 1
die3 = random.randrange(6) + 1
die4 = random.randrange(6) + 1
if die1 <= die2 and die1 <= die3 and die1 <= die4:
    drop = die1
elif die2 <= die1 and die2 <= die3 and die2 <= die4:
    drop = die2
elif die3 <= die1 and die3 <= die2 and die3 <= die4:
    drop = die3
else:
    drop = die4

cha = die1 + die2 + die3 + die4 - drop

从我迄今为止有限的编码能力来看,这是我能想到的最好的。有没有更好的方法让它按照大小顺序组织四个骰子,然后将三个最高点加在一起而忽略剩下的?或者我正在使用最好的方法来编写代码?

1 个答案:

答案 0 :(得分:8)

将骰子放入列表中,使用sorted对列表进行排序,并使用切片删除最小元素:

>>> import random
>>> dice = [random.randint(1, 6) for x in range(4)]
>>> sum(sorted(dice)[1:])
13

或者更简单的替代方案,如果你有很多骰子也会更快:使用min找到最小骰子并从它们的总和中减去它:

>>> sum(dice) - min(dice)
13