原标题:用 Python 编写中国历史知识库,此时不用中文命名变量更待何时?
早先想做个以中国历史为背景的小游戏,但苦于没找到现成已结构化的历史数据。理想中的需要有人物(包括基本信息、人物关系)、事件(包括时间、地点)等等。
加上后来想尝试将少儿编程与传统学科(尤其是文科)结合起来,于是试着用 Python 代码记录历史数据并提供查询功能。有几个优势:
数据是纯文本格式, 易于合作编辑
易于扩展和重构, 相比数据库, 可以更方便地增减/修改数据之间的关系
编辑时可以借助IDE的自动补全, 语法错误等功能, 减少笔误
易于编写自动测试以保证一些基本检验规则, 比如朝代没有重合部分, 先辈出生日期肯定早于后辈, 等等.
易于直接使用数据进行分析:
比如这样:
Array.prototype.diff = function(a) {
return this.filter(function(i) {return a.indexOf(i) < 0;});
};
消失国家 = 国家所属时期[朝代.春秋].diff(国家所属时期[朝代.战国])
console.log("春秋消失的国家: " + JSON.stringify(消失国家))
可以输出:
春秋消失的国家: ["晋国","宋国","吴国","越国","鲁国"]
下面是 Python 源码, 仅作原型演示之用, 如果正式开始项目会采用更翔实的史实参考来源(如教材). 数据结构设计等等很不成熟, 请多指摘, 尤其是TODO部分.
注意:全部变量采用了中文命名,原因很简单,用的到这个代码的开发者必然会中文咯。
// 来源: 中国少儿百科全书-历史大观: 河姆渡文化-郑和下西洋
var 朝代 = Object.freeze({
新石器: "新石器时代",
东周: "东周",
春秋: "春秋时期",
战国: "战国时期",
秦: "秦朝",
西汉: "西汉",
东汉: "东汉",
三国: "三国时期",
隋: "隋朝",
<