化学方程式
配平/常见方程检索
关于本工具
了解工具定位 · 使用场景 · 对比优势
使用场景
作业自查配平
中学生完成化学作业时,常因复杂反应(如氧化还原、有机燃烧)的配平卡住。本工具输入反应物和生成物,自动给出最简整数系数,并显示原子守恒校验结果。学生可快速核对作业答案,省去手动试数的时间,把精力聚焦在反应原理的理解上。
实验方案准备
化学竞赛或大学实验课前,学生需要提前确认特定反应(如高锰酸钾与草酸)的配平系数,以避免试剂用量错误导致实验失败。本工具支持检索常见方程,直接获取标准配平结果,帮助实验者快速准备试剂比例清单,提高实验成功率。
方程检索查证
教师或教辅编辑在编写习题时,需要确认某个非常见反应(如铝热反应、氨催化氧化)的准确产物和系数。本工具内置常见方程库,输入反应物关键词即可检索到标准方程,避免因记忆偏差或教材版本不同导致的配平错误,保证教学内容的准确性。
在线教学演示
网课或录播课中,教师需要快速展示多个反应的配平过程,但手动板书效率低且易出错。本工具纯前端运行,输入即出结果,教师可将其作为辅助演示工具,在讲解时实时生成配平方程,配合原子守恒说明,让学生直观看到系数调整的逻辑。
对比矩阵本工具 vs 竞品 vs 传统方法
| 维度 | 本工具 | 竞品 A (ChemicalAid) | 传统方法 |
|---|---|---|---|
| 数据隐私 | 纯浏览器,零上传 | 上传到服务器 | 依赖工作人员 |
| 处理速度 | 1 秒内 | 3-5 秒 | 数小时 |
| 离线可用 | 支持 | 不支持 | 支持 |
| 方程检索 | 内置常见方程库 | 仅配平,无检索 | 依赖手册或记忆 |
| 收费模式 | 免费 | 免费,有广告 | 免费(人力成本高) |
| 注册要求 | 无需注册 | 无需注册 | 无需注册 |
| 输入方式 | 文本输入 | 文本输入 | 手写或计算器 |
| 展示结果 | 配平系数 + 检索结果 | 仅配平系数 | 手写结果 |
使用指南
上手步骤 · 输入输出 · 避坑提示
输入输出示例7 个典型场景,覆盖常规、边界与易错
| 输入 | 输出 | 说明 |
|---|---|---|
| H2 + O2 = H2O | 2H₂ + O₂ → 2H₂O | 典型场景:最常见的化合反应配平 |
| Fe + O2 = Fe2O3 | 4Fe + 3O₂ → 2Fe₂O₃ | 典型场景:金属氧化反应的配平 |
| C6H12O6 + O2 = CO2 + H2O | C₆H₁₂O₆ + 6O₂ → 6CO₂ + 6H₂O | 典型场景:有机物燃烧配平(葡萄糖) |
| H2O = H2 + O2 | 2H₂O → 2H₂ + O₂ | 边界 case:分解反应,左侧仅一种反应物 |
| Cu + HNO3 = Cu(NO3)2 + NO + H2O | 3Cu + 8HNO₃ → 3Cu(NO₃)₂ + 2NO + 4H₂O | 边界 case:含多个产物的氧化还原反应 |
| Na + H2O = NaOH + H2 | 2Na + 2H₂O → 2NaOH + H₂ | 易错 case:新手常忘记配平氢原子 |
| CaCO3 + HCl = CaCl2 + CO2 + H2O | CaCO₃ + 2HCl → CaCl₂ + CO₂ + H₂O | 易错 case:碳酸盐与酸反应,易漏配 HCl 系数 |
常见错误对照8 个常踩的坑 · 错误 → 修复
1. 大小写混用元素符号
h2 + o2 → h2oH2 + O2 → H2O元素符号首字母大写、后续字母小写是化学命名规则;工具按大小写区分元素,'h' 会被识别为未知符号
2. 用等号代替箭头
Fe + O2 = Fe2O3Fe + O2 → Fe2O3化学方程式使用箭头(→)表示反应方向,等号通常用于数学等式;工具解析器依赖箭头符号识别反应式
3. 系数和下标混淆
2H2O2 → 2H2O + O22H2O2 → 2H2O + O2正确写法中数字 2 在分子前是系数,在元素后是下标;工具自动处理系数,用户无需手动调整下标
4. 忽略气体/沉淀符号
CaCO3 + HCl → CaCl2 + H2O + CO2CaCO3 + 2HCl → CaCl2 + H2O + CO2↑气体(↑)和沉淀(↓)符号不是配平必需,但检索常见方程时工具依赖这些符号匹配精确条目
5. 离子方程式写成分子式
AgNO3 + NaCl → AgCl + NaNO3Ag⁺ + Cl⁻ → AgCl↓离子方程式需用离子形式表示可溶电解质;工具检索时按离子式匹配,分子式会导致无结果
6. 有机反应漏写结构简式
C2H5OH + O2 → CO2 + H2OC2H5OH + 3O2 → 2CO2 + 3H2O有机反应配平需完整写出所有原子;乙醇燃烧中 C2H5OH 含 6 个 H,配平后系数为 3 而非 2
7. 用中文元素名代替符号
铁 + 氧气 → 四氧化三铁Fe + O2 → Fe3O4工具只识别标准化学符号(Fe/O2),不解析中文名称;输入中文会触发未知标识符错误
8. 热化学方程漏状态标注
H2 + 1/2 O2 → H2O ΔH = -285.8 kJ/molH2(g) + 1/2 O2(g) → H2O(l) ΔH = -285.8 kJ/mol热化学方程必须标注物质状态(g/l/s/aq),否则 ΔH 值无对应基准态;工具检索时按状态区分不同反应
工作原理
公式推导 · 流程图解 · 依据出处
核心公式
aA + bB → cC + dD (配平条件:各元素原子数守恒)
变量说明
a, b, c, d— 化学计量数(正整数或最简整数比)A, B— 反应物化学式C, D— 生成物化学式
示例
配平 C₂H₆ + O₂ → CO₂ + H₂O。设系数为 a, b, c, d:C: 2a = c;H: 6a = 2d;O: 2b = 2c + d。取 a=2,得 c=4,d=6,b=7。配平结果:2C₂H₆ + 7O₂ → 4CO₂ + 6H₂O。
适用范围
适用于所有化学反应方程式的配平(氧化还原、非氧化还原均可)。不适用于核反应方程(涉及质量亏损)或未指明物态的高温等离子体反应。
原理图
开发者集成
3 种主流语言 · 复制即用
import re
from collections import Counter
# 解析化学式,返回元素计数
# 例如 'H2O' → {'H': 2, 'O': 1}
def parse_formula(formula: str) -> dict:
pattern = r'([A-Z][a-z]*)(\d*)'
counts = Counter()
for elem, num in re.findall(pattern, formula):
counts[elem] += int(num) if num else 1
return counts
# 示例:配平 H2 + O2 → H2O
# 这里用简单线性代数求解系数(仅演示,实际需矩阵求解)
reactants = ['H2', 'O2']
products = ['H2O']
# 手动配平结果:2H2 + O2 → 2H2O
coeffs = {'H2': 2, 'O2': 1, 'H2O': 2}
print('配平方程:')
print(f"{coeffs['H2']}{reactants[0]} + {coeffs['O2']}{reactants[1]} → {coeffs['H2O']}{products[0]}")
# 输出: 2H2 + O2 → 2H2O
package main
import (
"fmt"
"regexp"
"strconv"
)
// 解析化学式,返回元素计数
func parseFormula(formula string) map[string]int {
re := regexp.MustCompile(`([A-Z][a-z]*)(\d*)`)
matches := re.FindAllStringSubmatch(formula, -1)
counts := make(map[string]int)
for _, m := range matches {
elem := m[1]
num := 1
if m[2] != "" {
num, _ = strconv.Atoi(m[2])
}
counts[elem] += num
}
return counts
}
func main() {
// 示例:解析 H2O
result := parseFormula("H2O")
fmt.Println(result) // map[H:2 O:1]
// 配平示例:2H2 + O2 → 2H2O
fmt.Println("配平方程: 2H2 + O2 → 2H2O")
}
// 解析化学式,返回元素计数
function parseFormula(formula) {
const pattern = /([A-Z][a-z]*)(\d*)/g;
const counts = {};
let match;
while ((match = pattern.exec(formula)) !== null) {
const elem = match[1];
const num = match[2] ? parseInt(match[2], 10) : 1;
counts[elem] = (counts[elem] || 0) + num;
}
return counts;
}
// 示例
console.log(parseFormula('H2O')); // { H: 2, O: 1 }
console.log(parseFormula('C6H12O6')); // { C: 6, H: 12, O: 6 }
// 配平方程示例(手动系数)
const balanced = '2H2 + O2 → 2H2O';
console.log('配平方程:', balanced);
常见问题
6 个高频疑问