01/10/2018, 10:53

Python on Codecademy

Mọi người cho em hỏi bài viết hàm get_class_average() làm như thế nào ạ, em viết nhưng nó lỗi không return được số mà không biết sửa như nào ạ.
Code em làm đây ạ:

lloyd = {
  "name": "Lloyd",
  "homework": [90.0, 97.0, 75.0, 92.0],
  "quizzes": [88.0, 40.0, 94.0],
  "tests": [75.0, 90.0]
}
alice = {
  "name": "Alice",
  "homework": [100.0, 92.0, 98.0, 100.0],
  "quizzes": [82.0, 83.0, 91.0],
  "tests": [89.0, 97.0]
}
tyler = {
  "name": "Tyler",
  "homework": [0.0, 87.0, 75.0, 22.0],
  "quizzes": [0.0, 75.0, 78.0],
  "tests": [100.0, 100.0]
}

# Add your function below!
def average(numbers):
  total = sum(numbers)
  total = float(total)
  result = float(total/len(numbers))
  return result

def get_average(student):
  homework = average(student["homework"])
  quizzes = average(student["quizzes"])
  tests = average(student["tests"])
  result = 0.1 * homework + 0.3 * quizzes + 0.6 * tests
  return result

def get_letter_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"
  
print get_letter_grade(lloyd)

def get_class_average(class_list):
  result = []
  for student in class_list:
    result.append(get_average(student))
    
  return result
Henry viết 13:03 ngày 01/10/2018

Bạn thử cái này

def get_class_average(class_list):
	result = []
	for student in class_list:
		result.append(get_average(student))
	return float(result) / len(result)
Trần Tuấn Vũ viết 13:02 ngày 01/10/2018

Nó vẫn không được ạ

result là list, hình như không float được ạ

Henry viết 13:09 ngày 01/10/2018

Mình ghi nhầm

sum(result) / len (result)
Trần Tuấn Vũ viết 12:54 ngày 01/10/2018

sum(result) / len (result)

À được rồi, Em cảm ơn ạ.
Cho em hỏi thêm là result ở hàm này nó tự loại trường name của dictionary đi hay nó cho kết quả là 0 ạ?

Henry viết 12:54 ngày 01/10/2018

result là một list nhận từng kết quả từ get_average(student) với student là từng student là các dict. Hàm get_average thì lại có được kết quả bằng cách lấy từng homework, quizzes, tests của student ra để tính trung bình, sau đó return lại một số.
Mình thấy các bạn học Codecademy rất ẩu, vì thường nó code cho đoạn nền rồi, nên giờ code bừa đoạn core, đúng thì học tiếp, sai thì hỏi. Không nên như vậy, trước khi bạn viết phần core để pass bài của nó. Bạn nên kiểm tra xem những hàm nó viết sẵn làm cái gì.

Trần Tuấn Vũ viết 13:04 ngày 01/10/2018

Vâng e hiểu rồi ạ.!
Thank you so much!

Bài liên quan
0