一元+的坏操作数类型:'str'平均测试分数

时间:2015-10-31 18:38:34

标签: python function

我必须为课程编写这个程序,这是我到目前为止所做的。我运行代码就好了,但在输入分数后会弹出错误信息。

def main(): 
    score_1_ = input('Enter score 1:')
    name_1_  = input('Enter name 1:')
    score_2_ = input('Enter score 2:')
    name_2_  = input('Enter name 2:')
    score_3_ = input('Enter score 3:')
    name_3_  = input('Enter name 3:')
    score_4_ = input('Enter score 4:')
    name_4_  = input('Enter name 4:')
    score_5_ = input('Enter score 5:')
    name_5_  = input('Enter name 5:')

    print('Name\t\tnumeric grade\tletter grade')
    print('-------------------------------------------')
    print(name_1_ + '\t\t', score_1_ , + '\t\t',determine_grade(score_1_))
    print(name_2_ + '\t\t', score_2_ , + '\t\t',determine_grade(score_2_))
    print(name_3_ + '\t\t', score_3_ , + '\t\t',determine_grade(score_3_))
    print(name_4_ + '\t\t', score_4_ , + '\t\t',determine_grade(score_4_))
    print(name_5_ + '\t\t', score_5_ , + '\t\t',determine_grade(score_5_))
    print('------------------------------------------ ')

    print('Average score: ' )


    test_average = (score_1_ + score_2_ + score_3_ + score_4_ + score_5_) / 5.0

def calculate_average():
    average = (s1 + s2 + s3 + s4 + s5 / 5.0 )

def determine_grade():
    if score_1_ > 90:
        return 'A'
    elif score_2_ > 80:
        return 'B'
    elif score_3_ > 70:
        return 'C'
    elif score_4_ > 60:
        return 'D'
    else:
        score_5_ > 50
        return 'F'

main()

我遇到的问题是这个

追踪(最近一次通话):       文件“C:/Users/Brandon/Desktop/m5.py”,第69行,in         主要()       文件“C:/Users/Brandon/Desktop/m5.py”,第41行,主要         打印(name_1_ +'\ t \ t',score_1_,+'\ t \ t',确定__(score_1_))     TypeError:一元+的错误操作数类型:'str'

1 个答案:

答案 0 :(得分:0)

由于这是你的作业,我不会发布完整的工作程序,但我会帮你解决一些问题。

我建议您从scorename变量名中删除尾随下划线,因为它们只会使代码看起来混乱。因此,您的输入代码应如下所示:

name_1 = input('Enter name 1:')
score_1 = float(input('Enter score 1:'))

如果分数是整数,则将float更改为int。我已将name放在score之前,因为我觉得这样做更有意义。


主打印部分中的行应如下所示:

print(name_1, '\t\t', score_1, '\t\t', determine_grade(score_1))


您有正确计算平均值的代码,但您从不打印它。你需要:

test_average = (score_1 + score_2 + score_3 + score_4 + score_5) / 5.0
print('Average score:', test_average)

摆脱calculate_average()函数,因为你实际上没有调用它。它无论如何都不会起作用,因为你还没有在任何地方定义s1s2等,并且)位于错误的位置。


这里有一些确定成绩的代码。我已将>更改为>=,因为通常您会获得“{1}}”。如果你的分数是90%或更高,那么' B'如果你的分数至少达到80%且低于90%等等。

def determine_grade(score):
    if score >= 90:
        return 'A'
    elif score >= 80:
        return 'B'
    elif score >= 70:
        return 'C'
    elif score >= 60:
        return 'D'
    else:
        return 'F'

现在,您拥有了整理工作程序所需的一切。

请注意,如果使用循环和列表,则可以使代码 lot 更紧凑。