你是否必须创建一个例外来结束一个循环?

时间:2016-07-22 12:36:35

标签: loops python-3.x

我目前正在让python3一遍又一遍地做同样的事情,以计算我可以买多少花:

while True:
  try: 
      flowerprices=ApiGetFlowerPrices()
      if flowerprices>3:
          <CreateException>
      else: considerbuying()
Except:
  pass 

因此,如果花卉价格高于3,我只需重新开始,刷新所有数据。如果价格高于3,我不想考虑购买。 我想重新启动while循环,所以我不会在“break”之类的东西之后。

我想我可以尝试“a”+ float(2)来创建异常,但更优雅的替代方案是什么?

2 个答案:

答案 0 :(得分:1)

您既不需要break也不需要例外。 如果价格低于3,您只想考虑购买,因此:

while True:
    flowerprices = ApiGetFlowerPrices()
    if flowerprices < 3:
        considerbuying()

注意这将创建一个无限循环,因此您需要考虑何时停止检查价格。

答案 1 :(得分:0)

如果你break循环,它将完全停止。您想使用continue,以便再次调用ApiGetFlowerPrices()。如果您的ApiGetFlowerPrices可能会返回错误而不是数字,那么您仍然应该使用try / except。

while True:
  try: 
    flowerprices=ApiGetFlowerPrices()
    if flowerprices>3:
      continue # It will skip the rest of the loop and start again.

    else: considerbuying()

  Except:
    pass 

如果您不需要尝试/除外,请考虑answer by DeepSpace