如何用Python计算溶液pH值?代码结果异常问题排查
问题
已知溶液中H⁺浓度为0.0000001,需通过公式pH = -log(H⁺)计算pH值。尝试用以下Python代码实现(取H数组最后一个元素的实部计算):
x = H[-1].real print(x) pH = -math.log(x) print(pH)
但计算结果不正确,请问哪里出错了?
解答
- 核心问题是Python的
math.log()默认是自然对数(ln),而pH计算要求的是以10为底的对数(log₁₀),用错对数类型导致结果偏差。 - 修正方案有两种:
- 直接使用专门的以10为底的对数函数
math.log10():import math x = H[-1].real pH = -math.log10(x) print(pH) # 输入0.0000001时会输出正确结果7 - 用换底公式通过自然对数转换:
import math x = H[-1].real pH = -math.log(x) / math.log(10) print(pH)
- 直接使用专门的以10为底的对数函数
- 验证:0.0000001等于10⁻⁷,log₁₀(10⁻⁷) = -7,取负后就是7,完全符合pH的计算逻辑。
内容的提问来源于stack exchange,提问作者thal
相关产品推荐
相关产品推荐

