Я нахожу второе по величине число из списка массивов, но я получаю ошибку времени выполнения, когда входной arr равен 6,6,6,6,6,6,6,6,6,5 - PullRequest
0 голосов
/ 31 мая 2019

когда я скомпилировал эту программу в VSCode, я получил IndexError.Есть ли другое решение?

#here is my sample code
if __name__ == '__main__':
    n = int(input())
    arr = list(map(int, input().split()))
    x = len(arr)
    arr.sort()
    for i in range(0, x-1):
        #removing redundant values
        if arr[i] == max(arr):
            arr.remove(arr[i])

    arr.remove(max(arr))
    print(max(arr))

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Видя, что вы не обновляете длину после первой итерации, вы в конечном итоге будете думать, что у вас больше массива, чем у вас, поскольку вы удаляете их все.В результате возникает ошибка IndexError.

Если вы создаете копию массива, вы всегда можете выполнить итерацию по ней, что позволит вам редактировать исходный список.

0 голосов
/ 31 мая 2019

разделить, используя split(','), когда ввод 6,6,6,6,6,6,6,6,6,5

arr = list(map(int, input().split(',')))

...