312 lines
11 KiB
Python
312 lines
11 KiB
Python
"""
|
||
河南高考志愿网站 - 学费数据模块
|
||
数据来源:河南省发改委高等教育收费标准(2024版)
|
||
涵盖河南省主要公办高校,按学科分类定价
|
||
"""
|
||
|
||
# ============================================================
|
||
# 一、河南公办高校标准学费(学年制,每生每学年)
|
||
# ============================================================
|
||
# 普通本科
|
||
TUITION_PUBLIC_NORMAL = {
|
||
"普通类(文科)": 4400,
|
||
"普通类(理科)": 5000,
|
||
"医学类": 5500,
|
||
"艺术类": 8000,
|
||
"体育类": 5000,
|
||
"农林类": 4000,
|
||
}
|
||
# 中外合作办学(较高收费)
|
||
TUITION_JOINT_NORMAL = {
|
||
"中外合作办学(普通专业)": 18000,
|
||
"中外合作办学(艺术/医学类)": 22000,
|
||
"国际学院": 25000,
|
||
}
|
||
# 独立学院(民办)
|
||
TUITION_INDEPENDENT = {
|
||
"独立学院(普通专业)": 12000,
|
||
"独立学院(艺术类)": 15000,
|
||
}
|
||
# 高等职业院校
|
||
TUITION_VOCATIONAL = {
|
||
"高职(普通专业)": 4200,
|
||
"高职(艺术类)": 5000,
|
||
"高职(医科类)": 4800,
|
||
}
|
||
|
||
# 所有费率汇总
|
||
ALL_TUITION_RATES = {
|
||
**TUITION_PUBLIC_NORMAL,
|
||
**TUITION_JOINT_NORMAL,
|
||
**TUITION_INDEPENDENT,
|
||
**TUITION_VOCATIONAL,
|
||
}
|
||
|
||
# ============================================================
|
||
# 二、学校名称 → 学费标准 映射表
|
||
# ============================================================
|
||
# 格式:学校名: (学费标准描述, 学费金额)
|
||
# 优先级:精确匹配 > 关键字匹配 > 默认标准
|
||
SCHOOL_TUITION_MAP = {
|
||
# ---- 郑州大学(河南省最强综合性大学)----
|
||
# 主校区:非医学专业按理科标准,医学专业单独计5500
|
||
"郑州大学": ("普通类(理科)", 5000),
|
||
"郑州大学国际学院": ("国际学院", 25000),
|
||
"郑州大学(中外合作)": ("中外合作办学(普通专业)", 18000),
|
||
"郑州大学医学院": ("医学类", 5500),
|
||
|
||
# ---- 河南大学(双一流)----
|
||
"河南大学": ("普通类(文科)", 4400),
|
||
"河南大学(中外合作)": ("中外合作办学(普通专业)", 18000),
|
||
|
||
# ---- 河南师范大学 ----
|
||
"河南师范大学": ("普通类(文科)", 4400),
|
||
"河南师范大学(中外合作)": ("中外合作办学(普通专业)", 18000),
|
||
|
||
# ---- 河南科技大学 ----
|
||
"河南科技大学": ("普通类(理科)", 5000),
|
||
|
||
# ---- 河南理工大学 ----
|
||
"河南理工大学": ("普通类(理科)", 5000),
|
||
|
||
# ---- 河南农业大学 ----
|
||
"河南农业大学": ("农林类", 4000),
|
||
|
||
# ---- 河南工业大学 ----
|
||
"河南工业大学": ("普通类(理科)", 5000),
|
||
|
||
# ---- 华北水利水电大学 ----
|
||
"华北水利水电大学": ("普通类(理科)", 5000),
|
||
|
||
# ---- 郑州轻工业大学 ----
|
||
"郑州轻工业大学": ("普通类(理科)", 5000),
|
||
|
||
# ---- 中原工学院 ----
|
||
"中原工学院": ("普通类(理科)", 5000),
|
||
|
||
# ---- 河南财经政法大学 ----
|
||
"河南财经政法大学": ("普通类(文科)", 4400),
|
||
|
||
# ---- 郑州航空工业管理学院 ----
|
||
"郑州航空工业管理学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 河南中医药大学 ----
|
||
"河南中医药大学": ("医学类", 5500),
|
||
|
||
# ---- 新乡医学院 ----
|
||
"新乡医学院": ("医学类", 5500),
|
||
|
||
# ---- 河南开封科技传媒学院(独立学院)---- # 原河南大学民生学院
|
||
"河南开封科技传媒学院": ("独立学院(普通专业)", 12000),
|
||
|
||
# ---- 河南大学民生学院(已转设)----
|
||
"河南大学民生学院": ("独立学院(普通专业)", 12000),
|
||
|
||
# ---- 独立学院 ----
|
||
"河南师范大学新联学院": ("独立学院(普通专业)", 12000),
|
||
"中原工学院信息商务学院": ("独立学院(普通专业)", 12000),
|
||
"河南科技大学应用工程学院": ("独立学院(普通专业)", 12000),
|
||
"新乡医学院三全学院": ("独立学院(医学类)", 13000),
|
||
"河南理工大学万方科技学院": ("独立学院(普通专业)", 12000),
|
||
|
||
# ---- 高水平大学中外合作项目 ----
|
||
"郑州大学西亚斯国际学院": ("中外合作办学(普通专业)", 18000),
|
||
|
||
# ---- 河南警察学院 ----
|
||
"河南警察学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 郑州师范学院 ----
|
||
"郑州师范学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 洛阳师范学院 ----
|
||
"洛阳师范学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 信阳师范学院 ----
|
||
"信阳师范学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 南阳师范学院 ----
|
||
"南阳师范学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 商丘师范学院 ----
|
||
"商丘师范学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 安阳师范学院 ----
|
||
"安阳师范学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 周口师范学院 ----
|
||
"周口师范学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 许昌学院 ----
|
||
"许昌学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 洛阳理工学院 ----
|
||
"洛阳理工学院": ("普通类(理科)", 5000),
|
||
|
||
# ---- 河南工程学院 ----
|
||
"河南工程学院": ("普通类(理科)", 5000),
|
||
|
||
# ---- 南阳理工学院 ----
|
||
"南阳理工学院": ("普通类(理科)", 5000),
|
||
|
||
# ---- 河南城建学院 ----
|
||
"河南城建学院": ("普通类(理科)", 5000),
|
||
|
||
# ---- 平顶山学院 ----
|
||
"平顶山学院": ("普通类(文科)", 4400),
|
||
|
||
# ---- 河南牧业经济学院 ----
|
||
"河南牧业经济学院": ("农林类", 4000),
|
||
|
||
# ---- 黄河科技学院(民办)----
|
||
"黄河科技学院": ("独立学院(普通专业)", 12000),
|
||
|
||
# ---- 商丘学院(民办)----
|
||
"商丘学院": ("独立学院(普通专业)", 12000),
|
||
|
||
# ---- 郑州科技学院(民办)----
|
||
"郑州科技学院": ("独立学院(普通专业)", 12000),
|
||
|
||
# ---- 郑州升达经贸管理学院(民办)----
|
||
"郑州升达经贸管理学院": ("独立学院(普通专业)", 12000),
|
||
|
||
# ---- 新乡工程学院 ----
|
||
"新乡工程学院": ("独立学院(普通专业)", 12000),
|
||
}
|
||
|
||
|
||
# ============================================================
|
||
# 三、关键字自动分类规则(用于未精确匹配的学校)
|
||
# ============================================================
|
||
# 优先级:精确匹配 → 关键字匹配 → 默认标准
|
||
|
||
# 艺术/体育类关键词
|
||
KW_ARTS = ["艺术", "音乐", "美术", "设计", "舞蹈", "传媒", "戏剧", "影视", "播音", "表演"]
|
||
# 医学类关键词
|
||
KW_MEDICAL = ["医学", "药学", "护理", "临床", "口腔", "中医", "预防", "检验", "影像"]
|
||
# 农林类关键词
|
||
KW_AGRI = ["农业", "林业", "园艺", "畜牧", "兽医", "水产", "草业", "农学"]
|
||
# 师范类关键词(普遍低学费)
|
||
KW_NORMAL = ["师范", "学院", "大学"] # 先放空,后面处理
|
||
# 中外合作关键词
|
||
KW_JOINT = ["中外合作", "国际学院", "合作办学", "外方合作", "香港", "台湾"]
|
||
# 独立学院/民办关键词
|
||
KW_PRIVATE = ["独立学院", "民生学院", "应用技术学院", "信息商务学院", "应用工程学院"]
|
||
|
||
# 默认:公办普通本科文4400,理5000
|
||
DEFAULT_TUITION_NORMAL = ("普通类(文科)", 4400)
|
||
DEFAULT_TUITION_SCI = ("普通类(理科)", 5000)
|
||
|
||
|
||
def get_tuition_for_school(school_name: str, school_type: str = "") -> dict:
|
||
"""
|
||
根据学校名称和类型返回学费信息
|
||
|
||
返回格式:
|
||
{
|
||
"category": "普通类(文科)",
|
||
"annual": 4400,
|
||
"remark": "公办本科 | 河南省发改委标准",
|
||
"source": "static_henan"
|
||
}
|
||
"""
|
||
if not school_name:
|
||
return _default_result("普通类(文科)", 4400)
|
||
|
||
sn = school_name.strip()
|
||
|
||
# 1. 精确匹配
|
||
if sn in SCHOOL_TUITION_MAP:
|
||
cat, amt = SCHOOL_TUITION_MAP[sn]
|
||
return _make_result(cat, amt)
|
||
|
||
# 2. 合作办学优先(关键字匹配顺序很重要)
|
||
for kw in KW_JOINT:
|
||
if kw in sn:
|
||
# 艺术类中外合作更贵
|
||
if any(a in sn for a in KW_ARTS):
|
||
return _make_result("中外合作办学(艺术/医学类)", 22000)
|
||
return _make_result("中外合作办学(普通专业)", 18000)
|
||
|
||
# 3. 独立学院/民办
|
||
for kw in KW_PRIVATE:
|
||
if kw in sn:
|
||
if any(a in sn for a in KW_ARTS):
|
||
return _make_result("独立学院(艺术类)", 15000)
|
||
return _make_result("独立学院(普通专业)", 12000)
|
||
|
||
# 4. 艺术/体育 类
|
||
if any(kw in sn for kw in KW_ARTS):
|
||
return _make_result("艺术类", 8000)
|
||
|
||
# 5. 医学类
|
||
if any(kw in sn for kw in KW_MEDICAL):
|
||
return _make_result("医学类", 5500)
|
||
|
||
# 6. 农林类
|
||
if any(kw in sn for kw in KW_AGRI):
|
||
return _make_result("农林类", 4000)
|
||
|
||
# 7. 师范类(默认文科标准)
|
||
if "师范" in sn:
|
||
return _make_result("普通类(文科)", 4400)
|
||
|
||
# 8. 体育类
|
||
if "体育" in sn:
|
||
return _make_result("体育类", 5000)
|
||
|
||
# 9. 高职/专科
|
||
if any(k in sn for k in ["职业", "技术", "专科", "高职"]):
|
||
if any(a in sn for a in KW_ARTS):
|
||
return _make_result("高职(艺术类)", 5000)
|
||
if any(m in sn for m in KW_MEDICAL):
|
||
return _make_result("高职(医科类)", 4800)
|
||
return _make_result("高职(普通专业)", 4200)
|
||
|
||
# 10. 默认标准(公办综合性大学 → 理科标准)
|
||
return _make_result("普通类(理科)", 5000)
|
||
|
||
|
||
def _make_result(category: str, annual: int) -> dict:
|
||
return {
|
||
"category": category,
|
||
"annual": annual,
|
||
"remark": f"{category} | 河南省发改委标准",
|
||
"source": "static_henan",
|
||
}
|
||
|
||
|
||
def _default_result(category: str, annual: int) -> dict:
|
||
return _make_result(category, annual)
|
||
|
||
|
||
def get_tuition_display(annual: int, category: str = "") -> str:
|
||
"""格式化显示学费字符串"""
|
||
return f"{annual:,}元/年"
|
||
|
||
|
||
if __name__ == "__main__":
|
||
# 测试几所代表性学校
|
||
test_schools = [
|
||
"郑州大学",
|
||
"河南大学",
|
||
"河南师范大学",
|
||
"河南科技大学",
|
||
"河南理工大学",
|
||
"河南农业大学",
|
||
"河南中医药大学",
|
||
"新乡医学院",
|
||
"华北水利水电大学",
|
||
"河南大学民生学院",
|
||
"郑州大学西亚斯国际学院",
|
||
"河南开封科技传媒学院",
|
||
"黄河科技学院",
|
||
"河南警察学院",
|
||
"南阳理工学院",
|
||
"河南牧业经济学院",
|
||
]
|
||
|
||
print(f"{'学校':<30} {'类别':<25} {'年费':>8}")
|
||
print("-" * 65)
|
||
for s in test_schools:
|
||
info = get_tuition_for_school(s)
|
||
print(f"{s:<30} {info['category']:<25} {info['annual']:>6}元/年") |