2016-12-11 2 views
0

Я пытаюсь найти среднее значение списка с помощью цикла for. Я сделал это с циклом while.Covert while loop to for loop

Можно ли преобразовать это в цикл for?

List_1 =[] 

while (True): 

    val_1 = float(input("Enter a number: ")) 
    List_1.append (val_1) 

    if len(List_1)>=5: 

     List_sum = sum(List_1) 
     List_avg = (List_sum/len(List_1)) 

     print("AVG:",List_avg) 

     break 

Это то, что я придумал:

val_1 = int(input("Enter a number: ")) 
List_1 = [] 
List_1.append (val_1) 
List_sum = 0 
List_len = 0 
List_avg = 0 

for i in range (List_1): 
    List_sum = sum(numbers) 
    List_len = len(numbers) 

    if len(numbers) >=5: 
     List_avg = List_sum/List_len 
     print (List_avg) 
+0

1) Как 'input (..)' находился внутри цикла, разве вы не думаете, что версия for-loop должна иметь внутри цикла тоже? 2) 'range (List_1)' неверно. 'range (..)' принимает целое число; целое число, которое (вроде) говорит, сколько раз вы хотите итерации., – SuperSaiyan

+0

Используйте 'sum (list)/len (list)' вместо этого, это более эффективно, чем цикл. –

ответ

0
L = [] 
for _ in range(5): 
    L.append(float(input("Enter a number: "))) 

print("The length is", len(L)) 
print("The total is", sum(L)) 
print("The average is", sum(L)/len(L)) 
0

Вместо проверки на конец списка (длиной 5 в вашем примере) в пределах цикла, цикла над диапазоном этой длины (список не является подходящим аргументом для функции range) и распечатать результат позже. Вам также не нужно использовать список.

list_len = 5 
result = 0 
for i in range(list_len): 
    result += float(input('Enter a number: ')) 

print(result/list_len)