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
相关产品推荐
相关产品推荐

