0
    def c1():
        logfile = open("D:\myfile.txt", 'r')
        for num1, line in enumerate(logfile):
                if "request=100" in line:
                    print num1
                    return True
        return False

    def c2():
        logfile = open("D:\myfile.txt", 'r')
        for num2, line in enumerate(logfile):
                if "response=200" in line:
                    print num2
                    return True
        return False    

    if c1() == True and c2() == True:
        print "Test Case Passed"  
    else:
        print "Test Case Failed"

上記のコードでは、request=100 と response=200 が同じ行に収まるように行番号をチェックしていません。私が必要とすること。

また、以下の条件を満たした場合のみ「合格」として結果を出力したいのですが…

- both c1 and c2 are True
- both "request=100" and "response=200" should fall in same line 
- if any other line also consist of "request=100" and "response=200" then that also should be counted

次の場合、結果は「不合格」です。

- if any one line which consists of "request=200" and "response=200"
- if any one line which consists of "request=100" and "response=100" 
- or any case in which no line should have apart from "request=100" and "response=200"

「myfile」に次のデータがあると考えてください。

request=100 XXXXXXXXXXXXXXXXXXXXXXXXXXXX \n
XXXXXXXXXXXXXXXX response=200 XXXXXXXXX \n
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \n
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \n
XXXX request=100 XXXXX response=200 XXXXXXXXXXX \n
XXXXXXX request=200 XXXXXX response=100 XXXXXXX \n
XXXXXXXX request=100 XXXX response=100"         \n

上記のファイルでは、要求と応答が必要な値以外に異なる値を持っているため、result は Fail です。行 5 のみが正しい値を持っているため、結果は失敗です。

4

1 に答える 1

0

私が正しく理解している場合は、両方の条件を 1 つのループに入れて、行末に到達するか、条件を含む別の行に遭遇するまでループを続ける必要があります。

def are_they_on_the_same_line():
    logfile = open("D:\myfile.txt", 'r')
    intermediate_result = False
    for num1, line in enumerate(logfile):
            if "request=100" in line and "response=200":
                if intermediate_result == True:
                    return False
                intermediate_result = True
    return intermediate_result

あなたが言及した失敗条件を除いて、これが失敗する他の条件があります。しかし、あなたが言及した2つは相互に排他的ではありません。

編集:例から判断すると、これは間違っています。あなたの条件が理解できません。アイデアを得るのに役立つかもしれませんが、そうでない場合は、別の例で条件を明確にしてください。

于 2013-03-28T07:11:31.967 に答える