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

Kef*_*fka 5 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
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 8

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

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

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

>>> sum(dice) - min(dice)
13
Run Code Online (Sandbox Code Playgroud)