我编写代码来查找给定数据的平均值。我没有得到理想的输出,我不知道出了什么问题。
以下是代码:
student_1 = raw_input().split()
student_2 = raw_input().split()
student_3 = raw_input().split()
rec_1 = {'name' : student_1[0], 'math' : int(student_1[1]), 'physics' : int(student_1[2]), 'chemistry' : int(student_1[3])}
rec_2 = {'name' : student_2[0], 'math' : int(student_2[1]), 'physics' : int(student_2[2]), 'chemistry' : int(student_2[3])}
rec_3 = {'name' : student_3[0], 'math' : int(student_3[1]), 'physics' : int(student_3[2]), 'chemistry' : int(student_3[3])}
name_of_student = raw_input()
if name_of_student == rec_1['name'] is True:
s1 = (rec_1['math']+rec_1['physics']+rec_1['chemistry'])
n1 = len(student_1) - 1
print s1 / n1
elif name_of_student == rec_2['name'] is True:
s2 = (rec_2['math']+rec_2['physics']+rec_2['chemistry'])
n2 = len(student_2) - 1
print s2 / n2
elif name_of_student == rec_3['name'] is True:
s3 = (rec_3['math']+rec_3['physics']+rec_3['chemistry'])
n3 = len(student_3) - 1
print s3 / n3
else:
print "Record not available"
输入:
3
K 67 68 69
A 70 98 63
M 52 56 60
中号
期望的输出: 56.00
答案 0 :(得分:1)
问题在于你过多地投入其中。删除is True
部分:
if name_of_student == rec_1['name']:
使用is True
,您需要检查:
if name_of_student == (rec_1['name'] is True):
由于rec_1['name']
永远不会是布尔值,因此带括号的部分将为False
,并且由于name_of_student
永远不会是False
,所以整个事物将评估为{ {1}},未能找到学生的姓名。
你可能认为你正在做的事情更接近于此:
False
这可能会产生预期的结果,因为括号内的比较将产生一个布尔值,在CPython(标准Python实现)中,由于整数实习,它应该与其自身的实例具有相同的标识。但是,你不应该依赖它。只需删除if (name_of_student == rec_1['name']) is True:
部分,即可获得您正在寻找的行为。