You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prolog实现整数成绩转字母等级遇语法错误求助

Prolog成绩转字母等级:语法错误排查与完整实现

语法错误原因

你在查询时输入的.1不符合Prolog语法规范——Prolog要求小数必须包含整数部分,不能以小数点开头,正确写法是0.1。把查询改成evaluate_grade(0.1, F)就能解决这个语法错误。

完整成绩转字母等级实现

根据你“整数成绩绑定对应字母等级(≥90为A,≥80为B,以此类推)”的需求,这里给出完整的Prolog规则:

% 90及以上为A
evaluate_grade(X, 'A') :- X >= 90, X =< 100.
% 80-89为B
evaluate_grade(X, 'B') :- X >= 80, X < 90.
% 70-79为C
evaluate_grade(X, 'C') :- X >= 70, X < 80.
% 60-69为D
evaluate_grade(X, 'D') :- X >= 60, X < 70.
% 低于60为F
evaluate_grade(X, 'F') :- X >= 0, X < 60.

示例查询

  • 查询整数成绩:evaluate_grade(95, Grade). → 返回Grade = 'A'
  • 你需要的测试场景:evaluate_grade(1, Grade). → 返回Grade = 'F'
  • 若需支持小数成绩:evaluate_grade(82.5, Grade). → 返回Grade = 'B'

额外优化(可选)

如果只需要支持整数成绩,可以给规则添加integer(X)约束,过滤非整数输入:

evaluate_grade(X, 'A') :- integer(X), X >= 90, X =< 100.
% 其余规则同理添加integer(X)约束

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:57:34