Проблема заключается в том, что по идее переменная lowest должна изменять своё значение, как и highest (с ней всё получается), но почему то этого не происходит.
Выставляю код вам на обозрение:
digits = []
sum = 0
lowest = 0
highest = 0
while True:
digit = input('enter a number or Enter to finish: ')
if digit == '':
break
Digit = int(digit)
digits.append(Digit)
sum += Digit
if len(digits) == 0:
lowest = Digit
highest = Digit
elif highest < Digit:
highest = Digit
elif lowest > Digit:
lowest = Digit
print('numbers: ', digits)
print('count =', len(digits), 'sum =', sum, 'lowest =', lowest, 'highest =', highest, 'mean =', sum/len(digits))
Вывод программы такой:
enter a number or Enter to finish: 43
enter a number or Enter to finish: 324
enter a number or Enter to finish: 2
enter a number or Enter to finish: 5
enter a number or Enter to finish: 65
enter a number or Enter to finish: 757
enter a number or Enter to finish: 33
enter a number or Enter to finish: 423
enter a number or Enter to finish:
numbers: [43, 324, 2, 5, 65, 757, 33, 423]
count = 8 sum = 1652 lowest = 0 highest = 757 mean = 206.5
Ответ
Условие if len(digits) == 0 у Вас не выполняется никогда, т.к. вы добавлете число еще ДО его проверки. Просто переместите digits.append(Digit) в конец цикла, и все заработает.
П.С. Если ввести отрицательное число - должно заработать и так)))
П.П.С. highest также определится неверно, если все числа - отрицательные.
Рабочий код:
digits = []
sum = 0
lowest = 0
highest = 0
while True:
try:
digit = input('enter a number or Enter to finish: ')
except:
break
if digit == '':
break
Digit = int(digit)
sum += Digit
if len(digits) == 0:
lowest = Digit
highest = Digit
elif highest < Digit:
highest = Digit
elif lowest > Digit:
lowest = Digit
digits.append(Digit)
print 'numbers: ', digits
# print lowest, highest
print 'count =', len(digits), 'sum =', sum, 'lowest =', lowest, 'highest =', highest, 'mean =', sum/len(digits)
Вывод консоли:
D:\Python>python test002.py
enter a number or Enter to finish: 43
enter a number or Enter to finish: 324
enter a number or Enter to finish: 2
enter a number or Enter to finish: 5
enter a number or Enter to finish: 65
enter a number or Enter to finish: 757
enter a number or Enter to finish: 33
enter a number or Enter to finish: 423
enter a number or Enter to finish:
numbers: [43, 324, 2, 5, 65, 757, 33, 423]
count = 8 sum = 1652 lowest = 2 highest = 757 mean = 206
Комментариев нет:
Отправить комментарий