Код заменяет не два значения, как по заданию, так ли это?

Преподаватель сказал что код меняет больше двух значений, хотя по заданию нужно два, но я вижу что он меняет два - максимальное и минимальное. Что не так?

Задание: Заполните список вещественных чисел размерности [1..N], используя генератор случайных чисел . Границу списка N задавать как константу. Напечатать полученный список в текстовый файл outfile. Поменять местами наибольший и наименьший элементы. Напечатать полученный список в ТОТ ЖЕ файл.

import random

print ('граница списка: ')
V = int(input())
gg = [random.uniform(1, V) for i in range (V)]
print (gg)

with open('newfile.txt', 'w') as f:
  f.write(' '.join(map(str, gg)))

max_gg = max(gg)
min_gg = min(gg)

for i in range(len(gg)):
  if gg[i] == max_gg:
    gg[i] = min_gg
  elif gg[i] == min_gg:
    gg[i] = max_gg

with open('newfile.txt', 'a') as f:
  f.write('\n')
  f.write(str(gg))

Ответы (1 шт):

Автор решения: Сергей

Задачка с подначкой:-) Стало интересно проверить - так что сделал сам (вы не просили, но тогда для базы знаний, если вам не надо). Циклы тут не нужны, раз препод такой хитрый, и надо только по одному числу менять максимальному и минимальному, а не все.

Вместо:

for i in range(len(gg)):
  if gg[i] == max_gg:
    gg[i] = min_gg
  elif gg[i] == min_gg:
    gg[i] = max_gg

Ставим:

# ищем индексы макс и мин элементов и меняем элементы местами
max_index = gg.index(max_gg)
min_index = gg.index(min_gg)
gg[max_index], gg[min_index] = gg[min_index], gg[max_index]
→ Ссылка