Код заменяет не два значения, как по заданию, так ли это?
Преподаватель сказал что код меняет больше двух значений, хотя по заданию нужно два, но я вижу что он меняет два - максимальное и минимальное. Что не так?
Задание: Заполните список вещественных чисел размерности [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]