{"id":43642,"date":"2025-08-01T01:50:06","date_gmt":"2025-07-31T16:50:06","guid":{"rendered":"https:\/\/techgym.jp\/?p=43642"},"modified":"2025-08-01T01:50:08","modified_gmt":"2025-07-31T16:50:08","slug":"python-zerodivisionerror","status":"publish","type":"post","link":"https:\/\/techgym.jp\/column\/python-zerodivisionerror\/","title":{"rendered":"Python ZeroDivisionError\uff08\u30bc\u30ed\u9664\u7b97\u30a8\u30e9\u30fc\uff09\u306e\u539f\u56e0\u3068\u89e3\u6c7a\u6cd5\u30102025\u5e74\u7248\u3011\u6570\u5024\u8a08\u7b97\u5b89\u5168\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0"},"content":{"rendered":"\n<p>\u00a0<\/p>\n<p>Python\u958b\u767a\u3067\u6570\u5024\u8a08\u7b97\u3092\u884c\u3046\u969b\u306b\u906d\u9047\u3059\u308b\u300cZeroDivisionError\uff08\u30bc\u30ed\u9664\u7b97\u30a8\u30e9\u30fc\uff09\u300d\u306b\u3064\u3044\u3066\u3001\u539f\u56e0\u304b\u3089\u5b9f\u8df5\u7684\u306a\u89e3\u6c7a\u6cd5\u307e\u3067\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002\u5b89\u5168\u306a\u6570\u5024\u8a08\u7b97\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u6280\u8853\u3092\u8eab\u306b\u3064\u3051\u307e\u3057\u3087\u3046\u3002<\/p>\n<h2>ZeroDivisionError\u3068\u306f<\/h2>\n<p><strong>ZeroDivisionError<\/strong>\u306f\u3001\u6570\u5024\u3092\u30bc\u30ed\u3067\u5272\u308d\u3046\u3068\u3057\u305f\u969b\u306b\u767a\u751f\u3059\u308b\u30a8\u30e9\u30fc\u3067\u3059\u3002\u6570\u5b66\u7684\u306b\u30bc\u30ed\u9664\u7b97\u306f\u672a\u5b9a\u7fa9\u3067\u3042\u308b\u305f\u3081\u3001Python\u3067\u306f\u3053\u306e\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u3066\u7570\u5e38\u306a\u8a08\u7b97\u3092\u9632\u304e\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-python\"># ZeroDivisionError\u4f8b\uff1a\u57fa\u672c\u7684\u306a\u30bc\u30ed\u9664\u7b97\nresult = 10 \/ 0\n# ZeroDivisionError: division by zero\n<\/code><\/pre>\n<h2>ZeroDivisionError\u304c\u767a\u751f\u3059\u308b\u4e3b\u306a\u30d1\u30bf\u30fc\u30f3<\/h2>\n<h3>1. \u57fa\u672c\u7684\u306a\u9664\u7b97\u3067\u306e\u30bc\u30ed\u9664\u7b97<\/h3>\n<p>\u6700\u3082\u57fa\u672c\u7684\u306aZeroDivisionError\u306e\u539f\u56e0\u3067\u3059\u3002<\/p>\n<pre><code class=\"language-python\"># \u9593\u9055\u3044\uff1a\u76f4\u63a5\u30bc\u30ed\u3067\u9664\u7b97\nnumerator = 15\ndenominator = 0\nresult = numerator \/ denominator\n# ZeroDivisionError: division by zero\n\n# \u6b63\u89e3\uff1a\u4e8b\u524d\u306b\u30bc\u30ed\u30c1\u30a7\u30c3\u30af\nnumerator = 15\ndenominator = 0\n\nif denominator != 0:\n    result = numerator \/ denominator\n    print(f\"\u7d50\u679c: {result}\")\nelse:\n    print(\"\u30bc\u30ed\u3067\u5272\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\")\n<\/code><\/pre>\n<h3>2. \u6574\u6570\u9664\u7b97\u3067\u306e\u30bc\u30ed\u9664\u7b97<\/h3>\n<p>\u6574\u6570\u9664\u7b97\uff08\/\/\uff09\u3067\u3082\u540c\u69d8\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-python\"># \u9593\u9055\u3044\uff1a\u6574\u6570\u9664\u7b97\u3067\u306e\u30bc\u30ed\u9664\u7b97\nresult = 20 \/\/ 0\n# ZeroDivisionError: integer division or modulo by zero\n\n# \u6b63\u89e3\uff1a\u5b89\u5168\u306a\u6574\u6570\u9664\u7b97\ndef safe_integer_division(a, b):\n    if b == 0:\n        return None, \"\u30bc\u30ed\u3067\u5272\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\"\n    return a \/\/ b, None\n\nquotient, error = safe_integer_division(20, 4)  # (5, None)\nquotient, error = safe_integer_division(20, 0)  # (None, \"\u30bc\u30ed\u3067\u5272\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\")\n<\/code><\/pre>\n<h3>3. \u5270\u4f59\u6f14\u7b97\u3067\u306e\u30bc\u30ed\u9664\u7b97<\/h3>\n<p>\u4f59\u308a\u3092\u6c42\u3081\u308b\u6f14\u7b97\u5b50\uff08%\uff09\u3067\u3082\u30bc\u30ed\u9664\u7b97\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-python\"># \u9593\u9055\u3044\uff1a\u5270\u4f59\u6f14\u7b97\u3067\u306e\u30bc\u30ed\u9664\u7b97\nremainder = 17 % 0\n# ZeroDivisionError: integer division or modulo by zero\n\n# \u6b63\u89e3\uff1a\u5270\u4f59\u6f14\u7b97\u306e\u5b89\u5168\u306a\u5b9f\u884c\ndef safe_modulo(a, b):\n    try:\n        return a % b\n    except ZeroDivisionError:\n        return None\n\nprint(safe_modulo(17, 5))  # 2\nprint(safe_modulo(17, 0))  # None\n<\/code><\/pre>\n<h3>4. \u52d5\u7684\u306a\u8a08\u7b97\u3067\u306e\u30bc\u30ed\u9664\u7b97<\/h3>\n<p>\u30eb\u30fc\u30d7\u3084\u6761\u4ef6\u306b\u3088\u3063\u3066\u52d5\u7684\u306b\u8a08\u7b97\u3059\u308b\u969b\u306b\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-python\"># \u9593\u9055\u3044\uff1a\u52d5\u7684\u8a08\u7b97\u3067\u306e\u30bc\u30ed\u9664\u7b97\u30c1\u30a7\u30c3\u30af\u4e0d\u8db3\nnumbers = [10, 5, 0, 2]\nfor num in numbers:\n    result = 100 \/ num  # num=0\u306e\u6642\u306b\u30a8\u30e9\u30fc\n    print(f\"100 \/ {num} = {result}\")\n\n# \u6b63\u89e3\uff1a\u5404\u8a08\u7b97\u524d\u306b\u30c1\u30a7\u30c3\u30af\nnumbers = [10, 5, 0, 2]\nfor num in numbers:\n    if num != 0:\n        result = 100 \/ num\n        print(f\"100 \/ {num} = {result}\")\n    else:\n        print(f\"100 \/ {num} = \u8a08\u7b97\u4e0d\u53ef\uff08\u30bc\u30ed\u9664\u7b97\uff09\")\n<\/code><\/pre>\n<h3>5. \u7d71\u8a08\u8a08\u7b97\u3067\u306e\u30bc\u30ed\u9664\u7b97<\/h3>\n<p>\u5e73\u5747\u5024\u3084\u6bd4\u7387\u306e\u8a08\u7b97\u3067\u767a\u751f\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-python\"># \u9593\u9055\u3044\uff1a\u7a7a\u306e\u30ea\u30b9\u30c8\u3067\u5e73\u5747\u5024\u8a08\u7b97\ndef calculate_average(numbers):\n    return sum(numbers) \/ len(numbers)  # len(numbers)=0\u3067\u30a8\u30e9\u30fc\n\nempty_list = []\n# average = calculate_average(empty_list)  # ZeroDivisionError\n\n# \u6b63\u89e3\uff1a\u5b89\u5168\u306a\u5e73\u5747\u5024\u8a08\u7b97\ndef safe_calculate_average(numbers):\n    if not numbers:  # \u7a7a\u306e\u30ea\u30b9\u30c8\u3092\u30c1\u30a7\u30c3\u30af\n        return None\n    return sum(numbers) \/ len(numbers)\n\nprint(safe_calculate_average([1, 2, 3, 4, 5]))  # 3.0\nprint(safe_calculate_average([]))               # None\n<\/code><\/pre>\n<h3>6. \u5206\u6570\u8a08\u7b97\u3067\u306e\u30bc\u30ed\u9664\u7b97<\/h3>\n<p>\u5206\u6570\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u3063\u305f\u8a08\u7b97\u3067\u3082\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n<pre><code class=\"language-python\">from fractions import Fraction\n\n# \u9593\u9055\u3044\uff1a\u5206\u6bcd\u304c\u30bc\u30ed\u306e\u5206\u6570\u4f5c\u6210\n# fraction = Fraction(3, 0)  # ZeroDivisionError\n\n# \u6b63\u89e3\uff1a\u5206\u6bcd\u306e\u78ba\u8a8d\ndef safe_fraction(numerator, denominator):\n    try:\n        return Fraction(numerator, denominator)\n    except ZeroDivisionError:\n        return None\n\nprint(safe_fraction(3, 4))  # 3\/4\nprint(safe_fraction(3, 0))  # None\n<\/code><\/pre>\n<h2>ZeroDivisionError\u306e\u5bfe\u51e6\u6cd5<\/h2>\n<h3>1. \u4e8b\u524d\u6761\u4ef6\u30c1\u30a7\u30c3\u30af<\/h3>\n<pre><code class=\"language-python\">def safe_divide(a, b):\n    \"\"\"\u5b89\u5168\u306a\u9664\u7b97\u95a2\u6570\"\"\"\n    if b == 0:\n        raise ValueError(\"\u9664\u6570\u304c\u30bc\u30ed\u3067\u3059\")\n    return a \/ b\n\ndef safe_divide_with_default(a, b, default=float('inf')):\n    \"\"\"\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u4ed8\u304d\u306e\u5b89\u5168\u306a\u9664\u7b97\"\"\"\n    if b == 0:\n        return default\n    return a \/ b\n\n# \u4f7f\u7528\u4f8b\ntry:\n    result = safe_divide(10, 2)    # 5.0\n    print(result)\n    result = safe_divide(10, 0)    # ValueError\nexcept ValueError as e:\n    print(f\"\u8a08\u7b97\u30a8\u30e9\u30fc: {e}\")\n\nprint(safe_divide_with_default(10, 2))     # 5.0\nprint(safe_divide_with_default(10, 0))     # inf\nprint(safe_divide_with_default(10, 0, 0))  # 0\n<\/code><\/pre>\n<h3>2. try-except\u6587\u3067\u306e\u4f8b\u5916\u51e6\u7406<\/h3>\n<pre><code class=\"language-python\">def robust_calculation(expression):\n    \"\"\"\u5805\u7262\u306a\u8a08\u7b97\u51e6\u7406\"\"\"\n    try:\n        result = eval(expression)\n        return result, None\n    except ZeroDivisionError:\n        return None, \"\u30bc\u30ed\u9664\u7b97\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\"\n    except Exception as e:\n        return None, f\"\u8a08\u7b97\u30a8\u30e9\u30fc: {e}\"\n\n# \u4f7f\u7528\u4f8b\nexpressions = [\"10 \/ 2\", \"15 \/ 0\", \"20 \/\/ 4\", \"25 % 0\"]\nfor expr in expressions:\n    result, error = robust_calculation(expr)\n    if error:\n        print(f\"{expr}: {error}\")\n    else:\n        print(f\"{expr} = {result}\")\n<\/code><\/pre>\n<h3>3. \u7279\u6b8a\u5024\uff08\u7121\u9650\u5927\u30fbNaN\uff09\u306e\u6d3b\u7528<\/h3>\n<pre><code class=\"language-python\">import math\n\ndef mathematical_divide(a, b):\n    \"\"\"\u6570\u5b66\u7684\u306a\u9664\u7b97\uff08\u7121\u9650\u5927\u3084NaN\u3092\u8fd4\u3059\uff09\"\"\"\n    if b == 0:\n        if a &gt; 0:\n            return float('inf')      # \u6b63\u306e\u7121\u9650\u5927\n        elif a &lt; 0:\n            return float('-inf')     # \u8ca0\u306e\u7121\u9650\u5927\n        else:\n            return float('nan')      # \u975e\u6570\uff08Not a Number\uff09\n    return a \/ b\n\n# \u4f7f\u7528\u4f8b\nprint(mathematical_divide(10, 2))   # 5.0\nprint(mathematical_divide(10, 0))   # inf\nprint(mathematical_divide(-10, 0))  # -inf\nprint(mathematical_divide(0, 0))    # nan\n\n# \u7121\u9650\u5927\u30fbNaN\u306e\u5224\u5b9a\nresult = mathematical_divide(10, 0)\nif math.isinf(result):\n    print(\"\u7d50\u679c\u306f\u7121\u9650\u5927\u3067\u3059\")\nelif math.isnan(result):\n    print(\"\u7d50\u679c\u306f\u975e\u6570\u3067\u3059\")\nelse:\n    print(f\"\u7d50\u679c: {result}\")\n<\/code><\/pre>\n<h2>\u5b9f\u8df5\u7684\u306aZeroDivisionError\u5bfe\u7b56<\/h2>\n<h3>1. \u7d71\u8a08\u51e6\u7406\u30af\u30e9\u30b9<\/h3>\n<pre><code class=\"language-python\">class SafeStatistics:\n    \"\"\"\u30bc\u30ed\u9664\u7b97\u3092\u8003\u616e\u3057\u305f\u7d71\u8a08\u51e6\u7406\u30af\u30e9\u30b9\"\"\"\n    \n    @staticmethod\n    def safe_mean(numbers):\n        \"\"\"\u5b89\u5168\u306a\u5e73\u5747\u5024\u8a08\u7b97\"\"\"\n        if not numbers:\n            return None\n        return sum(numbers) \/ len(numbers)\n    \n    @staticmethod\n    def safe_variance(numbers):\n        \"\"\"\u5b89\u5168\u306a\u5206\u6563\u8a08\u7b97\"\"\"\n        if len(numbers) &lt; 2:\n            return None\n        \n        mean = SafeStatistics.safe_mean(numbers)\n        if mean is None:\n            return None\n        \n        squared_diffs = [(x - mean) ** 2 for x in numbers]\n        return sum(squared_diffs) \/ (len(numbers) - 1)\n    \n    @staticmethod\n    def safe_ratio(numerator, denominator, default=None):\n        \"\"\"\u5b89\u5168\u306a\u6bd4\u7387\u8a08\u7b97\"\"\"\n        if denominator == 0:\n            return default\n        return numerator \/ denominator\n    \n    @staticmethod\n    def safe_percentage(part, total, default=0):\n        \"\"\"\u5b89\u5168\u306a\u30d1\u30fc\u30bb\u30f3\u30c6\u30fc\u30b8\u8a08\u7b97\"\"\"\n        if total == 0:\n            return default\n        return (part \/ total) * 100\n\n# \u4f7f\u7528\u4f8b\ndata = [10, 20, 30, 40, 50]\nstats = SafeStatistics()\n\nprint(f\"\u5e73\u5747: {stats.safe_mean(data)}\")           # 30.0\nprint(f\"\u5206\u6563: {stats.safe_variance(data)}\")       # 250.0\nprint(f\"\u6bd4\u7387: {stats.safe_ratio(3, 4)}\")          # 0.75\nprint(f\"\u6bd4\u7387: {stats.safe_ratio(3, 0, 'N\/A')}\")   # N\/A\nprint(f\"\u30d1\u30fc\u30bb\u30f3\u30c8: {stats.safe_percentage(25, 100)}\")  # 25.0\nprint(f\"\u30d1\u30fc\u30bb\u30f3\u30c8: {stats.safe_percentage(25, 0)}\")    # 0\n<\/code><\/pre>\n<h3>2. \u8ca1\u52d9\u8a08\u7b97\u3067\u306e\u5b89\u5168\u306a\u51e6\u7406<\/h3>\n<pre><code class=\"language-python\">class FinancialCalculator:\n    \"\"\"\u8ca1\u52d9\u8a08\u7b97\u3067\u306e\u5b89\u5168\u306a\u6570\u5024\u51e6\u7406\"\"\"\n    \n    @staticmethod\n    def calculate_roi(profit, investment):\n        \"\"\"\u6295\u8cc7\u53ce\u76ca\u7387\u306e\u8a08\u7b97\"\"\"\n        if investment == 0:\n            return None, \"\u6295\u8cc7\u984d\u304c\u30bc\u30ed\u306e\u305f\u3081\u8a08\u7b97\u3067\u304d\u307e\u305b\u3093\"\n        \n        roi = (profit \/ investment) * 100\n        return roi, None\n    \n    @staticmethod\n    def calculate_growth_rate(initial, final, periods):\n        \"\"\"\u6210\u9577\u7387\u306e\u8a08\u7b97\"\"\"\n        if initial == 0:\n            return None, \"\u521d\u671f\u5024\u304c\u30bc\u30ed\u306e\u305f\u3081\u8a08\u7b97\u3067\u304d\u307e\u305b\u3093\"\n        if periods == 0:\n            return None, \"\u671f\u9593\u304c\u30bc\u30ed\u306e\u305f\u3081\u8a08\u7b97\u3067\u304d\u307e\u305b\u3093\"\n        \n        growth_rate = ((final \/ initial) ** (1 \/ periods) - 1) * 100\n        return growth_rate, None\n    \n    @staticmethod\n    def calculate_ratio(value1, value2):\n        \"\"\"\u6bd4\u7387\u306e\u8a08\u7b97\"\"\"\n        if value2 == 0:\n            if value1 == 0:\n                return 1.0, None  # 0\/0 \u306f 1 \u3068\u3059\u308b\n            else:\n                return float('inf'), \"\u5206\u6bcd\u304c\u30bc\u30ed\u306e\u305f\u3081\u7121\u9650\u5927\"\n        \n        return value1 \/ value2, None\n\n# \u4f7f\u7528\u4f8b\ncalc = FinancialCalculator()\n\n# ROI\u8a08\u7b97\nroi, error = calc.calculate_roi(1000, 5000)\nif error:\n    print(f\"ROI\u30a8\u30e9\u30fc: {error}\")\nelse:\n    print(f\"ROI: {roi:.2f}%\")\n\n# \u6210\u9577\u7387\u8a08\u7b97\ngrowth, error = calc.calculate_growth_rate(100, 150, 2)\nif error:\n    print(f\"\u6210\u9577\u7387\u30a8\u30e9\u30fc: {error}\")\nelse:\n    print(f\"\u5e74\u9593\u6210\u9577\u7387: {growth:.2f}%\")\n<\/code><\/pre>\n<h3>3. \u30c7\u30fc\u30bf\u5206\u6790\u3067\u306e\u5b89\u5168\u306a\u51e6\u7406<\/h3>\n<pre><code class=\"language-python\">class DataAnalyzer:\n    \"\"\"\u30c7\u30fc\u30bf\u5206\u6790\u3067\u306e\u5b89\u5168\u306a\u6570\u5024\u51e6\u7406\"\"\"\n    \n    def __init__(self, data):\n        self.data = data\n    \n    def calculate_metrics(self):\n        \"\"\"\u5404\u7a2e\u6307\u6a19\u306e\u5b89\u5168\u306a\u8a08\u7b97\"\"\"\n        if not self.data:\n            return {\"error\": \"\u30c7\u30fc\u30bf\u304c\u7a7a\u3067\u3059\"}\n        \n        total = sum(self.data)\n        count = len(self.data)\n        \n        metrics = {\n            \"count\": count,\n            \"sum\": total,\n            \"mean\": total \/ count if count &gt; 0 else None,\n            \"min\": min(self.data),\n            \"max\": max(self.data)\n        }\n        \n        # \u7bc4\u56f2\u306e\u8a08\u7b97\n        range_value = metrics[\"max\"] - metrics[\"min\"]\n        metrics[\"range\"] = range_value\n        \n        # \u6b63\u898f\u5316\u3055\u308c\u305f\u5024\uff08\u6700\u5927\u5024\u3067\u9664\u7b97\uff09\n        if metrics[\"max\"] != 0:\n            metrics[\"normalized\"] = [x \/ metrics[\"max\"] for x in self.data]\n        else:\n            metrics[\"normalized\"] = [0] * count\n        \n        return metrics\n    \n    def compare_datasets(self, other_data):\n        \"\"\"\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u9593\u306e\u6bd4\u8f03\"\"\"\n        self_metrics = self.calculate_metrics()\n        other_analyzer = DataAnalyzer(other_data)\n        other_metrics = other_analyzer.calculate_metrics()\n        \n        if \"error\" in self_metrics or \"error\" in other_metrics:\n            return {\"error\": \"\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u4e00\u65b9\u307e\u305f\u306f\u4e21\u65b9\u304c\u7121\u52b9\u3067\u3059\"}\n        \n        # \u6bd4\u7387\u306e\u8a08\u7b97\n        comparisons = {}\n        for key in [\"mean\", \"sum\", \"count\"]:\n            if other_metrics[key] != 0:\n                comparisons[f\"{key}_ratio\"] = self_metrics[key] \/ other_metrics[key]\n            else:\n                comparisons[f\"{key}_ratio\"] = float('inf') if self_metrics[key] &gt; 0 else 0\n        \n        return comparisons\n\n# \u4f7f\u7528\u4f8b\ndata1 = [10, 20, 30, 40, 50]\ndata2 = [5, 15, 25, 35, 45]\nempty_data = []\n\nanalyzer1 = DataAnalyzer(data1)\nanalyzer2 = DataAnalyzer(empty_data)\n\nprint(\"\u30c7\u30fc\u30bf1\u306e\u6307\u6a19:\")\nprint(analyzer1.calculate_metrics())\n\nprint(\"\\n\u7a7a\u30c7\u30fc\u30bf\u306e\u6307\u6a19:\")\nprint(analyzer2.calculate_metrics())\n\nprint(\"\\n\u30c7\u30fc\u30bf\u6bd4\u8f03:\")\ncomparison = analyzer1.compare_datasets(data2)\nprint(comparison)\n<\/code><\/pre>\n<h2>ZeroDivisionError\u306e\u4e88\u9632\u7b56<\/h2>\n<h3>1. \u5165\u529b\u5024\u691c\u8a3c<\/h3>\n<pre><code class=\"language-python\">def validate_division_inputs(numerator, denominator):\n    \"\"\"\u9664\u7b97\u306e\u5165\u529b\u5024\u3092\u691c\u8a3c\"\"\"\n    errors = []\n    \n    # \u6570\u5024\u578b\u30c1\u30a7\u30c3\u30af\n    if not isinstance(numerator, (int, float)):\n        errors.append(\"\u5206\u5b50\u306f\u6570\u5024\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\")\n    \n    if not isinstance(denominator, (int, float)):\n        errors.append(\"\u5206\u6bcd\u306f\u6570\u5024\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\")\n    \n    # \u30bc\u30ed\u9664\u7b97\u30c1\u30a7\u30c3\u30af\n    if isinstance(denominator, (int, float)) and denominator == 0:\n        errors.append(\"\u5206\u6bcd\u306f\u30bc\u30ed\u4ee5\u5916\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\")\n    \n    return errors\n\ndef validated_divide(numerator, denominator):\n    \"\"\"\u691c\u8a3c\u4ed8\u304d\u306e\u9664\u7b97\"\"\"\n    errors = validate_division_inputs(numerator, denominator)\n    \n    if errors:\n        raise ValueError(f\"\u5165\u529b\u30a8\u30e9\u30fc: {', '.join(errors)}\")\n    \n    return numerator \/ denominator\n\n# \u4f7f\u7528\u4f8b\ntry:\n    result = validated_divide(10, 2)\n    print(f\"\u7d50\u679c: {result}\")\n    \n    result = validated_divide(10, 0)  # ValueError\nexcept ValueError as e:\n    print(f\"\u30a8\u30e9\u30fc: {e}\")\n<\/code><\/pre>\n<h3>2. \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u6226\u7565<\/h3>\n<pre><code class=\"language-python\">class DivisionStrategy:\n    \"\"\"\u9664\u7b97\u6226\u7565\u306e\u5b9a\u7fa9\"\"\"\n    \n    RETURN_NONE = \"none\"\n    RETURN_ZERO = \"zero\"\n    RETURN_INF = \"inf\"\n    RAISE_ERROR = \"error\"\n\ndef configurable_divide(a, b, strategy=DivisionStrategy.RETURN_NONE):\n    \"\"\"\u8a2d\u5b9a\u53ef\u80fd\u306a\u9664\u7b97\u6226\u7565\"\"\"\n    if b == 0:\n        if strategy == DivisionStrategy.RETURN_NONE:\n            return None\n        elif strategy == DivisionStrategy.RETURN_ZERO:\n            return 0\n        elif strategy == DivisionStrategy.RETURN_INF:\n            return float('inf') if a &gt;= 0 else float('-inf')\n        elif strategy == DivisionStrategy.RAISE_ERROR:\n            raise ZeroDivisionError(\"division by zero\")\n        else:\n            raise ValueError(f\"\u672a\u77e5\u306e\u6226\u7565: {strategy}\")\n    \n    return a \/ b\n\n# \u4f7f\u7528\u4f8b\nprint(configurable_divide(10, 2))                                    # 5.0\nprint(configurable_divide(10, 0, DivisionStrategy.RETURN_NONE))      # None\nprint(configurable_divide(10, 0, DivisionStrategy.RETURN_ZERO))      # 0\nprint(configurable_divide(10, 0, DivisionStrategy.RETURN_INF))       # inf\n<\/code><\/pre>\n<h2>\u307e\u3068\u3081<\/h2>\n<p>ZeroDivisionError\u306f\u6570\u5024\u8a08\u7b97\u3067\u306e\u57fa\u672c\u7684\u306a\u30a8\u30e9\u30fc\u3067\u3059\u304c\u3001\u9069\u5207\u306a\u5bfe\u7b56\u3067\u52b9\u679c\u7684\u306b\u9632\u3052\u307e\u3059\u3002<\/p>\n<p><strong>\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8:<\/strong><\/p>\n<ul>\n<li><strong>\u4e8b\u524d\u30c1\u30a7\u30c3\u30af<\/strong>\uff1a\u9664\u6570\u304c\u30bc\u30ed\u3067\u306a\u3044\u3053\u3068\u3092\u78ba\u8a8d<\/li>\n<li><strong>try-except<\/strong>\uff1a\u4f8b\u5916\u51e6\u7406\u3067\u306e\u9069\u5207\u306a\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/li>\n<li><strong>\u30c7\u30d5\u30a9\u30eb\u30c8\u5024<\/strong>\uff1a\u30bc\u30ed\u9664\u7b97\u6642\u306e\u4ee3\u66ff\u5024\u3092\u5b9a\u7fa9<\/li>\n<li><strong>\u7279\u6b8a\u5024\u6d3b\u7528<\/strong>\uff1a\u7121\u9650\u5927\u3084NaN\u3092\u9069\u5207\u306b\u4f7f\u7528<\/li>\n<li><strong>\u5165\u529b\u5024\u691c\u8a3c<\/strong>\uff1a\u8a08\u7b97\u524d\u306e\u30c7\u30fc\u30bf\u59a5\u5f53\u6027\u78ba\u8a8d<\/li>\n<li><strong>\u6226\u7565\u30d1\u30bf\u30fc\u30f3<\/strong>\uff1a\u72b6\u6cc1\u306b\u5fdc\u3058\u305f\u51e6\u7406\u65b9\u6cd5\u306e\u9078\u629e<\/li>\n<\/ul>\n<p>ZeroDivisionError\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306b\u5bfe\u51e6\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u5805\u7262\u3067\u4fe1\u983c\u6027\u306e\u9ad8\u3044\u6570\u5024\u8a08\u7b97\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u7d71\u8a08\u51e6\u7406\u3084\u8ca1\u52d9\u8a08\u7b97\u3067\u306f\u3001\u3053\u306e\u30a8\u30e9\u30fc\u3078\u306e\u5bfe\u7b56\u304c\u54c1\u8cea\u5411\u4e0a\u306e\u9375\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u25a0\u30d7\u30ed\u30f3\u30d7\u30c8\u3060\u3051\u3067\u30aa\u30ea\u30b8\u30ca\u30eb\u30a2\u30d7\u30ea\u3092\u958b\u767a\u30fb\u516c\u958b\u3057\u3066\u307f\u305f\uff01\uff01<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"zIlanBfmtW\"><a href=\"https:\/\/techgym.jp\/column\/ori-app\/\">\u30d7\u30ed\u30f3\u30d7\u30c8\u3060\u3051\u3067\u30aa\u30ea\u30b8\u30ca\u30eb\u30a2\u30d7\u30ea\u3092\u958b\u767a\u30fb\u516c\u958b\u3057\u3066\u307f\u305f\uff01\uff01<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;\u30d7\u30ed\u30f3\u30d7\u30c8\u3060\u3051\u3067\u30aa\u30ea\u30b8\u30ca\u30eb\u30a2\u30d7\u30ea\u3092\u958b\u767a\u30fb\u516c\u958b\u3057\u3066\u307f\u305f\uff01\uff01&#8221; &#8212; \u3010\u30c6\u30c3\u30af\u30b8\u30e0\u3011\u683c\u5b89\u30fb\u5bfe\u9762\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\" src=\"https:\/\/techgym.jp\/column\/ori-app\/embed\/#?secret=ssoXyTLED3#?secret=zIlanBfmtW\" data-secret=\"zIlanBfmtW\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>\u25a0AI\u6642\u4ee3\u306e\u7b2c\u4e00\u6b69\uff01\u300cAI\u99c6\u52d5\u958b\u767a\u30b3\u30fc\u30b9\u300d\u306f\u3058\u3081\u307e\u3057\u305f\uff01<\/p>\n\n\n\n<p>\u30c6\u30c3\u30af\u30b8\u30e0\u6771\u4eac\u672c\u6821\u3067\u5148\u884c\u958b\u59cb\u3002<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"C56MZkmOYB\"><a href=\"https:\/\/techgym.jp\/about\/ai-driven-development\/\">AI\u99c6\u52d5\u958b\u767a\/\u751f\u6210AI\u30a8\u30f3\u30b8\u30cb\u30a2\u30b3\u30fc\u30b9\uff08\u521d\u5fc3\u8005\u5411\u3051\uff09<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;AI\u99c6\u52d5\u958b\u767a\/\u751f\u6210AI\u30a8\u30f3\u30b8\u30cb\u30a2\u30b3\u30fc\u30b9\uff08\u521d\u5fc3\u8005\u5411\u3051\uff09&#8221; &#8212; \u3010\u30c6\u30c3\u30af\u30b8\u30e0\u3011\u683c\u5b89\u30fb\u5bfe\u9762\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\" src=\"https:\/\/techgym.jp\/about\/ai-driven-development\/embed\/#?secret=8HIyC06O3c#?secret=C56MZkmOYB\" data-secret=\"C56MZkmOYB\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>\u25a0\u30c6\u30c3\u30af\u30b8\u30e0\u6771\u4eac\u672c\u6821<\/p>\n\n\n\n<p>\u300c\u6b66\u7530\u587e\u300d\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u7248\u3068\u3044\u3048\u3070\u300c\u30c6\u30c3\u30af\u30b8\u30e0\u300d\u3002<br>\u8b1b\u7fa9\u52d5\u753b\u306a\u3057\u3001\u6559\u79d1\u66f8\u306a\u3057\u3002\u300c\u9032\u6357\u7ba1\u7406\u3068\u30b3\u30fc\u30c1\u30f3\u30b0\u300d\u3067\u52b9\u7387\u5b66\u7fd2\u3002<br>\u3088\u308a\u65e9\u304f\u3001\u3088\u308a\u5b89\u304f\u3001\u3057\u304b\u3082\u5bfe\u9762\u578b\u306e\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"wEV6anBfRm\"><a href=\"https:\/\/techgym.jp\/tokyo\/tokyo_honko\/\">\u30c6\u30c3\u30af\u30b8\u30e0\u6771\u4eac\u672c\u6821<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;\u30c6\u30c3\u30af\u30b8\u30e0\u6771\u4eac\u672c\u6821&#8221; &#8212; \u3010\u30c6\u30c3\u30af\u30b8\u30e0\u3011\u683c\u5b89\u30fb\u5bfe\u9762\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\" src=\"https:\/\/techgym.jp\/tokyo\/tokyo_honko\/embed\/#?secret=XiP9TZIohe#?secret=wEV6anBfRm\" data-secret=\"wEV6anBfRm\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>\uff1c\u77ed\u671f\u8b1b\u7fd2\uff1e5\u65e5\u30675\u4e07\u5186\u306e\u300cPython\u30df\u30cb\u30ad\u30e3\u30f3\u30d7\u300d\u958b\u50ac\u4e2d\u3002<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"uwKNZinWeR\"><a href=\"https:\/\/techgym.jp\/event\/nagatacho_camp\/\">\u72ec\u5b66\u3082\u30aa\u30f3\u30e9\u30a4\u30f3\u3082\u7121\u7406\u3060\u304b\u3089\u3001\u6709\u7d66\u3068\u3063\u3066\u300cPython\u30df\u30cb\u30ad\u30e3\u30f3\u30d7\u300d\u3078\u30105\u65e5\u9593\u30675\u4e07\u5186\u3011<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;\u72ec\u5b66\u3082\u30aa\u30f3\u30e9\u30a4\u30f3\u3082\u7121\u7406\u3060\u304b\u3089\u3001\u6709\u7d66\u3068\u3063\u3066\u300cPython\u30df\u30cb\u30ad\u30e3\u30f3\u30d7\u300d\u3078\u30105\u65e5\u9593\u30675\u4e07\u5186\u3011&#8221; &#8212; \u3010\u30c6\u30c3\u30af\u30b8\u30e0\u3011\u683c\u5b89\u30fb\u5bfe\u9762\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\" src=\"https:\/\/techgym.jp\/event\/nagatacho_camp\/embed\/#?secret=MchqvhdOxf#?secret=uwKNZinWeR\" data-secret=\"uwKNZinWeR\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>\uff1c\u67081\u958b\u50ac\uff1e\u653e\u9001\u4f5c\u5bb6\u306b\u3088\u308b\u6620\u50cf\u30c7\u30a3\u30ec\u30af\u30bf\u30fc\u990a\u6210\u8b1b\u5ea7<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"aiOkYjv6iR\"><a href=\"https:\/\/techgym.jp\/event\/video_director\/\">\u73fe\u5f79\u653e\u9001\u4f5c\u5bb6\u304c\u6559\u3048\u308b\u52d5\u753b\u8b1b\u5ea7\uff01\u300e\uff24\uff2f\uff27\uff21\u300f<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;\u73fe\u5f79\u653e\u9001\u4f5c\u5bb6\u304c\u6559\u3048\u308b\u52d5\u753b\u8b1b\u5ea7\uff01\u300e\uff24\uff2f\uff27\uff21\u300f&#8221; &#8212; \u3010\u30c6\u30c3\u30af\u30b8\u30e0\u3011\u683c\u5b89\u30fb\u5bfe\u9762\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\" src=\"https:\/\/techgym.jp\/event\/video_director\/embed\/#?secret=HXSu5IckU7#?secret=aiOkYjv6iR\" data-secret=\"aiOkYjv6iR\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>\uff1c\u30aa\u30f3\u30e9\u30a4\u30f3\u7121\u6599\uff1e\u30bc\u30ed\u304b\u3089\u59cb\u3081\u308bPython\u7206\u901f\u8b1b\u5ea7<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"AChvLBfa7o\"><a href=\"https:\/\/techgym.jp\/tokyo_python\/\">\u30bc\u30ed\u304b\u3089\u59cb\u3081\u308bPython\u7206\u901f\u8b1b\u5ea7\uff08\u7406\u7cfb\u30fb\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u521d\u5fc3\u8005\u5411\u3051\uff09<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;\u30bc\u30ed\u304b\u3089\u59cb\u3081\u308bPython\u7206\u901f\u8b1b\u5ea7\uff08\u7406\u7cfb\u30fb\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u521d\u5fc3\u8005\u5411\u3051\uff09&#8221; &#8212; \u3010\u30c6\u30c3\u30af\u30b8\u30e0\u3011\u683c\u5b89\u30fb\u5bfe\u9762\u578b\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u30b9\u30af\u30fc\u30eb\" src=\"https:\/\/techgym.jp\/tokyo_python\/embed\/#?secret=AsZH8SVrvY#?secret=AChvLBfa7o\" data-secret=\"AChvLBfa7o\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0 Python\u958b\u767a\u3067\u6570\u5024\u8a08\u7b97\u3092\u884c\u3046\u969b\u306b\u906d\u9047\u3059\u308b\u300cZeroDivisionError\uff08\u30bc\u30ed\u9664\u7b97\u30a8\u30e9\u30fc\uff09\u300d\u306b\u3064\u3044\u3066\u3001\u539f\u56e0\u304b\u3089\u5b9f\u8df5\u7684\u306a\u89e3\u6c7a\u6cd5\u307e\u3067\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002\u5b89\u5168\u306a\u6570\u5024\u8a08\u7b97\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u6280\u8853\u3092\u8eab\u306b\u3064\u3051\u307e\u3057\u3087\u3046\u3002 Zer [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":42501,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-43642","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-column"],"views":175,"jetpack_featured_media_url":"\/wp-content\/uploads\/2025\/07\/f3403acf5c65aedec0dba821c4c26404.png","jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/posts\/43642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/comments?post=43642"}],"version-history":[{"count":0,"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/posts\/43642\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/media\/42501"}],"wp:attachment":[{"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/media?parent=43642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/categories?post=43642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techgym.jp\/wp-json\/wp\/v2\/tags?post=43642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}