绕过if语句?蟒蛇

时间:2012-10-08 09:08:19

标签: python if-statement for-loop python-3.x logic

所以我正在制作一个视频播放器,根据一些加权概率自动选择下一个视频。当视频进入时,它会从csv读取所有元标记,然后在概率滚动后查找下一个匹配项。我有各种各样的metatag检查与if语句和for循环一起编程,但是客户端刚刚要求为每个过滤器打开和关闭开关,而我无法绕过最有效的方式绕过接近这个问题。

我对Python仍然相当绿,所以我想在尝试以最糟糕的方式做事之前我会问。我想知道(如果没有办法做到这一点我还不知道)如果最好让on和off开关中断并在它们到达这一点之前改变变量,那么例如,当on开关打开时,每个可能颜色的列表将被分配给变量颜色,因此它总是通过,并且没有视频从颜色中被拒绝,从而保持相同的基本格式。

为了便于阅读,下面是我正在进行的简化版本。在它之前,程序从csv获取它需要的所有变量,并且在最终打印之后,通过的那些变量被添加到随机拉出的良好选择列表中:

for eachrow in table:
    Answer = False
    for eachcell in eachrow:
        if  color == req_color:
            if speed == req_speed:
                if exclusion == req_exclusion:
                    print ('No pass!')
                else:
                    Answer = True
                    print ('All attributes match')
    if Answer:
        print ('This passes')

干杯!

3 个答案:

答案 0 :(得分:2)

也许您正在寻找continue

  

continue语句用于告诉Python跳过当前循环块中的其余语句并继续循环的下一次迭代。

http://docs.python.org/reference/simple_stmts.html#continue

答案 1 :(得分:0)

听起来你想使用continue。 Continue有点像break,除非break终止循环,继续只是跳过当前循环的其余部分并启动下一个循环。

我无法确切地告诉你要做什么,但你可以尝试这样的事情:

testsToRun = ['speed','color']
for row in table:
    Answer = False
    for cell in row:
        if  cell['color'] == color and 'color' in testsToRun:
            print ('No pass!')
            continue
        if cell['speed'] == speed and 'speed' in testsToRun:
            print ('No pass!')
            continue
        if cell['exclusion'] == exclusion and 'exclusion' in testsToRun:
            print ('No pass!')
            continue
        Answer=True
        print ('All attributes match')
    if Answer:
        print ('This passes')

答案 2 :(得分:0)

感谢大家的建议。我通过回到定义变量的位置解决了这个问题。我设置它,以便当它关闭时,它将所有可能的变量发送到if,以便它总是通过,如果它关闭。这样当开关打开并且它接受用户输入时,它选择性地传递信息。我想到了其他选择,但由于这个原型必须快速转换时间,这似乎是最好的选择。

再次感谢!