Приведенный ниже код предназначен для взятия набора строк меток учеников в массиве, и нужно найти строку с максимальными оценками.
Ниже приведен неполный код, так как нужно еще искать строку максимальной суммы;но застрял в неполном коде из-за ошибки.
Это выдает ошибку ниже в py3.codeskulptor.org / , в то время как в Pythontutor , программа завершается в то же самоеномер строки.
Строка № 17: IndexError: индекс назначения списка вне диапазона
# Input number of tests
t = int(input("Input number of tests"))
# Input size of rows (of students)
n = int(input("Input size of rows"))#.strip().split())
print (t,n)
arr = [[[] for i in range(t)] for i in range(n)]
total = [[] for i in range (n)]
for i in range(0,t):
# Input score of each student in row
sum =0
for j in range(n):
arr[i][j] = map(int, input("Input score").strip().split())#[:n]
#the above line causes compilation error
# Find sum of all scores row-wise
for m in arr[i][j]:
sum += m
total[i] = sum1
# Find the max. of total
for j in range(t):
y = max(total[j])
Просьба также предложить более четкий подход к программевышеуказанная проблема.
PS Я обнаружил, что приведенный выше код был почти неправильным, но ударил меня в правильном направлении.
Иметь модифицированный код ниже с вопросом, который возник во время отладки и касался:
max (), отдавая [] приоритет над целым значением
Такое поведение max () было обнаружено, когда неправильно задана строка # 13 как:
total = [[[] для i в диапазоне (l)] для i в диапазоне (n)]
Ниже приведен правильный рабочий код с выводом :
# Input number of tests
t = int(input("Input number of tests"))
# Input number of rows (of students)
n = int(input("Input number of rows"))#.strip().split())
# Input limit on number of students in a row (of students)
l = int(input("Input max. number of studentsin any row"))#.strip().split())
print ('t :',t,'n :',n, 'l :', l)
arr = [[[[] for i in range(l)] for i in range(n)] for i in range(t)]
total = [[[] for i in range (n)] for i in range (t)]
# run input of tests
for i in range(t):
# Input score of each student in the i-th row, out of n
sum =0
for j in range(n):
#for k in range(l):
print("jkl:","i:",i,"j:",j)
arr[i][j] = map(int, input("Input score").strip().split())[:l]
for i in range(t):
for j in range(n):
# Find sum of all scores row-wise
sum = 0
for m in arr[i][j]:
#sum[i][j][] += m
print ('m :', m)
sum += m
#total[i][j] = sum[i][j][]
total[i][j] = sum
for i in range(t):
print("Test no. ", i)
for j in range(n):
#for m in arr[i][j]:
print (arr[i][j])
#print (m)
print("=========")
for i in range(t):
for j in range(n):
print(i,"-",j, total[i][j])
print("::::::")
print("=========")
# Find the max. of total
for i in range(t):
print([m for m in total[i]])
y = max([m for m in total[i]])
print ('i:',i,',', 'max total:',y)
Запросить причину для приоритета, указанного в max (),и, если возможно, свяжите ответ с некоторой ссылкой на базовую реализацию в CPython.