生活工具 · 杂项

血型遗传

父母血型→子女可能血型

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 52 次使用
选择父母血型 · 实时枚举基因型并计算子女概率
父亲 father
ABO 血型 ABO
Rh 因子 rhesus
母亲 mother
ABO 血型 ABO
Rh 因子 rhesus
概率在「父母未知基因型各等概率」假设下估算(如 A 型按 AA / Ai 各半计)
完整血型组合 · ABO × Rh
Punnett 遗传方格allele cross
免责:血型遗传规律仅供参考,存在 孟买血型 / cisAB / 嵌合体 等罕见例外,不能作为亲子鉴定依据(亲子关系确认需 DNA 检测)。
就绪 · 选择父母 ABO 与 Rh 即时计算
第一节

关于本工具

About

产检时拿到血型报告,夫妻都是A型,孩子会不会是O型?这个工具用孟德尔遗传定律推算父母血型组合下子女可能的血型及概率。输入父母血型,一秒出结果。所有计算在浏览器本地完成,血型数据不会上传到任何服务器。

使用场景

新生儿血型存疑时

孩子刚出生,护士采血后告知血型是O型,但夫妻双方一个是A型、一个是B型。长辈群里立刻炸锅,说“两个都不是O型怎么生出O型”。打开工具输入父母血型,系统直接列出所有可能组合,A×B完全可能生出O型。把结果截图发到家族群,不用解释孟德尔遗传定律,一张图就让所有人闭嘴。

献血前确认亲属匹配

父亲手术备血,医生建议直系亲属优先献血。母亲说自己是AB型,父亲是A型,觉得“AB型万能血肯定能用”。用工具一查,AB型父母只能生出A、B、AB三种血型的孩子,但父亲是A型接受AB型血浆存在风险。赶紧把结果拿给医生看,避免了凭感觉献血造成的输血反应隐患。

亲子鉴定前的预判

发现孩子是AB型,但自己(父亲)是O型、妻子是A型。心里咯噔一下——生物课记得O型只能生出O或A。用工具输入父母血型O×A,结果列表里确实没有AB型。拿着这个结果去咨询遗传门诊,医生承认“血型矛盾是亲子鉴定的重要线索”,并建议做正式DNA检测。工具帮他提前三个月发现了问题。

二胎备孕时的遗传咨询

第一个孩子是Rh阴性血,当时产检费了很大劲才打到抗D免疫球蛋白。现在准备要二胎,夫妻俩担心第二个孩子会不会又是Rh阴性,以及母亲体内是否已经产生抗体。用工具输入父母血型(母亲O型Rh阴性、父亲A型Rh阳性),系统明确显示:每次怀孕孩子都有50%概率是Rh阴性,且必须做抗体筛查。拿着这个数据去挂高危妊娠门诊,医生直接开了提前的抗体检测单。

家族血型谜题破解

整理族谱时发现,爷爷是AB型、奶奶是O型,但三个子女中有一个是O型、两个是A型。老家人说“AB和O只能生出A或B,不可能有O”,怀疑那个O型孩子不是亲生的。用工具输入AB×O,结果明确列出:50%概率A型、50%概率B型,O型概率为0。这个矛盾让家族决定做正式的祖源检测,最终发现奶奶年轻时曾接受过骨髓移植,造血干细胞血型已变成供者血型。

对比矩阵

维度本工具血型计算器 App手工查表
使用方式浏览器直接打开,无安装需下载安装包,占用存储需纸质或电子版血型遗传表
输入方式选择父母血型下拉框通常也是选择或输入手动在表格中查找对应行
输出速度即时显示结果需启动 App,约 1-3 秒查找表格需 10-30 秒
结果呈现列出所有可能血型及概率部分 App 只给可能血型仅列出可能血型,无概率
离线可用完全离线,无需网络部分需联网加载广告完全离线
隐私所有数据在本地处理,不上传部分 App 需注册或联网完全隐私
更新维护无需更新,逻辑固定需定期更新 App 版本无更新问题
平台兼容任何浏览器,包括手机/电脑仅限 iOS 或 Android任何平台
第二节

使用指南

Getting Started

