{"record":{"id":"e257959db7f2cb68","repo":"TheAlgorithms/Python","slug":"mobility-cannot-be-negative","errorCode":null,"errorMessage":"mobility cannot be negative","messagePattern":"mobility cannot be negative","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"electronics/electric_conductivity.py","lineNumber":52,"sourceCode":"        ...\n    ValueError: mobility cannot be negative\n    >>> electric_conductivity(conductivity=50, electron_conc=0, mobility=0)\n    Traceback (most recent call last):\n        ...\n    ValueError: You cannot supply more or less than 2 values\n    >>> electric_conductivity(conductivity=50, electron_conc=200, mobility=300)\n    Traceback (most recent call last):\n        ...\n    ValueError: You cannot supply more or less than 2 values\n    \"\"\"\n    if (conductivity, electron_conc, mobility).count(0) != 1:\n        raise ValueError(\"You cannot supply more or less than 2 values\")\n    elif conductivity < 0:\n        raise ValueError(\"Conductivity cannot be negative\")\n    elif electron_conc < 0:\n        raise ValueError(\"Electron concentration cannot be negative\")\n    elif mobility < 0:\n        raise ValueError(\"mobility cannot be negative\")\n    elif conductivity == 0:\n        return (\n            \"conductivity\",\n            mobility * electron_conc * ELECTRON_CHARGE,\n        )\n    elif electron_conc == 0:\n        return (\n            \"electron_conc\",\n            conductivity / (mobility * ELECTRON_CHARGE),\n        )\n    else:\n        return (\n            \"mobility\",\n            conductivity / (electron_conc * ELECTRON_CHARGE),\n        )\n\n\nif __name__ == \"__main__\":","sourceCodeStart":34,"sourceCodeEnd":70,"githubUrl":"https://github.com/TheAlgorithms/Python/blob/f5988cc09713315817df6a7e327e258013a94440/electronics/electric_conductivity.py#L34-L70","documentation":"Thrown by electric_conductivity() when mobility < 0 while exactly one argument is 0. Carrier mobility mu (m^2/V*s) is non-negative by definition; a negative value would invert the sigma = n*e*mu relation, so it is rejected before the solver branches run.","triggerScenarios":"electric_conductivity(conductivity=50, electron_conc=0, mobility=-300) — valid zero-count but negative mobility.","commonSituations":"Typo'd minus signs in hand-entered material parameters; Hall-effect derivations producing signed 'effective' mobilities; unit tables copied with negative conventions.","solutions":["Pass a positive mobility (electrons in Si at room temperature: ~0.135 m^2/V*s).","If mobility is the unknown, pass 0 for it and supply conductivity and electron_conc.","Sanity-check material parameter tables once at load time."],"exampleFix":"# before\nelectric_conductivity(conductivity=50, electron_conc=1e21, mobility=-0.135)\n\n# after\nelectric_conductivity(conductivity=50, electron_conc=1e21, mobility=0.135)","handlingStrategy":"validation","validationCode":"if mobility < 0:\n    raise ValueError(\"mobility must be >= 0\")\nname, value = electric_conductivity(conductivity, electron_conc, mobility)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Sanity-check material tables (e.g. mu_e in Si ~ 0.135 m^2/V*s) at load time.","Use 0 to request solving for mobility, never a negative placeholder."],"tags":["electronics","semiconductor","physics","validation","sign-error"],"backgroundTag":null,"analyzedSha":"f5988cc09713315817df6a7e327e258013a94440","analyzedAt":"2026-08-14T17:30:07.041Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}