私は現在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])
は、上記の私のコードであり、それは私に次のエラーを与え続けて:それは私がlen(LST)を呼び出すと、問題を持っているかのように
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()
に思えるどこLST = [1]理由Pythonはそれが変数ではないと思うようですか?私はかなり混乱しています。
私はlen([1])とタイプすることができますが、私は問題なく1の結果を得ます。また、これは私がやろうとしていることを行うための最良の方法ではないことを完全に認識していることを覚えておいてください。しかし、私はちょうどPythonを学び始めています!
アイデア?
実際に 'lst'の値を確認することはありませんでしたか? –
どういう意味ですか?私はあなたが何を参照している場合は、入力が常に整数のリストになると仮定していた? – tdeoliveira05
'lst'は、関数の先頭で変更します。あなたは何が変わったのか確認するためにチェックしなかったのですか? –