{"record":{"id":"84e422d082551d76","repo":"TheAlgorithms/Python","slug":"input-series-cannot-have-0-as-an-element","errorCode":null,"errorMessage":"Input series cannot have 0 as an element","messagePattern":"Input series cannot have 0 as an element","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"maths/series/harmonic.py","lineNumber":50,"sourceCode":"    Traceback (most recent call last):\n        ...\n    ValueError: Input series cannot have 0 as an element\n    >>> is_harmonic_series([1,2,0,6])\n    Traceback (most recent call last):\n        ...\n    ValueError: Input series cannot have 0 as an element\n    \"\"\"\n    if not isinstance(series, list):\n        raise ValueError(\"Input series is not valid, valid series - [1, 2/3, 2]\")\n    if len(series) == 0:\n        raise ValueError(\"Input list must be a non empty list\")\n    if len(series) == 1 and series[0] != 0:\n        return True\n    rec_series = []\n    series_len = len(series)\n    for i in range(series_len):\n        if series[i] == 0:\n            raise ValueError(\"Input series cannot have 0 as an element\")\n        rec_series.append(1 / series[i])\n    common_diff = rec_series[1] - rec_series[0]\n    for index in range(2, series_len):\n        if rec_series[index] - rec_series[index - 1] != common_diff:\n            return False\n    return True\n\n\ndef harmonic_mean(series: list) -> float:\n    \"\"\"\n    return the harmonic mean of series\n\n    >>> harmonic_mean([1, 4, 4])\n    2.0\n    >>> harmonic_mean([3, 6, 9, 12])\n    5.759999999999999\n    >>> harmonic_mean(4)\n    Traceback (most recent call last):","sourceCodeStart":32,"sourceCodeEnd":68,"githubUrl":"https://github.com/TheAlgorithms/Python/blob/f5988cc09713315817df6a7e327e258013a94440/maths/series/harmonic.py#L32-L68","documentation":"Raised by is_harmonic_series() in maths/series/harmonic.py when any element of the input list equals 0. Harmonic series require reciprocals (1/x), and 1/0 is undefined, so zero elements make the test impossible. Unlike a wrong ratio (which returns False), zero is treated as invalid input and raises.","triggerScenarios":"Calling is_harmonic_series([0]) or is_harmonic_series([1, 2, 0, 6]) — any list containing at least one 0. Note the [0] single-element case: the len==1 early-return only applies when series[0] != 0, so [0] still raises.","commonSituations":"Numerical data containing genuine zeros (sensor readings, counts); uninitialized arrays; check-and-skip logic upstream. If zeros are legitimate data, this function cannot be used as-is.","solutions":["Filter zeros before calling only if they are noise: is_harmonic_series([x for x in series if x != 0])","Validate for zeros first and handle them as a separate business case","If zeros are meaningful, compute the harmonic property yourself with explicit zero handling"],"exampleFix":"# before\nis_harmonic_series([1, 2, 0, 6])  # -> ValueError\n\n# after\nif 0 in series:\n    print('series contains 0; harmonic test not applicable')\nelse:\n    print(is_harmonic_series(series))","handlingStrategy":"validation","validationCode":"if any(x == 0 for x in series):\n    print('cannot test harmonic series containing 0')\nelse:\n    print(is_harmonic_series(series))","typeGuard":"def has_no_zero(series: list) -> bool:\n    return all(x != 0 for x in series)","tryCatchPattern":"try:\n    is_harmonic_series(series)\nexcept ValueError as e:\n    if '0 as an element' in str(e):\n        # zeros are invalid input for this test\n        result = False","preventionTips":["Treat zeros in data as a distinct business case before math calls","Remember [0] raises even though other single-element lists return True","Filter zeros only when they are noise, never silently when meaningful"],"tags":["python","math","division-by-zero","value-error"],"backgroundTag":null,"analyzedSha":"f5988cc09713315817df6a7e327e258013a94440","analyzedAt":"2026-08-14T17:30:07.041Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}