{
  "metadata": {
    "kernelspec": {
      "name": "python",
      "display_name": "Python (Pyodide)",
      "language": "python"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "python",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.8"
    }
  },
  "nbformat_minor": 5,
  "nbformat": 4,
  "cells": [
    {
      "id": "da66adce-0ae7-4761-b9de-339151078910",
      "cell_type": "markdown",
      "source": "# Proof of Concept – Rauchstopp App\n\nDieses Notebook validiert die zentrale Berechnungslogik der Applikation:\n- Rauchfreie Zeit\n- Geldersparnis\n- Umwelt (CO2 & Wasser)\n- Investment Simulation (Zinseszins)",
      "metadata": {}
    },
    {
      "id": "f2daca04-7038-4f38-abcf-9dfe65d22008",
      "cell_type": "markdown",
      "source": "# Imports",
      "metadata": {}
    },
    {
      "id": "7ee485df-64dc-4fb1-a6a1-f3c8876aaa07",
      "cell_type": "code",
      "source": "from dataclasses import dataclass\nfrom datetime import date",
      "metadata": {
        "trusted": true
      },
      "outputs": [],
      "execution_count": 1
    },
    {
      "id": "f51a24c8-8f4d-4616-a728-82fce608277a",
      "cell_type": "markdown",
      "source": "# Datenmodell",
      "metadata": {}
    },
    {
      "id": "a58abe9f-f9d9-40e5-a70c-d2cf3d75e2a4",
      "cell_type": "code",
      "source": "@dataclass\nclass UserData:\n    cigarettes_per_day: int\n    price_per_pack: float\n    cigarettes_per_pack: int\n    start_date: date",
      "metadata": {
        "trusted": true
      },
      "outputs": [],
      "execution_count": 2
    },
    {
      "id": "8780fc84-a649-49c7-a839-2b794a47563b",
      "cell_type": "markdown",
      "source": "# Formeln zur Berechnung",
      "metadata": {}
    },
    {
      "id": "d8829005-2c2a-40ab-8922-55e96500fb18",
      "cell_type": "code",
      "source": "# Zeitberechnung\ndef calculate_smoke_free_days(start_date: date) -> int:\n    today = date.today()\n    return (today - start_date).days\n\n\n# Geldersparnis\ndef calculate_money_saved(user: UserData, days: int) -> float:\n    cost_per_cig = user.price_per_pack / user.cigarettes_per_pack\n    return round(days * user.cigarettes_per_day * cost_per_cig, 2)\n\n\n# Umwelt (CO2 & Wasser)\ndef calculate_environment(days: int, cigarettes_per_day: int):\n    co2_per_cig = 14      # Gramm\n    water_per_cig = 3.7   # Liter\n\n    total_cigs = days * cigarettes_per_day\n\n    co2_kg = (total_cigs * co2_per_cig) / 1000\n    water_liters = total_cigs * water_per_cig\n\n    return round(co2_kg, 2), round(water_liters, 2)\n\n\n# ETF / Zinseszins Simulation\ndef investment_simulation(daily_savings: float, annual_rate: float, years: int):\n    total = 0\n    days = years * 365\n\n    for _ in range(days):\n        total = (total + daily_savings) * (1 + annual_rate / 365)\n\n    return round(total, 2)",
      "metadata": {
        "trusted": true
      },
      "outputs": [],
      "execution_count": 3
    },
    {
      "id": "6ab56df6-1f26-4507-be66-00bf1cb3287d",
      "cell_type": "markdown",
      "source": "# User input",
      "metadata": {}
    },