TheAlgorithms/Python · error · ValueError

Conductivity cannot be negative

Error message

Conductivity cannot be negative

What it means

Thrown by electric_conductivity() when conductivity < 0 while exactly one argument is 0. Electrical conductivity sigma is a non-negative material property (S/m); a negative value is non-physical and is rejected before the sigma = n*e*mu relation is applied.

Source

Thrown at electronics/electric_conductivity.py:48

        ...
    ValueError: Electron concentration cannot be negative
    >>> electric_conductivity(conductivity=50, electron_conc=0, mobility=-10)
    Traceback (most recent call last):
        ...
    ValueError: mobility cannot be negative
    >>> electric_conductivity(conductivity=50, electron_conc=0, mobility=0)
    Traceback (most recent call last):
        ...
    ValueError: You cannot supply more or less than 2 values
    >>> electric_conductivity(conductivity=50, electron_conc=200, mobility=300)
    Traceback (most recent call last):
        ...
    ValueError: You cannot supply more or less than 2 values
    """
    if (conductivity, electron_conc, mobility).count(0) != 1:
        raise ValueError("You cannot supply more or less than 2 values")
    elif conductivity < 0:
        raise ValueError("Conductivity cannot be negative")
    elif electron_conc < 0:
        raise ValueError("Electron concentration cannot be negative")
    elif mobility < 0:
        raise ValueError("mobility cannot be negative")
    elif conductivity == 0:
        return (
            "conductivity",
            mobility * electron_conc * ELECTRON_CHARGE,
        )
    elif electron_conc == 0:
        return (
            "electron_conc",
            conductivity / (mobility * ELECTRON_CHARGE),
        )
    else:
        return (
            "mobility",
            conductivity / (electron_conc * ELECTRON_CHARGE),

View on GitHub (pinned to f5988cc097)

Solutions

  1. Pass a non-negative conductivity (typical metals: ~1e7 S/m; silicon: ~1e-4 to 1e3 S/m depending on doping).
  2. Validate measurement data at ingestion and reject negatives before they reach the library.
  3. If conductivity is the unknown you want computed, pass 0 for it instead of a negative placeholder.

Example fix

# before
electric_conductivity(conductivity=-50, electron_conc=200, mobility=0)

# after
electric_conductivity(conductivity=50, electron_conc=200, mobility=0)
Defensive patterns

Strategy: validation

Validate before calling

if conductivity < 0:
    raise ValueError("conductivity must be >= 0")
name, value = electric_conductivity(conductivity, electron_conc, mobility)

Prevention

When it happens

Trigger: electric_conductivity(conductivity=-50, electron_conc=200, mobility=0) — valid zero-count but negative conductivity.

Common situations: Instrument noise around zero on a four-point-probe measurement; sign flips when deriving conductivity as 1/resistivity with inverted operands; spreadsheet import artifacts.

Related errors


AI-assisted analysis of TheAlgorithms/Python@f5988cc097 (2026-08-14). Data as JSON: /api/errors/ca0c0fdff924bafd. Report an issue: GitHub.