HW03 判斷敘述式


1.notebook

2.YT


3.學習卡與測驗


4.# 定義邏輯運算子函數

def negation(p):

    """否定 ¬P"""

    return not p


def conjunction(p, q):

    """連言 P ∧ Q (且)"""

    return p and q


def disjunction(p, q):

    """選言 P ∨ Q (或)"""

    return p or q


def implication(p, q):

    """蘊含式 P → Q (若 P 則 Q)"""

    # 根據真值表:只有當 P 為 True 且 Q 為 False 時為 False,其餘皆為 True[cite: 8, 10]

    return (not p) or q


def xor(p, q):

    """異或 P ⊕ Q"""

    return p != q


def equivalence(p, q):

    """雙條件 P ↔ Q"""

    return p == q



# 示範 1:印出基本的雙變數真值表 (P, Q)

def print_basic_truth_table():

    print("=" * 45)

    print(f"{'P':<6} | {'Q':<6} | {'P∧Q':<6} | {'P∨Q':<6} | {'P→Q':<6}")

    print("-" * 45)

    

    for p in [True, False]:

        for q in [True, False]:

            p_str = 'T' if p else 'F'

            q_str = 'T' if q else 'F'

            and_str = 'T' if conjunction(p, q) else 'F'

            or_str = 'T' if disjunction(p, q) else 'F'

            imp_str = 'T' if implication(p, q) else 'F'

            

            print(f"{p_str:<6} | {q_str:<6} | {and_str:<6} | {or_str:<6} | {imp_str:<6}")

    print("=" * 45)



# 示範 2:建構複合命題的真值表 (例如筆記中的例子:(p ∨ ¬q) → (p ∧ q))[cite: 8]

def print_complex_truth_table():

    print("\n複合命題真值表:(p ∨ ¬q) → (p ∧ q)")

    print("=" * 65)

    print(f"{'p':<4} | {'q':<4} | {'¬q':<4} | {'p ∨ ¬q':<8} | {'p ∧ q':<8} | {'(p ∨ ¬q) → (p ∧ q)':<18}")

    print("-" * 65)

    

    for p in [True, False]:

        for q in [True, False]:

            not_q = negation(q)

            p_or_not_q = disjunction(p, not_q)

            p_and_q = conjunction(p, q)

            result = implication(p_or_not_q, p_and_q)

            

            p_s = 'T' if p else 'F'

            q_s = 'T' if q else 'F'

            nq_s = 'T' if not_q else 'F'

            onq_s = 'T' if p_or_not_q else 'F'

            paq_s = 'T' if p_and_q else 'F'

            res_s = 'T' if result else 'F'

            

            print(f"{p_s:<4} | {q_s:<4} | {nq_s:<4} | {onq_s:<8} | {paq_s:<8} | {res_s:<18}")

    print("=" * 65)



if __name__ == "__main__":

    print_basic_truth_table()

    print_complex_truth_table()

留言

這個網誌中的熱門文章