
    {
      "id": "07c6d1cb-14ab-407c-8f64-7bba0de75974",
      "cell_type": "code",
      "source": "print(\"Bitte gib deine Daten ein:\\n\")\n\ncigs_per_day = int(input(\"Zigaretten pro Tag: \"))\nprice_per_pack = float(input(\"Preis pro Packung (CHF): \"))\ncigs_per_pack = int(input(\"Zigaretten pro Packung (z.B. 20): \"))\n\n# Validierung, ob das Jahr kleiner als 2026 ist\nwhile True:\n    try:\n        start_year = int(input(\"Startdatum - Jahr (max. 2026): \"))\n        if start_year > 2026:\n            raise ValueError(\"Jahr darf nicht größer als 2026 sein.\")\n        break\n    except ValueError as e:\n        print(f\"Ungültige Eingabe: {e}\")\n\n# Validierung, ob der Monat existiert (1-12)\nwhile True:\n    try:\n        start_month = int(input(\"Startdatum - Monat (1-12): \"))\n        if start_month < 1 or start_month > 12:\n            raise ValueError(\"Monat muss zwischen 1 und 12 liegen.\")\n        break\n    except ValueError as e:\n        print(f\"Ungültige Eingabe: {e}\")\n\n#Validierung, ob der Tag existiert\nwhile True:\n    try:\n        start_day = int(input(\"Startdatum - Tag (passend in diesem Monat): \"))\n        if start_day < 1 or start_day > 31:\n            raise ValueError(\"Tag muss zwischen 1 und 31 liegen.\")\n\n        # prüft echtes Datum (z.B. 31. Februar verhindern)\n        start_date = date(start_year, start_month, start_day)\n\n        break\n    except ValueError as e:\n        print(f\"Ungültige Eingabe: {e}\")\n\ninterest_rate = float(0.05)\nyears = 10",
      "metadata": {
        "trusted": true
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": "Bitte gib deine Daten ein:\n\n"
        },
        {
          "output_type": "stream",
          "name": "stdin",
          "text": "Zigaretten pro Tag:  100\nPreis pro Packung (CHF):  2000\nZigaretten pro Packung (z.B. 20):  150\nStartdatum - Jahr (max. 2026):  2000\nStartdatum - Monat (1-12):  1\nStartdatum - Tag (passend in diesem Monat):  12\n"
        }
      ],
      "execution_count": 4
    },
    {
      "id": "db282e97-cbec-4b1b-a614-b4d097b3cba0",
      "cell_type": "markdown",
      "source": "# Berechnung",
      "metadata": {}
    },
    {
      "id": "93f2aa62-5eec-4a3c-8ff7-e842e598ee18",
      "cell_type": "code",
      "source": "user = UserData(\n    cigarettes_per_day=cigs_per_day,\n    price_per_pack=price_per_pack,\n    cigarettes_per_pack=cigs_per_pack,\n    start_date=date(start_year, start_month, start_day)\n)\n\ndays = calculate_smoke_free_days(user.start_date)\n\nmoney_saved = calculate_money_saved(user, days)\nco2_saved, water_saved = calculate_environment(days, user.cigarettes_per_day)\n\ndaily_savings = money_saved / days if days > 0 else 0\ninvestment_value = investment_simulation(daily_savings, interest_rate, years)",
      "metadata": {
        "trusted": true
      },
      "outputs": [],
      "execution_count": 5
    },
    {
      "id": "46fa522a-a1b0-4eb1-af4c-623239eb7973",
      "cell_type": "markdown",
      "source": "# Output",
      "metadata": {}
    },
    {
      "id": "149f24ca-0dce-40ea-96a4-f18c0769abea",
      "cell_type": "code",
      "source": "print(\"\\n--- Ergebnis ---\")\nprint(f\"Rauchfreie Tage: {days}\")\nprint(f\"Geld gespart: {money_saved} CHF\")\nprint(f\"CO2 gespart: {co2_saved} kg\")\nprint(f\"Wasser gespart: {water_saved} Liter\")\nprint(f\"Investment nach 10 Jahren bei 5% Zins: {investment_value} CHF\")",
      "metadata": {
        "trusted": true
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": "\n--- Ergebnis ---\nRauchfreie Tage: 9613\nGeld gespart: 12817333.33 CHF\nCO2 gespart: 13458.2 kg\nWasser gespart: 3556810.0 Liter\nInvestment nach 26 Jahren: 25981533.23 CHF\n"
        }
      ],
      "execution_count": 6
    },
    {
      "id": "affd8eae-48d9-4dff-9160-d017c0bc9892",
      "cell_type": "code",
      "source": "",
      "metadata": {
        "trusted": true
      },
      "outputs": [],
      "execution_count": null
    }
  ]
}