hlystik
@hlystik
«Самоучка»

В чем проблема работы данного кода?

Суть программы заключается в получении n-ного количества цифр и определения самого большого и пред самого большого, скорее всего данный вопрос банален, но я не могу понять в чём проблема уже второй день.

n = int(input())
maxx = 0
maxx2 = 0

for i in range(n):
  n2 = int(input())
  if n2 > maxx:
    maxx = n2
  elif n2 < maxx and n2 > maxx2:
    maxx2 = n2

print(maxx)
print(maxx2)
  • Вопрос задан
  • 110 просмотров
Решения вопроса 2
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Представьте. что у вас уже есть на текущий момент самое большое и предыдущее самое большое число из всех, что попадались до сих пор. И вот вы нащли число, которое больше самого большого. Очевидно. что предыдущее самое большое надо подвинуть, а вы этого не делаете.

Такие задачи проще всего решать начиная со штатной ситуации, а потом отрабатывать исключенияи специфические кейсы.
Нарисуйте цепочку чисел, укажите стрелочкой на текущее и для этой позиции вручную найдите саоме большое и предыдущее. Потом подумайте какие будете делать операции.
Ответ написан
@GlamorousCar
В вашей программе не учитывался случай, когда самое большое число в массиве находится после значения уже присвоенного переменной maxx. Например [1900,1232,2000,32,12,3,23], Также не отрабатывались случаи, когда два максимальных числа равны.
Исправленная программа
n = list(np.random.randint(0, 100, size=random.randint(2, 20)))
maxx = 0
maxx2 = 0
for n2 in n:
    if n2 >= maxx:
        maxx2 = maxx
        maxx = n2
    elif n2 < maxx and n2 > maxx2:
        maxx2 = n2
print(maxx,maxx2)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы