В настоящее время я изучаю, как кодировать python 2.7, но я столкнулся с запутанной ошибкой в следующем коде, который пытается (очень неэффективно полагаю) возвращать медиана ввода.Почему len ([1]) дает мне ошибку «NoneType»
def median(lst):
lst = lst.sort()
median = 0
if len(lst) == 1:
median = lst[0]
elif len(lst) % 2 == 0:
median_sum = lst[len(lst)/2 - 1] + lst[len(lst)/2 + 1]
median = median_sum/2.0
else:
median = lst[len(lst)/ 2 - 1]
return median
print median([1])
выше мой код, и он продолжает давать мне следующую ошибку:
Traceback (most recent call last):
File "C:/Python27/SAVED DOCS/test3.py", line 16, in <module>
print median([1])
File "C:/Python27/SAVED DOCS/test3.py", line 6, in median
if len(lst) == 1:
TypeError: object of type 'NoneType' has no len()
кажется, что он испытывает проблемы с меня вызовом LEN (ЛСТ), где LST = [1], так как Кажется, python считает, что это переменная None? Я совершенно смущен.
На консольном терминале для python я могу ввести len ([1]), и я получаю результат 1 без каких-либо проблем. Также имейте в виду, я полностью осознаю, что это не лучший способ сделать то, что я пытаюсь сделать, но я только начинаю изучать питон!
Любые идеи?
Вам не приходилось проверять значение 'lst'?!? –
Что вы имеете в виду? Я предполагал, что вход всегда будет списком целых чисел, если это то, о чем вы говорите? – tdeoliveira05
Вы меняете 'lst' в начале функции; вы не проверили, чтобы посмотреть, к чему это изменилось? –