向量的迭代和值变化

时间:2019-01-21 12:18:28

标签: python python-3.x

我正在尝试建立一个程序,将成绩转换为评分等级。

from bisect import bisect
def grade(score, breakpoints=[-1.4, 1, 3, 5.6, 8.6, 9.6], grades='m''0''2''4''7''t''T'):
    i = bisect(breakpoints, score)
    for i in grade: 
        if i == 'm':
            grade[i] = -3
        if i == '0':
            grade[i] = 00
        elif i == 't':
            grade[i] = 10
        elif i == 'T':
            grade[i] = 12
    return grades[i]
[grade(score) for score in [-2, 3.4, 5.5, 1.2, 11.8, 8.1, 7.3]]

这给了我以下错误:

 for i in grade:

TypeError: 'function' object is not iterable

当我在第2行中分配成绩时,我试图直接更改它,但是它不允许我输入包含多个字符(即-3、00、10或12)的值,这就是为什么正在尝试转换成绩后更改值。

谢谢。

2 个答案:

答案 0 :(得分:1)

错别字。 应该是“成绩”,而不是“成绩”

答案 1 :(得分:0)

我不能完全理解您要达到的目标,我有一些建议对您有用。首先能够使用HANDLERS,这对您的写作会更好。第二个你在叫什么功能,列出? 看这个例子,它还没有完成,但是你想做什么:

from bisect import bisect

GRADE_HANDLER = {'T': 12, 't': 10, '0': 00, 'm': -3}

def grade(score, breakpoints=[-1.4, 1, 3, 5.6, 8.6, 9.6], grades='m''0''2''4''7''t''T'):
    # WHy you use it??? and where?
    bisect_value = bisect(breakpoint,score)
    # grade is not a list
    for i in grades:
        grades[i] = GRADE_HANDLER[i]

    # what are you returning ??


[grade(score) for score in [-2, 3.4, 5.5, 1.2, 11.8, 8.1, 7.3]]