0

重複の可能性:
if/elif ステートメントによる複数の条件

複数の条件 (「または」) のいずれかが満たされた場合、Python のループ内でループをトリガーしています。スクリプトは「if」ステートメントをスキップしたようで、必要な条件を満たさずに内部ループに入ります。

コード

# Begin TestCase
# Main logic: execute RemoteController macro, if expected state == true, set 'Success', else: Fail
for macroname_n in range (32):
    handler("RemoteController", "SET", "[{0}_{1}_{2}]".format(testcase, macroname_n, platform), "")
    result = pbc_json(disk, testcase_area, testcase, platform, filename_n, coord_n)
    filename_n += 1
    coord_n += 1
    if macroname_n == 15 or 20:
        success_counter = 0
        for extra_loop in range(15):
            handler("RemoteController", "SET", "\"down 4\"", "")
            result = pbc_json(disk, testcase_area, testcase, platform, filename_n, coord_n)
            filename_n += 1
            if result >= 50:
                success_counter += 1
        if success_counter <> 15:
            result = 0

前もって感謝します!

4

3 に答える 3

11

この行は、あなたが望むことをしません:

if macroname_n == 15 or 20:

これは次のように解析されます。

if (macroname_n == 15) or (20):

はブール コンテキストでは常に true であるため20、ステートメントは常に true です。あなたが実際に欲しいのはこれです:

if macroname_n in (15, 20):
于 2013-01-29T10:42:58.087 に答える
3

20常にtrueブール コンテキストで評価されます。したがって、macroname_n == 15 or 20常にtrueです。

おそらく次のように書きたいと思うでしょう:

if macroname_n == 15 or macroname_n == 20:
    success_counter = 0
    # ...
于 2013-01-29T10:42:08.147 に答える
1
if macroname_n == 15 or 20:

する必要があります:

 if macroname_n == 15 or macroname_n == 20:

それ以外の場合は、常に20がtrueとして読み取られます。

于 2013-01-29T10:43:29.813 に答える