0

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

我对 Python 还很陌生,所以我想在尝试以最糟糕的方式做某事之前我会先问一下。我想知道(如果没有办法做到这一点,我只是还不知道)是否最好让开和关开关在它们到达这一点之前中断并更改变量,所以例如,当 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')

干杯!

4

3 回答 3

2

也许您正在寻找continue

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

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

于 2012-10-08T09:12:10.360 回答
0

谢谢大家的建议。我通过实际回到定义变量的位置解决了这个问题。我将它设置为当它关闭时,它将所有可能的变量发送到 if,这样它总是在它关闭时通过。这样,当开关打开并接受用户输入时,它会选择性地通过。我考虑了其他选择,但由于这个原型必须有一个快速的周转时间,这似乎是最好的选择。

再次感谢!

于 2012-10-08T20:20:25.333 回答
0

听起来您想使用continue。Continue 有点像 break,除了 break 终止循环的地方, continue 只是跳过当前循环的其余部分并开始下一个循环。

我真的不知道你想做什么,但你可以尝试这样的事情:

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')
于 2012-10-08T12:11:39.200 回答