这段代码可以更加Pythonic吗?循环

时间:2017-08-16 14:36:19

标签: python while-loop

所以我正在编写一些代码来滚动三个软糖骰子(六边形骰子,边长为-1,-1,0,0,+ 1,+ 1)。如果三个骰子一起滚动总共-3个,我有一个函数,然后一遍又一遍地滚动一个软糖骰子,从每个-1的总数中取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语句。问题是newroll在我们进入循环之前不存在,所以我认为这不会起作用。也许如果我在循环开始之前添加了另一个语句,如:

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

但是将newroll线放在那里似乎并不是pythonic。

思考?有没有办法简化并使我的爆炸功能更具可读性?

1 个答案:

答案 0 :(得分:3)

你可以这样做:

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