使用步骤

  1. 1在「父亲血型」下拉框中选择血型(A/B/AB/O),「母亲血型」同步选择,结果区立即显示子女可能血型组合
  2. 2勾选「显示概率」开关,结果列表右侧增加百分比列,标注每种血型的理论遗传概率
  3. 3点击结果区任意血型项(如「A型」),弹出详情卡说明该血型的基因型组合(AA/AO)及遗传逻辑
  4. 4点「重置」按钮清空所有选择与结果,恢复初始空白状态

输入输出示例

输入输出说明
父亲 A 型 / 母亲 O 型子女可能血型:A 型、O 型常规:最常见的组合之一,验证工具能否正确排除 B 型和 AB 型
父亲 AB 型 / 母亲 AB 型子女可能血型:A 型、B 型、AB 型常规:父母均为 AB 型时,子女不可能出现 O 型,验证工具是否遗漏
父亲 O 型 / 母亲 O 型子女可能血型:O 型边界:父母均为 O 型时,子女只能为 O 型,验证工具是否错误地列出其他血型
父亲 A 型 / 母亲 B 型子女可能血型:A 型、B 型、AB 型、O 型边界:四种血型均可能出现,验证工具是否完整列出所有可能性
父亲 AB 型 / 母亲 O 型子女可能血型:A 型、B 型易错:AB 型与 O 型组合,子女不可能出现 AB 型或 O 型,验证工具是否误判
父亲 A 型 / 母亲 A 型子女可能血型:A 型、O 型常规:同型组合,验证工具能否正确排除 B 型和 AB 型
父亲 B 型 / 母亲 B 型子女可能血型:B 型、O 型边界:与 A+A 对称,验证工具对 B 型处理是否一致

常见错误对照

1.把血型字母大小写混用

✗ 错误父母血型输入为“a型”和“B型”,结果提示无法识别
✓ 修复父母血型统一输入“A型”和“B型”,或按页面提示格式填写

工具内部按大写字母做匹配,小写字母会被视为无效字符,导致无法正确识别血型组合。

2.输入血型时带了空格或特殊符号

✗ 错误父母血型输入为“A 型”(中间有空格)或“A-型”
✓ 修复父母血型输入为“A型”或“A”(无空格、无连字符)

工具按固定字符串解析,空格和特殊符号会破坏输入格式,导致匹配失败或返回空结果。

3.把Rh血型与ABO血型混在一起输入

✗ 错误父母血型输入为“A+型”或“B阴性”
✓ 修复父母血型仅输入ABO血型字母,如“A型”“B型”“AB型”“O型”

该工具仅处理ABO血型系统,Rh因子(+/-)不在计算范围内,混入会触发格式校验错误。

4.误以为父母血型顺序无关但输入了重复项

✗ 错误父母血型输入为“A型”和“A型”,但实际父母一方是A型、另一方是O型
✓ 修复分别正确输入父母的实际血型,如“A型”和“O型”

工具按父母双方血型独立计算,顺序不影响结果,但必须分别输入真实血型,不能因顺序无关而随意填写。

5.把子女可能血型当成唯一确定结果

✗ 错误看到结果列表中有“A型、B型、AB型”,就认为子女一定是AB型
✓ 修复理解结果为“可能血型集合”,例如父母A+O → 子女可能A或O,不是唯一

ABO血型遗传遵循孟德尔定律,子女血型由父母基因型共同决定,工具输出的是所有可能组合,不是单一预测。

6.输入了父母血型但忽略了罕见的亚型或突变

✗ 错误父母均为O型,但子女实际为A型,用户认为工具错误
✓ 修复工具基于标准ABO等位基因(A、B、O)计算;罕见亚型(如A2、B3)或顺式AB突变不在模型内

标准血型遗传工具只覆盖最常见的A、B、O等位基因组合,不处理频率极低的亚型或基因突变情况。

第三节

工作原理

How It Works

核心公式

子女血型 = 父母等位基因组合(A/B/O 三等位基因遗传)

变量说明

  • 父等位基因父亲血型对应的两个等位基因
  • 母等位基因母亲血型对应的两个等位基因
  • 子等位基因子女从父母各继承一个等位基因

示例

父亲血型 A(基因型 AO)、母亲血型 B(基因型 BO):父亲提供 A 或 O,母亲提供 B 或 O,组合可能为 AB、AO、BO、OO,对应子女血型 AB、A、B、O 四种可能。

选择父亲血型A / B / AB / O选择母亲血型A / B / AB / O浏览器内查表ABO 遗传规律输出子女可能血型A / B / AB / O 组合同时列出不可能血型
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

