所以我写了一些代码来掷三个软糖骰子(六边骰子的边是-1,-1,0,0,+1,+1)如果三个骰子加起来总共掷-3,我有一个函数,然后一次又一次地掷一个软糖骰子,从每个骰子的总数中取1,如果掷了-1以外的东西,我就退出,这样我得到一个“爆炸式下降”,使得总数不到-3的可能性,尽管可能性越来越小。
我的分解功能是:

def explodedown():
  curval = -3
  while 1:
    newroll = rolldie()
    if newroll != -1:
      break
    else:
      curval = curval-1
  return curval;

这似乎工作得很好,但我几乎觉得,如果我想写得更简单,应该有一些方法来写循环,更像:
while newroll == -1
  newroll = rolldie()
  curval = curval-1

然后循环自然中断,不需要if语句。问题是NEWLL在我们进入循环之前就不存在了,所以我认为这不会起作用。如果在循环开始之前添加另一个语句,可能是这样的:
newroll = rolldie()
while newroll == -1
  newroll = rolldie()
  curval = curval-1

不过,在那里放两次新的滚球线似乎不符合蟒蛇的本性。
思想?有没有一种方法可以简化我的分解函数并使其更具可读性?

最佳答案

你可以这样做:

while rolldie() == -1:
    curval -= 1

10-06 10:43