如何在不引发异常的情况下退出python 2.7中的for循环

时间:2017-05-01 22:31:26

标签: python-2.7 for-loop exception-handling

我有一个for循环遍历一个浮点列表。我的初衷是,如果我的数据是>我可以使用if语句执行for循环'do stuff'。比x百分比...但是我已经意识到这种方法会导致数据重复出现。事实上是正确的,但这不是我想要的,也不是我想要的。所以,我的模拟数据有一些比实际更大的东西,它会触发所有较低百分比的if条件。我真的只是希望它触发最大的百分比而不是下面的较小条件...我怎么能以最pythonic的方式做到这一点?

这是我汇总的示例代码解决方案,但我认为必须使用try / catch块引发异常可能不像其他解决方案那样干净。

#!/usr/bin/env python

percentages =  [0.2,0.5, 0.75, 1, 2, 5]
resultingPercentage = 9


for i in sorted(percentages, reverse=True):
    try:
        if resultingPercentage > i:
            print "We found an opportunity greater than %.2f%% points" %i
            raise Exception
    except:
        #continue
        break

2 个答案:

答案 0 :(得分:1)

看到没有其他人将其作为答案发布并将此问题标记为已回答,您可以在没有break语句出现在异常处理程序中的情况下突破循环:

percentages =  [0.2,0.5, 0.75, 1, 2, 5]
resultingPercentage = 9

for i in sorted(percentages, reverse=True):
    if resultingPercentage > i:
        print "We found an opportunity greater than %.2f%% points" %i
        break

答案 1 :(得分:0)

您可以使用max函数从列表中获取最大百分比,然后只使用该百分比执行单个if语句:

percentages =  [0.2,0.5, 0.75, 1, 2, 5]
resultingPercentage = 9
maxPercentage = max(percentages)
if resultingPercentage > maxPercentage:
    print "We found an opportunity greater than %.2f%% points" %maxPercentage