개인적 공간

랜덤 보상 지급기

조금씩 차근차근 2025. 10. 5. 00:48

요새 너무 삭막하게 사는 것 같아 나 자신에게 보상을 줄 필요성을 느꼈다.

import numpy as np
import json
from datetime import date

REWARDS_JSON = "rewards.json"
RESULT_TXT = "result.txt"
PROB_TXT = "prob.txt"



def get_reward(rewards, prob):
    print("하루의 집중 작업(3시간 이상 걸리는 작업)을 완료했나요?")
    answer = input("Yes/No: ")
    if answer != "Yes":
        print("다음에 다시 오세요!")
        return

    print("어떠한 문제를 해결했나요?")
    answer = input("해결한 문제: ")
    if answer is None or answer.strip() == "":
        print("해결한 문제가 없군요. 다음에 다시 오세요!")
        return

    if np.random.rand() > prob:
        print("고생하셨습니다! 오늘의 당신에게 칭찬 한마디 해주세요!")
        praise = input("칭찬 한마디: ")
        with open(RESULT_TXT, "a") as f:
            f.write(str(date.today())+'\n')
            f.write("해결한 문제: " + answer + "\n")
            f.write("오늘의 칭찬: " + praise + "\n")

        prob = min(prob + 0.05, 1.0)
        with open(PROB_TXT, "w") as f:
            f.write(str(prob))

        return

    keys = list(rewards.keys())
    weights = np.array(list(rewards.values()))

    reward = np.random.choice(keys, p=weights / weights.sum())
    print("축하드립니다! 오늘은 자신에게 보상을 줘봐요!")
    print("오늘의 보상: " + reward)

    with open(RESULT_TXT, "a") as f:
        f.write(str(date.today())+'\n')
        f.write("해결한 문제: " + answer + "\n")
        f.write("오늘의 보상: " + reward + "\n")
    with open(PROB_TXT, "w") as f:
        f.write(str(0.3))

try:
    with open(PROB_TXT, "r") as f:
        prob = float(f.read().strip())
except (FileNotFoundError, ValueError):
    prob = 0.3

try:
    with open(REWARDS_JSON, "r", encoding="utf-8") as f:
        rewards = json.load(f)
except FileNotFoundError:
    rewards = {}


get_reward(rewards, prob)

 

 

보상 파일(rewards.json)은 다음과 같이 정의했다.

{
  "빼빼로": 10,
  "초콜릿": 10,
  "칸쵸": 10,
  "떡볶이": 3,
  "햄버거": 3,
  "치킨": 2,
  "피자": 2,
  "족발": 1
}

 

 

다음과 같이 윈도우 배치파일도 만들어줬다.

@echo off
setlocal
pushd %~dp0
python "%~dp0\Main.py" %*
popd
endlocal