攝影或3C

Python: 如何進行測試流程的黑名單過濾

test_flow中有
wait 30 sec
wait 60 sec…
可能還有更多
只要含有wait這個關鍵字
就要過濾掉
blacklist = [“wait”]
沒有寫得很詳細
[“wait 30 sec”,”wait 60 sec”]
如何過濾掉含有wait關鍵字的step?
code:

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 16 07:22:55 2024

@author: SavingKing
"""

# 定義測試流程的列
test_flow = ["step 1", "wait 30 sec", "step 2", "wait 60 sec", "step 3"]

# 定義黑名單詞匯
blacklist = ["wait"]

# 創建一個空列表用於存放過濾後的步驟
filtered_flow = []

# 創建一個空列表用於收集被黑名單過濾掉的步驟
blacklisted_steps = []

# 遍歷原始的測試流程列表
for step in test_flow:
    # 檢查當前步驟是否包含黑名單中的詞匯
    contains_blacklisted_word = False
    for black_word in blacklist:
        if black_word in step:
            contains_blacklisted_word = True
            break  # 如果發現黑名單詞匯中斷內層循環
    
    # 如果當前步驟不包含任何黑名單詞匯則添加到過濾後的列表中
    if not contains_blacklisted_word:
        filtered_flow.append(step)
    else:
        # 如果包含黑名單詞匯將該步驟添加到黑名單過濾列表中
        blacklisted_steps.append(step)

# 打印過濾後的結果
print("過濾後的測試流程:", filtered_flow)

# 打印被黑名單過濾掉的步驟
print("被黑名單過濾掉的步驟:", blacklisted_steps)

代碼解釋:
初始化列表:除了原本的 filtered_flow 用於存放過濾後的步驟之外,新增一個 blacklisted_steps 列表用來收集被黑名單詞匯過濾掉的步驟。
循環處理:遍歷每一個步驟,並檢查是否包含黑名單中的詞匯。
黑名單檢查:通過內層循環和布爾變量 contains_blacklisted_word 進行黑名單詞匯的檢查。
分類收集:根據步驟是否包含黑名單詞匯,將步驟分別添加到 filtered_flow 或 blacklisted_steps 列表中。
輸出結果:最後分別打印過濾後的步驟和被黑名單過濾掉的步驟,以供用戶確認。
這種方法可以清晰地將需要的信息展示給用戶,方便用戶了解哪些步驟被保留,哪些被過濾掉,從而做出相應的決策或調整。
輸出結果:

推薦hahow線上學習python: https://igrape.net/30afN

用def function修改得更結構化:

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 16 07:22:55 2024

@author: SavingKing
"""

# 定義測試流程的列
test_flow = ["step 1", "wait 30 sec", "step 2", "wait 60 sec", "step 3"]

# 定義黑名單詞匯
blacklist = ["wait"]

def judge_black_word(step,blacklist = ["wait"]):
    judge=False
    for black_word in blacklist:
        if black_word in step:
            judge=True
            break
    return judge
    

# 創建一個空列表用於存放過濾後的步驟
filtered_flow = []

# 創建一個空列表用於收集被黑名單過濾掉的步驟
blacklisted_steps = []

# 遍歷原始的測試流程列表
for step in test_flow:
    # 檢查當前步驟是否包含黑名單中的詞匯
    # contains_blacklisted_word = False
    # for black_word in blacklist:
    #     if black_word in step:
    #         contains_blacklisted_word = True
    #         break  # 如果發現黑名單詞匯中斷內層循環
    
    # 如果當前步驟不包含任何黑名單詞匯則添加到過濾後的列表中
    if not judge_black_word(step,blacklist = ["wait"]):
        filtered_flow.append(step)
    else:
        # 如果包含黑名單詞匯將該步驟添加到黑名單過濾列表中
        blacklisted_steps.append(step)

# 打印過濾後的結果
print("過濾後的測試流程:", filtered_flow)

# 打印被黑名單過濾掉的步驟
print("被黑名單過濾掉的步驟:", blacklisted_steps)

輸出結果:

定義測試流程的列表 (test_flow):包含了一系列的步驟,部分步驟中包含黑名單中的詞匯。
定義黑名單詞匯 (blacklist): 這是一個列表,包含了需要過濾掉的關鍵詞。
judge_black_word 函數:此函數接收一個步驟和一個黑名單列表,返回布爾值,指示步驟是否包含黑名單中的任何詞匯。
過濾列表的創建 (filtered_flow 和 blacklisted_steps):分別用於存放過濾後的步驟和被黑名單過濾掉的步驟。
遍歷和過濾:通過遍歷 test_flow 中的每個步驟,並使用 judge_black_word 函數判斷是否包含黑名單詞匯,根據判斷結果將步驟添加到相應的列表中。
輸出結果:打印過濾後的步驟和被過濾掉的步驟。
進行了一些簡化和注釋的優化:

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 16 07:22:55 2024

@author: SavingKing
"""

# 定義測試流程的列
test_flow = ["step 1", "wait 30 sec", "step 2", "wait 60 sec", "step 3"]

# 定義黑名單詞匯
blacklist = ["wait"]

def judge_black_word(step, blacklist):
    """檢查步驟中是否包含黑名單中的詞匯"""
    return any(black_word in step for black_word in blacklist)

# 創建用於存放過濾後步驟和黑名單步驟的列表
filtered_flow = []
blacklisted_steps = []

# 遍歷原始的測試流程列表
for step in test_flow:
    if not judge_black_word(step, blacklist):
        filtered_flow.append(step)
    else:
        blacklisted_steps.append(step)

# 打印過濾後的結果
print("過濾後的測試流程:", filtered_flow)
print("被黑名單過濾掉的步驟:", blacklisted_steps)
儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