Во-первых, не whill, а while. Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу. Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
Нельзя использовать кодовые слова, которые начинаются с 0 или с 10. 11 также не можем использовать, поскольку тогда мы больше не сможем взять никакое другое кодовое слово, а нам их нужно пять. Поэтому берём трёхзначное 110. По Условию Фано, если есть a, то ab существовать не может. Другими словами, мы не можем использовать начало с 0, а если возьмем 11, то начинать другие числа не сможем. Поэтому остается брать числа 110,1110,1111(последний берем без 0, т.к. он последний и других чисел уже не нужно, но если бы и было нужно, то стоит взять число 11110 не нарушая условия Фано)
st = [[0] * 6 for i in range(5)]
gr_min = []
summ = course = gr_i = gr_j = 0
for i in range(5):
sum_gr = k = 0
for j in range(6):
print('кол-во студентов в', j + 1, 'группе', i + 1, 'курса:')
st[i][j] = int(input()) # ввод кол-ва студентов
sum_gr += st[i][j]
if st[i][j] < st[gr_i][gr_j]:
gr_i, gr_j = i, j
if st[i][j] < st[i][k]:
k = j
gr_min.append(k)
if i == 0:
summ = sum_gr
elif summ > sum_gr:
summ, course = sum_gr, i
print('наименьшее кол-во студентов на', course + 1, 'курсе')
print('самая малочисленная группа в институте', gr_j + 1, 'на', gr_i + 1, 'курсе')
for i in range(5):
print('группа', gr_min[i] + 1, 'самая малочисленная на', i + 1, 'курсе')
Объяснение:
st = [[0] * 6 for i in range(5)] # создаем список с вложенными списками для кол-ва студентов в группах
gr_min = [] # создаем пустой список для индексов самых малочисленных групп на курсах
summ = course = gr_i = gr_j = 0 # объявляем переменные
for i in range(5): # перебираем в цикле по курсам
sum_gr = k = 0 # объявляем переменные
for j in range(6): # перебираем в цикле по группам
print('кол-во студентов в', j + 1, 'группе', i + 1, 'курса:')
st[i][j] = int(input()) # ввод кол-ва студентов
sum_gr += st[i][j] # считаем сумму всех групп
if st[i][j] < st[gr_i][gr_j]: # находим самую малочисленную в институте
gr_i, gr_j = i, j # запоминаем ее индесы
if st[i][j] < st[i][k]: # находим самую малочисленную на курсе
k = j # запоминаем ее индекс
gr_min.append(k) # сохраняем индекс в списке
if i == 0: # в первый проход в цикле по курсам
summ = sum_gr # присваиваем минимальной сумме сумму групп 1 курса
elif summ > sum_gr: # потом сравниваем ее со всеми курсами
summ, course = sum_gr, i # находим минимальную сумму и ее индекс - дальше выводим все на печать
print('наименьшее кол-во студентов на', course + 1, 'курсе')
print('самая малочисленная группа в институте', gr_j + 1, 'на', gr_i + 1, 'курсе')
for i in range(5):
print('группа', gr_min[i] + 1, 'самая малочисленная на', i + 1, 'курсе')