Python 3 で数学を。

Python 3 とライブラリで数学の問題を解いていきます。統計学や機械学習はときどき。

集合。真偽表 (真偽値) (Python 3: and, or, pandas: DataFrame())

使用するライブラリ

Pandas

Python 3 コード

truth_table1.py

#!/usr/bin/env python3


"""(docstring)
"""


import pandas as pd


def truth_table1(a, b, c):
    """(docstring)
    """
    a_b_c = {'a': a, 'b': b, 'c': c}
    a_and_b = {'a & b': a and b}
    a_and_c = {'a & c': a and c}
    a_and_b_or_a_and_c = {'(a & b) | (a & c)': (a and b) or (a and c)}

    return a_b_c, a_and_b, a_and_c, a_and_b_or_a_and_c


if __name__ == '__main__':
    # pandas で簡単な表を作成。
    T_F_dat = {'a': ['T', 'T', 'T', 'T', 'F', 'F', 'F', 'F'],
               'b': ['T', 'T', 'F', 'F', 'T', 'T', 'F', 'F'],
               'c': ['T', 'F', 'T', 'F', 'T', 'F', 'T', 'F'],
               'a & b': ['T', 'T', 'F', 'F', 'F', 'F', 'F', 'F'],
               'a & c': ['T', 'F', 'T', 'F', 'F', 'F', 'F', 'F'],
               '(a & b) | (a & c)': ['T', 'T', 'T', 'F', 'F', 'F', 'F', 'F']}

    df = pd.DataFrame(T_F_dat,
                      columns=['a', 'b', 'c', 'a & b',
                               'a & c', '(a & b) | (a & c)'])
    print(df)
    print('')
    print('-'*79)

    a_T, b_T, c_T = True, True, True
    a_F, b_F, c_F = False, False, False

    T_F_list = [[a_T, b_T, c_T], [a_T, b_T, c_F],
                [a_T, b_F, c_T], [a_T, b_F, c_F],
                [a_F, b_T, c_T], [a_F, b_T, c_F],
                [a_F, b_F, c_T], [a_F, b_F, c_F]]

    # 真偽のパターンごとに出力。
    for t_f in T_F_list:
        truth_table = truth_table1(*t_f)
        for t_t in truth_table:
            print(t_t)
        print('')
        print('-'*79)

出力

$ python3 truth_table1.py
   a  b  c a & b a & c (a & b) | (a & c)
0  T  T  T     T     T                 T
1  T  T  F     T     F                 T
2  T  F  T     F     T                 T
3  T  F  F     F     F                 F
4  F  T  T     F     F                 F
5  F  T  F     F     F                 F
6  F  F  T     F     F                 F
7  F  F  F     F     F                 F

-------------------------------------------------------------------------------
{'a': True, 'b': True, 'c': True}
{'a & b': True}
{'a & c': True}
{'(a & b) | (a & c)': True}

-------------------------------------------------------------------------------
{'a': True, 'b': True, 'c': False}
{'a & b': True}
{'a & c': False}
{'(a & b) | (a & c)': True}

-------------------------------------------------------------------------------
{'a': True, 'b': False, 'c': True}
{'a & b': False}
{'a & c': True}
{'(a & b) | (a & c)': True}

-------------------------------------------------------------------------------
{'a': True, 'b': False, 'c': False}
{'a & b': False}
{'a & c': False}
{'(a & b) | (a & c)': False}

-------------------------------------------------------------------------------
{'a': False, 'b': True, 'c': True}
{'a & b': False}
{'a & c': False}
{'(a & b) | (a & c)': False}

-------------------------------------------------------------------------------
{'a': False, 'b': True, 'c': False}
{'a & b': False}
{'a & c': False}
{'(a & b) | (a & c)': False}

-------------------------------------------------------------------------------
{'a': False, 'b': False, 'c': True}
{'a & b': False}
{'a & c': False}
{'(a & b) | (a & c)': False}

-------------------------------------------------------------------------------
{'a': False, 'b': False, 'c': False}
{'a & b': False}
{'a & c': False}
{'(a & b) | (a & c)': False}

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

参考文献 (数式を参考)

新装版 集合とはなにか―はじめて学ぶ人のために (ブルーバックス)

新装版 集合とはなにか―はじめて学ぶ人のために (ブルーバックス)