import json # 血型遗传规则表:父母血型 -> 子女可能血型 RULES = { ("A", "A"): ["A", "O"], ("A", "B"): ["A", "B", "AB", "O"], ("A", "AB"): ["A", "B", "AB"], ("A", "O"): ["A", "O"], ("B", "B"): ["B", "O"], ("B", "AB"): ["A", "B", "AB"], ("B", "O"): ["B", "O"], ("AB", "AB"): ["A", "B", "AB"], ("AB", "O"): ["A", "B"], ("O", "O"): ["O"], } def possible_blood_types(father: str, mother: str) -> list: """返回子女可能血型列表,输入需大写 A/B/AB/O""" key = tuple(sorted([father.upper(), mother.upper()])) return RULES.get(key, ["输入错误,请使用 A/B/AB/O"]) # 示例 print(json.dumps(possible_blood_types("A", "B"))) # ["A", "B", "AB", "O"] print(json.dumps(possible_blood_types("AB", "O"))) # ["A", "B"]
// 血型遗传规则表:父母血型 -> 子女可能血型 const RULES = { 'A_A': ['A', 'O'], 'A_B': ['A', 'B', 'AB', 'O'], 'A_AB': ['A', 'B', 'AB'], 'A_O': ['A', 'O'], 'B_B': ['B', 'O'], 'B_AB': ['A', 'B', 'AB'], 'B_O': ['B', 'O'], 'AB_AB': ['A', 'B', 'AB'], 'AB_O': ['A', 'B'], 'O_O': ['O'], }; function possibleBloodTypes(father, mother) { const key = [father.toUpperCase(), mother.toUpperCase()].sort().join('_'); return RULES[key] || ['输入错误,请使用 A/B/AB/O']; } // 示例 console.log(possibleBloodTypes('A', 'B')); // ['A', 'B', 'AB', 'O'] console.log(possibleBloodTypes('AB', 'O')); // ['A', 'B']
package main import ( "fmt" "sort" "strings" ) // 血型遗传规则表:父母血型 -> 子女可能血型 var rules = map[string][]string{ "A_A": {"A", "O"}, "A_B": {"A", "B", "AB", "O"}, "A_AB": {"A", "B", "AB"}, "A_O": {"A", "O"}, "B_B": {"B", "O"}, "B_AB": {"A", "B", "AB"}, "B_O": {"B", "O"}, "AB_AB": {"A", "B", "AB"}, "AB_O": {"A", "B"}, "O_O": {"O"}, } func possibleBloodTypes(father, mother string) []string { // 排序确保键一致 parents := []string{strings.ToUpper(father), strings.ToUpper(mother)} sort.Strings(parents) key := parents[0] + "_" + parents[1] if result, ok := rules[key]; ok { return result } return []string{"输入错误,请使用 A/B/AB/O"} } func main() { fmt.Println(possibleBloodTypes("A", "B")) // [A B AB O] fmt.Println(possibleBloodTypes("AB", "O")) // [A B] }
import java.util.*; public class BloodType { // 血型遗传规则表:父母血型 -> 子女可能血型 private static final Map<String, List<String>> RULES = new HashMap<>(); static { RULES.put("A_A", Arrays.asList("A", "O")); RULES.put("A_B", Arrays.asList("A", "B", "AB", "O")); RULES.put("A_AB", Arrays.asList("A", "B", "AB")); RULES.put("A_O", Arrays.asList("A", "O")); RULES.put("B_B", Arrays.asList("B", "O")); RULES.put("B_AB", Arrays.asList("A", "B", "AB")); RULES.put("B_O", Arrays.asList("B", "O")); RULES.put("AB_AB", Arrays.asList("A", "B", "AB")); RULES.put("AB_O", Arrays.asList("A", "B")); RULES.put("O_O", Arrays.asList("O")); } public static List<String> possibleBloodTypes(String father, String mother) { // 排序确保键一致 String[] parents = {father.toUpperCase(), mother.toUpperCase()}; Arrays.sort(parents); String key = parents[0] + "_" + parents[1]; return RULES.getOrDefault(key, Arrays.asList("输入错误,请使用 A/B/AB/O")); } public static void main(String[] args) { System.out.println(possibleBloodTypes("A", "B")); // [A, B, AB, O] System.out.println(possibleBloodTypes("AB", "O")); // [A, B] } }
use std::collections::HashMap; fn possible_blood_types(father: &str, mother: &str) -> Vec<&'static str> { // 血型遗传规则表:父母血型 -> 子女可能血型 let rules: HashMap<&str, Vec<&str>> = HashMap::from([ ("A_A", vec!["A", "O"]), ("A_B", vec!["A", "B", "AB", "O"]), ("A_AB", vec!["A", "B", "AB"]), ("A_O", vec!["A", "O"]), ("B_B", vec!["B", "O"]), ("B_AB", vec!["A", "B", "AB"]), ("B_O", vec!["B", "O"]), ("AB_AB", vec!["A", "B", "AB"]), ("AB_O", vec!["A", "B"]), ("O_O", vec!["O"]), ]); // 排序确保键一致 let mut parents = vec![father.to_uppercase(), mother.to_uppercase()]; parents.sort(); let key = format!("{}_{}", parents[0], parents[1]); rules.get(key.as_str()).cloned().unwrap_or_else(|| vec!["输入错误,请使用 A/B/AB/O"]) } fn main() { println!("{:?}", possible_blood_types("A", "B")); // ["A", "B", "AB", "O"] println!("{:?}", possible_blood_types("AB", "O")); // ["A", "B"] }
第五节

常见问题

Q & A
我和我老婆都是O型血,孩子会是A型吗?

不会。根据ABO血型遗传规律,O型血的基因型是OO,父母双方各提供一个O基因,孩子的基因型只能是OO,表现为O型血。A型血需要至少一个A基因(AA或AO),但父母双方都没有A基因可提供,所以孩子不可能是A型。

我爸妈一个A型一个B型,为什么我是O型?

这种情况完全正常。A型血的基因型可能是AA或AO,B型血可能是BB或BO。当父母分别是AO和BO时,各提供一个O基因给孩子,孩子就能得到OO基因型,表现为O型血。所以A型和B型的父母完全可能生出O型的孩子,概率约为1/4。

这个工具算出来的结果准不准?有没有科学依据?

准的。本工具完全依据孟德尔遗传定律中的ABO血型遗传规律,这是医学界公认的经典遗传学模型。算法只涉及显隐性基因组合(A、B为显性,O为隐性),不涉及复杂计算,没有误差空间。只要父母血型输入正确,输出结果就是100%确定的可能范围。

我只知道我爸妈的血型,不知道自己是啥,能反推吗?

可以反推可能的范围,但不能100%确定唯一血型。比如父母都是A型,孩子可能是A型或O型,无法确定是哪一个。本工具就是根据父母血型列出孩子所有可能的血型组合,你拿到这个范围后,再结合自己的实际情况(比如体检报告)就能缩小范围。如果想精确确定,建议去医院做血型检测。

RH阴性血(熊猫血)也能算吗?

不能。本工具目前只计算ABO血型系统的遗传可能(A、B、AB、O四种血型),不包含Rh血型系统(阳性/阴性)的遗传计算。Rh血型遗传遵循另一套规则(D/d基因),需要单独的工具。如果你需要同时考虑ABO和Rh,可以先用本工具算ABO部分,再用专门的Rh遗传工具算Rh部分。

这个工具需要联网吗?我输入的血型数据会上传到服务器吗?

完全不需要联网,数据也不会离开你的设备。本工具是纯前端实现的(FE方式),所有血型遗传计算都在你浏览器的JavaScript中完成,不向任何服务器发送数据。你关闭页面后,输入的内容就彻底消失了。

为什么结果里只显示“可能”的血型,不能给一个确定的?

因为遗传规律决定了有些情况下无法唯一确定。比如父母都是A型(可能基因型是AA或AO),孩子可能是AA、AO(A型)或OO(O型),所以结果会列出A型和O型两种可能。只有父母双方的血型组合能让孩子的基因型唯一确定时(比如父母都是O型→孩子100%是O型),才会给出唯一结果。这是生物学规律,不是工具精度问题。

我爷爷是AB型,奶奶是O型,我爸是A型,这符合规律吗?

完全符合。AB型(基因型AB)和O型(OO)的父母,孩子可能的基因型是AO(A型)或BO(B型),不可能出现AB型或O型。所以你爸是A型是完全可能的(得到了A和O)。如果你爸是O型或AB型,那才不符合规律。这个工具只计算父母→子女这一代,不需要输入祖父母的血型。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