2015-11-12 2 views
0
i = 0 
result = 0 
while i < 10 : 
    result += eval(input("Enter a number: ")) 
    i += 1 
    if result < 1 : 
     break 
    average = result/i 
print (average) 

Я делаю программу рассчитанной средней из 10 чисел, но она будет прекращена, если введено отрицательное число. Проблема в том, что, если вводится отрицательное число, программа не останавливается, пока отрицательное число больше, чем все другие введенные числа.Средняя программа, использующая цикл while. Не будет правильно рассчитать

+0

Так что ваш оператор IF (менее 1) не срабатывает при вводе отрицательного значения? – dchayka

+0

Вы ошибаетесь. Запустите программу и введите отрицательное значение, и вы увидите, что она будет завершена (- и если вы еще не указали хотя бы 1 значение, она также выкинет ошибку из-за того, что средний показатель еще не определен.) –

+1

Пожалуйста, укажите программирование язык, на котором вы работаете, установив флаг. Это сделает ваш вопрос видимым для людей, которые работают на этом языке. –

ответ

2

Этот код не обязательно остановка отрицательного номера. Он делает это только если отрицательное количество с переводом на общее количество: - неположительное количество. Например, если пользователь вводит следующие номера:

4 
-2 
4 

Затем погонных итоговые:

4 
2 
6 

Ни в одной точке является нарастающим итогом (result) неположительны. Таким образом, условие для этого утверждения break не будет правдой.

Если вы хотите завершить любое время, когда введено отрицательное число (или, вернее, неположительное число на основе вашей логики), вам необходимо проверить, что номер сам, а не общая сумма. Что-то вроде этого:

i = 0 
result = 0 
value = 0; 
while i < 10 : 
    value = eval(input("Enter a number: ")) 
    if value < 1 : 
     break 
    i += 1 
    result += value 
    average = result/i 
print (average) 
+0

Хороший улов, не должен выполнять вычисления сразу. – dchayka

+0

Вижу, спасибо за помощь! – Ray

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