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

Python列表推导式内置条件函数运行结果与预期不符问题求助

问题原因

你编写的列表推导式结构使用错误:

  • 你将grade_classification(result)放在了if后面的过滤判断位置,该函数返回的所有结果都是非空字符串,在Python中判定为布尔值True,因此所有原始分数都会被保留。
  • 你将原始分数result作为列表推导式的输出元素,自然只会得到原始的分数列表,没有得到转换后的评级结果。
    另外你的函数中第一个分支返回的是小写fail,和你预期的大写Fail不匹配,需要同步修改。

修改方案

改写列表推导式,将grade_classification()的调用放在输出元素的位置,不需要额外设置过滤条件:

more_grades = [0.0, 50.0, 49.9, 79.0, 101.0, 65.0, 54.2, 48.2, 78.9]
def grade_classification(grade):
        if grade < 40:
            result = 'Fail' # 修正小写fail为大写,匹配预期输出
        elif 40 <= grade < 50:
            result = 'Pass'
        elif 50 <= grade < 60:
            result = '2:2'
        elif 60 <= grade < 70:
            result= '2:1'
        elif grade >= 70:
            result = 'First'
        else:
            result = 'unknown grade'
        return result
studen_classficatin = [grade_classification(grade) for grade in more_grades]
print(studen_classficatin)

运行后即可得到你预期的输出结果:['Fail', '2:2', 'Pass', 'First', 'First', '2:1', '2:2', 'Pass', 'First']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:27:02