编程题目:打印输出逻辑运算表

该代码使用Python实现了9种基本逻辑运算符的真值表生成,并将结果保存到logic.txt文件中。通过定义不同的逻辑运算函数,如否定、合取、析取等,对所有可能的布尔值组合进行运算,并以表格形式输出。主要功能包括逻辑运算函数的定义、真值表的生成和格式化以及内容保存到文件。
摘要由CSDN通过智能技术生成

编程题目:打印输出逻辑运算表

编程内容及要求:

编写程序,打印输出9种基本逻辑运算符(与、或、非、条件、双条件、异或、与非、或非、条件否定)的运算表到字符文件logic.txt中。

编程语言可选择C、C++、Java或Python。

逻辑运算表输出格式示例:

------------------

 P   Q    条件否定

------------------

 T   T    F

 T   F    T

 F   T    F

 F   F    F

------------------

编程目的:学会用程序语言提供的基本逻辑运算功能实现所有9种逻辑运算。

代码

from typing import Callable, List, Tuple

def init_p_q() -> List[Tuple[bool]]:
    return [(True, True), (True, False), (False, True), (False, False)]

def cstr(b: bool) -> str:
    return 'T' if b else 'F'

def negation(p: bool) -> bool:
    return not p

def conjunction(p: bool, q: bool) -> bool:
    return p and q

def disjunction(p: bool, q: bool) -> bool:
    return p or q

def implication(p: bool, q: bool) -> bool:
    return not p or q

def biconditional(p: bool, q: bool) -> bool:
    return p == q

def exclusive_or(p: bool, q: bool) -> bool:
    return p != q

def nand(p: bool, q: bool) -> bool:
    return not (p and q)

def nor(p: bool, q: bool) -> bool:
    return not (p or q)

def nonimplication(p: bool, q: bool) -> bool:
    return p and not q

def generate_truth_table(operation: Callable) -> List[str]:
    if operation == negation:
        table = [(p, operation(p)) for p in [True, False]]
    else:
        table = [(p, q, operation(p, q)) for p, q in init_p_q()]

    return table

def format_truth_table(operation_name: str, table: List[str]) -> str:
    header = f"{operation_name}\n{'-' * 20}\n P {'  Q' if len(table[0]) == 3 else ''}  Result\n{'-' * 20}\n"
    formatted_table = ""

    for row in table:
        formatted_row = f"{'T' if row[0] else 'F'}   {'T' if len(row) == 3 and row[1] else 'F'}{'   T' if row[-1] else ''}{'   F' if not row[-1] else ''}\n"
        formatted_table += formatted_row

    return header + formatted_table

def save_to_file(file_name: str, content: str) -> None:
    with open(file_name, "w") as file:
        file.write(content)

def main():
    operations = {
        "Negation": negation,
        "Conjunction": conjunction,
        "Disjunction": disjunction,
        "Implication": implication,
        "Biconditional": biconditional,
        "Exclusive OR": exclusive_or,
        "NAND": nand,
        "NOR": nor,
        "Nonimplication": nonimplication,
    }

    all_formatted_tables = ""

    for operation_name, operation in operations.items():
        truth_table = generate_truth_table(operation)
        formatted_table = format_truth_table(operation_name, truth_table)
        all_formatted_tables += formatted_table + "\n"

    save_to_file("logic.txt", all_formatted_tables)
    print("All truth tables saved to logic.txt")

if __name__ == '__main__':
    main()

解释

这段代码可以生成包含逻辑运算的真值表,并将其保存到一个文本文件中。代码定义了各种逻辑运算(例如否定、合取、析取等),并分别计算它们的结果。以下是详细用法的说明:

  1. 定义逻辑运算函数:代码首先定义了一系列逻辑运算的函数,如negationconjunctiondisjunction等。这些函数接收两个布尔值参数pq,并返回相应逻辑运算的结果。

  2. 生成真值表:generate_truth_table函数接收一个逻辑运算函数作为参数,并使用init_p_q函数初始化pq的组合。对于否定运算,函数会生成一个包含两个布尔值的列表;对于其他运算,函数会生成一个包含四个布尔值对的列表。然后,它会应用逻辑运算函数并生成一个真值表。

  3. 格式化真值表:format_truth_table函数接收逻辑运算的名称(例如"Conjunction")和真值表,并将其格式化为一个易于阅读的字符串。字符串包含一个标题行,用于显示逻辑运算的名称,以及一个表格,显示pq和运算结果的组合。

  4. 保存到文件:save_to_file函数接收一个文件名和要保存的内容。它会创建一个新的文本文件(或覆盖现有文件),并将内容写入该文件。

  5. 主函数:main函数定义了一个包含逻辑运算名称和相应函数的字典。对于字典中的每个逻辑运算,它会生成一个真值表,将其格式化,然后将格式化后的真值表添加到一个字符串中。最后,它会调用save_to_file函数将所有格式化的真值表保存到一个名为logic.txt的文件中,并在屏幕上显示一条消息,通知用户所有真值表已保存。

要运行这段代码,只需将其复制到一个新的Python文件(例如truth_tables.py)并运行该文件。完成后,你会在当前目录下找到一个名为logic.txt的文件,其中包含所有逻辑运算的真值表。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值