Zodt
Как просили, за один прогон по списку
Что-то у тебя ошибок много всяких.
Zodt
плюс от себя добавил проверку по строковому типу на случай ошибки в массиве
Да нет, функция не должна такой ерундой заниматься. Её задача в чём состоит? Чтобы правильно выбрать элементы, и всё. А устранением ошибок должна заниматься функция, чья задача - устранять ошибки, и всё.
Давай я тебе объясню один раз, чтобы ты понял, что надо сначала почитать что-нибудь по питону:
1)
Zodt
Это к питону не относится, а больше относится к алгоритму. Какие-то значения с потолка выставляются. Нужно брать начальные значения из первого элемента массива (притом если он есть вообще).
Иначе всё это не только не работает, но и вылазит
>>> copy_min_max([20, 10])
[1, 20]
>>> copy_min_max([-20, -10])
[-20, 0]
>>>
2)
Zodt
Не надо работать со строками. Если там могут быть строчные представления чисел, это должна преобразовать в числовой вид специальная функция снаружи. Поэтому весь этот try … except вообще не нужен здесь. Снаружи должен приходить массив чисел, и всё. Если в массиве есть что-то другое, его сначала должна переделать в массив чисел специальная функция.
Каждая функция должна заниматься только своим делом. Не должно быть функций, которые одновременно и танцуют, и поют, и подарки раздают.
3)
Zodt
Чтоы это за None? В питоне используется pass как пустой оператор. Потому и надо сначала почитать что-нибудь по питону, где это всё написано на первых страницах.
4)
Zodt
if l>j: l = j
elif h<j: h = j
else: None
Тут сразу три ошибки: во-первых, в одну строку писать не принято в питоне (нарушается читаемость); во-вторых, else здесь не нужен, так как он не используется; в-третьих, как выше сказано уже, нужно использовать pass в таких случаях.
Так что вердикт такой: неправильно у тебя функция работает, потому что алгоритм не учитывает всех возможных поступающих массивов чисел.
Нужно обработать такие массивы
У тебя же ряд случаев неправильно обрабатывается
>>> copy_min_max([])
[1, 0]
>>> copy_min_max([1])
[1, 1]
>>> copy_min_max([2, 1])
[1, 2]
>>> copy_min_max([-1, -2])
[-2, 0]
>>>