ここでは、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