0

有人可以解释一下这句话是怎么回事:

return [grade if (grade < 38 or grade % 5 < 3) else (grade + (5 - grade%5)) for grade in grades]

与此代码块不同:

for grade in grades:
        if grade<38 or grade%5<3:
            return grade
        else:
            return grade + (5-grade%5)

第一个有效,但第二个代码给了我一个 TypeError: 'int' object is not iterable。感谢您的回答。

4

1 回答 1

1

为了让他们输出相同的结果,您需要将结果附加到列表而不是返回它。
基本上第二个代码块应该是:

def block2(grades):
    res = []
    for grade in grades:
            if grade<38 or grade%5<3:
                res.append(grade)
            else:
                res.append(grade + (5-grade%5))
    return res 
于 2020-12-02T00:30:57.390 回答