2013-12-05 2 views
0

Привет, друзья, надеюсь, у вас отличный день, я работаю над заданием для своего класса, и у меня проблема. Я должен вычислить среднее значение в одной функции, а затем вызвать его в другой функции. Из моего понимания учебника (учитель понятия не имеет, как преподавать), добавив, что «средний доход» должен позволить мне использовать этот вывод в другой функции? Ну, когда я запускаю свой код, он немедленно возвращает среднее значение только после 1 ввода.Возвращение внутри цикла. Как я могу убедиться, что он находится вне цикла?

Я предполагаю, потому что «среднее значение возврата» находится внутри цикла «для теста в диапазоне» справа? Если это так, я не уверен, как сделать это за пределами этого цикла (в то время как внутри этого же метода), я пробовал разные способы без успеха.

Мне хотелось бы узнать про этот вопрос. Я ценю любую помощь, которую я получаю. Спасибо!

#variables for amount of scores 
num_of_scores = 5 

def calc_average(): 
    total = 0.0 
    for test in range(num_of_scores): 
     print('Please enter the score of test', str(test +1), end='') 
     score = float(input(':')) 
     total += score 
     average = total/num_of_scores 
     return average 
def main(): 
    average = calc_average() 
    print('Average of test scores is', average) 

#def determine_grade(): 
# if average < 60 

main() 
+3

Move 'средний = ...' и 'вернуть average' вниз отступа ... – Sinkingpoint

+0

@Quirliom о вау, это было быстро прямо в точку и правильный ответ! Я очень ценю это. Я не знал, что перемещение вниз по отступу удалит его из цикла. Спасибо! Я хотел бы принять ваш ответ, но вы сделали это в качестве комментария:/ – YourFriend

ответ

1

Решение:

Проблема заключается в вашей indention, вы зацикливание над num_of_scores и делает сумму, расчет сред и возвращаемого значения метода должен быть частью метода, а не часть цикла for.

#variables for amount of scores 
    num_of_scores = 5 

    def calc_average(): 
     total = 0.0 
     for test in range(num_of_scores): 
      print('Please enter the score of test', str(test +1), end='') 
      score = float(input(':')) 
      total += score 
     average = total/num_of_scores 
     return average 

    def main(): 
     average = calc_average() 
     print('Average of test scores is', average) 

    #def determine_grade(): 
    # if average < 60 

    main() 

Выход:

('Please enter the score of test', '1') :5 
('Please enter the score of test', '2') :6 
('Please enter the score of test', '3') :7 
('Please enter the score of test', '4') :8 
('Please enter the score of test', '5') :9 
('Average of test scores is', 7.0) 
+0

Очень благодарен !, Спасибо за краткое объяснение, почему, а также! Придется принять, как только ограничение времени позволит мне. – YourFriend

Смежные вопросы