Артем, объясни, пожалуйста, такой кусок кода: а = [[7, 10], [6, 10], [5, 10]] print(a.index(max(a))) По какой логике программа выводит индекс с вложенным списком? Что считается максимальным в данным случае?
Приветствую Артем! На степике не проходит 4-й тест. Наверное вариантов 50 входных значений перепробовал. Выводит все правильно, но все равно не принимает. Подскажи пожалуйста, в чем проблема? a,b = map(int, input().split()) c = [[int(i) for i in input().split()] for j in range(a)] s = [max(i) for i in c] d = [sum(j) for j in c] if s.count(max(s))==1: print(s.index(max(s))) elif s.count(max(s))>1 and d.count(max(d))==1: print(d.index(max(d))) else: print(d.index(max(d)))
Как до такого вообще можно было додуматься?(вопрос риторический) Как понять работу вложенного цикла в связке со веми условиями во внешнем? Как работакет max_try и s?
Артем, подскажи, пожалуйста. Не доходит никак как ты сумму в строке считаешь. Мне кажется, она у тебя не всю строку считает (т.е. не сумма всех баллов игрока), а стопорится там, где находится максимум по значению. Представим, что у нас в первой строке первое число 7. значит, макс_скор = 7 и макс_сумма = 7. При этом мы не посчитали, какая сумма всей строки (допустим, там было бы 7, 2, 1, но макс_сум все равно была бы 7). А потом представим, что в следующей строке на самом последнем месте мы опять натыкаемся на 7. Допустим, вторая строка: 1, 0, 7. Поэтому во второй строке макс_сум будет равна 8. Значит, по этой логике победит второй, хотя это неправильно. Подскажи плиз, где у меня запинка в логике. Надеюсь, не сильно коряво объяснила) Заранее спасибо
Просто нужно для каждой строки прочитать сумму, и прежде чем переходить к следующей строке нужно проверить на максимум и сохранить если встретили сумму больше
@@egoroffchannel ааа, поняла, мы же после того, как весь ряд переберем, т.е. после того, как посчитали сумму всего ряда и нашли максимум из всего ряда, только после этого мы начинаем заниматься всякими сравнениями. Большое спасибо, буду внимательней к отступам относиться)
Доброго дня, Артем! Почему не сработал код ниже, я уже все варианты примеров перепробовал, но он не пропускает? n, m = map(int, input().split()) lst = [list(map(int, input().split())) for i in range(n)] spr, num, sum_bros = 0, 0, 0 for i in range(n): if spr < max(lst[i]): spr = max(lst[i]) num = i sum_bros = sum(lst[i]) elif spr == max(lst[i]): if sum_bros < sum(lst[i]): num = i else: continue print(num)
Можете сказать, что неправильно или почему не проходит 2й тест на степике и 11-12 на информатикс? i_maxx=maxx=0 n,m=map(int,input().split()) s=[0]*n #Список, хранящий суммы всех участников по порядку a=[list(map(int,input().split())) for i in range(n)] for i in range(n): for j in range(m): s[i]+=a[i][j] #плюс к сумме iго участника if a[i][j]>maxx: #Проверка на макс. рез. maxx=a[i][j] #Присвоение макс рез. i_maxx=i #Присвоение номера участника с макс.рез elif a[i][j]==maxx: #Если макс.рез совпадают сравниваем суммы и снова присваиваем если сумма больше if s[i]>s[i_maxx]: i_maxx=i
Задача Состязания-4, к сожалению, не разобрана. Не пойму, где просчет в коде. Компилятор выдает только 8 правильных, но входных данных не показывает, что бы увидеть ошибку. informatics.msk.ru/mod/statements/view.php?chapterid=359#1 - задача вот мое решение: n, m = map(int, input().split()) l = [] sum_list = [] for i in range(n): l.append(list(map(int, input().split()))) for i in range(n): s = 0 for j in range(m): s += l[i][j] sum_list.append(s) print(sum_list.count(max(sum_list))) Натолкните, пожалуйста, на мысль.
@@egoroffchannel , разбор бы не помешал. Тест я прошел, но код я написал, как мне видится, очень длинный. Просто хотелось бы увидеть, что получается у тебя и лишний раз поработать над "изяществом" своего кода
Артем, объясни, пожалуйста, такой кусок кода:
а = [[7, 10], [6, 10], [5, 10]]
print(a.index(max(a)))
По какой логике программа выводит индекс с вложенным списком? Что считается максимальным в данным случае?
посмотри, что возвращает max(a)
Он смотрит на максимальное 1 число вложенного списка.
в данном случае 7 максимальное 1 число из всех списков
почему курс курс по джанго закрыт? :(
Приветствую Артем!
На степике не проходит 4-й тест. Наверное вариантов 50 входных значений перепробовал. Выводит все правильно, но все равно не принимает. Подскажи пожалуйста, в чем проблема?
a,b = map(int, input().split())
c = [[int(i) for i in input().split()] for j in range(a)]
s = [max(i) for i in c]
d = [sum(j) for j in c]
if s.count(max(s))==1:
print(s.index(max(s)))
elif s.count(max(s))>1 and d.count(max(d))==1:
print(d.index(max(d)))
else:
print(d.index(max(d)))
Как до такого вообще можно было додуматься?(вопрос риторический) Как понять работу вложенного цикла в связке со веми условиями во внешнем? Как работакет max_try и s?
Артем, подскажи, пожалуйста. Не доходит никак как ты сумму в строке считаешь. Мне кажется, она у тебя не всю строку считает (т.е. не сумма всех баллов игрока), а стопорится там, где находится максимум по значению. Представим, что у нас в первой строке первое число 7. значит, макс_скор = 7 и макс_сумма = 7. При этом мы не посчитали, какая сумма всей строки (допустим, там было бы 7, 2, 1, но макс_сум все равно была бы 7). А потом представим, что в следующей строке на самом последнем месте мы опять натыкаемся на 7. Допустим, вторая строка: 1, 0, 7. Поэтому во второй строке макс_сум будет равна 8. Значит, по этой логике победит второй, хотя это неправильно. Подскажи плиз, где у меня запинка в логике. Надеюсь, не сильно коряво объяснила) Заранее спасибо
Просто нужно для каждой строки прочитать сумму, и прежде чем переходить к следующей строке нужно проверить на максимум и сохранить если встретили сумму больше
@@egoroffchannel ааа, поняла, мы же после того, как весь ряд переберем, т.е. после того, как посчитали сумму всего ряда и нашли максимум из всего ряда, только после этого мы начинаем заниматься всякими сравнениями. Большое спасибо, буду внимательней к отступам относиться)
Доброго дня, Артем!
Почему не сработал код ниже, я уже все варианты примеров перепробовал, но он не пропускает?
n, m = map(int, input().split())
lst = [list(map(int, input().split())) for i in range(n)]
spr, num, sum_bros = 0, 0, 0
for i in range(n):
if spr < max(lst[i]):
spr = max(lst[i])
num = i
sum_bros = sum(lst[i])
elif spr == max(lst[i]):
if sum_bros < sum(lst[i]):
num = i
else:
continue
print(num)
вроде суммы не перезаписывается, когда максимальные попытки равны
Можете сказать, что неправильно или почему не проходит 2й тест на степике и 11-12 на информатикс?
i_maxx=maxx=0
n,m=map(int,input().split())
s=[0]*n #Список, хранящий суммы всех участников по порядку
a=[list(map(int,input().split())) for i in range(n)]
for i in range(n):
for j in range(m):
s[i]+=a[i][j] #плюс к сумме iго участника
if a[i][j]>maxx: #Проверка на макс. рез.
maxx=a[i][j] #Присвоение макс рез.
i_maxx=i #Присвоение номера участника с макс.рез
elif a[i][j]==maxx: #Если макс.рез совпадают сравниваем суммы и снова присваиваем если сумма больше
if s[i]>s[i_maxx]:
i_maxx=i
print(i_maxx)
вот пример, когда у тебя проблемы
2 3
1 2 7
1 7 5
@@egoroffchannel Спасибо, изменил проверку суммы - sum(a[i])>sum(a[i_maxx])
Задача Состязания-4, к сожалению, не разобрана.
Не пойму, где просчет в коде. Компилятор выдает только 8 правильных, но входных данных не показывает, что бы увидеть ошибку.
informatics.msk.ru/mod/statements/view.php?chapterid=359#1 - задача
вот мое решение:
n, m = map(int, input().split())
l = []
sum_list = []
for i in range(n):
l.append(list(map(int, input().split())))
for i in range(n):
s = 0
for j in range(m):
s += l[i][j]
sum_list.append(s)
print(sum_list.count(max(sum_list)))
Натолкните, пожалуйста, на мысль.
могу разбор сделать
@@egoroffchannel Большое спасибо. Хотя если есть возможность подкинуть мысль, тогда и сам увижу ошибку.
@@egoroffchannel , разбор бы не помешал. Тест я прошел, но код я написал, как мне видится, очень длинный. Просто хотелось бы увидеть, что получается у тебя и лишний раз поработать над "изяществом" своего кода
czcams.com/video/MWce-R9XZ3M/video.html
@@alchymista9219 czcams.com/video/MWce-R9XZ3M/video.html