Python | input()

Python
スポンサーリンク

ここでは、Python の input()eval() を使って「メモ付き電卓」を作ります。
入力した式を計算し、履歴をファイル(calc_history.txt)に保存するサンプルです。


完成サンプル:メモ付き電卓

# メモ付き電卓
# 計算履歴をファイルに保存するサンプル

import datetime

HISTORY_FILE = "calc_history.txt"

def save_history(expression, result):
    """履歴をファイルに追記保存"""
    with open(HISTORY_FILE, "a", encoding="utf-8") as f:
        time_str = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        f.write(f"[{time_str}] {expression} = {result}\n")

def main():
    print("=== メモ付き電卓 ===")
    print("式を入力してください(例:2+3*4)")
    print("終了するには 'exit' を入力")

    while True:
        expr = input(">>> ")

        if expr.lower() in ("exit", "quit"):
            print("電卓を終了します。")
            break

        try:
            # eval() で式を評価
            result = eval(expr)
            print("結果:", result)

            # ファイルに保存
            save_history(expr, result)

        except Exception as e:
            print("エラー:", e)

if __name__ == "__main__":
    main()
Python

動作例

=== メモ付き電卓 ===
式を入力してください(例:2+3*4)
終了するには 'exit' を入力
>>> 2+3*4
結果: 14
>>> (10-3)/2
結果: 3.5
>>> exit
電卓を終了します。

ファイル calc_history.txt には次のように記録されます:

[2025-11-06 07:22:10] 2+3*4 = 14
[2025-11-06 07:22:18] (10-3)/2 = 3.5

学べるポイント

内容説明
input()ユーザーから式を文字列として受け取る
eval()文字列を Python の式として実行して計算
with open(..., "a")ファイルを追記モードで開いて履歴保存
datetime モジュール計算した時間を記録に追加
try-except入力ミスやエラーを安全に処理

🔒 注意:eval() の安全性

eval() は入力をそのまま実行するため、悪意のあるコードを実行してしまう危険があります。
安全にしたい場合は、次のように 数式だけ許可する方法もあります:

import re

expr = input(">>> ")
if re.fullmatch(r"[0-9+\-*/(). ]+", expr):
    result = eval(expr)
else:
    print("不正な式です(数字と演算子のみ入力してください)")
Python
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました