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
- Pass a non-negative conductivity (typical metals: ~1e7 S/m; silicon: ~1e-4 to 1e3 S/m depending on doping).
- Validate measurement data at ingestion and reject negatives before they reach the library.
- 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
- Compute conductivity as positive 1/resistivity.
- Range-check measured conductivity against material tables.
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
- Electron concentration cannot be negative in a semiconductor
- Hole concentration cannot be negative in a semiconductor
- Intrinsic concentration cannot be negative in a semiconducto
- Electron concentration cannot be negative
- mobility cannot be negative
AI-assisted analysis of TheAlgorithms/Python@f5988cc097 (2026-08-14).
Data as JSON: /api/errors/ca0c0fdff924bafd.
Report an issue: GitHub.