0

そこで、加重確率に基づいて次のビデオを自動的に選択するビデオ プレーヤーを作成しています。ビデオが入ってくると、csv からすべてのメタタグを読み取り、確率ロール後に次の一致を検索します。if ステートメントと for ループを使用してインラインでプログラムされたさまざまなメタタグ チェックをすべて持っていましたが、クライアントはフィルターごとにオンとオフのスイッチを要求したばかりで、最も効率的な方法について頭を悩ませています。問題に近づいています。

私はまだPythonにかなり慣れているので、可能な限り最悪の方法で何かをしようとする前に質問したいと思いました. 私は、オンとオフのスイッチを中断して、変数がこの時点に到達する前に変更する方が良いかどうか疑問に思っています (これを行う方法がない場合、まだ知りません)。たとえば、オンスイッチがオンの場合、可能なすべての色のリストが変数 color に割り当てられるため、常に合格し、色からビデオが拒否されることはなく、同じ基本的なフォーマットが維持されます。

以下は、読みやすさのために、私が行っていることの単純化されたバージョンです。その前に、プログラムは 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を使いたいようですね。続行はブレークに似ていますが、ブレークがループを終了し、続行がループの現在の実行の残りをスキップして次の実行を開始する場合を除きます。

何をしようとしているのかはよくわかりませんが、次のようなことを試すことができます。

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 に答える