2017-04-26 5 views
1

아무에게도 이것이 왜 작동하지 않는지 설명해 주시겠습니까? 내가받는 오류 메시지는 다음과 같습니다. TypeError : 목록 인덱스는 부동 소수점이어야하며 부동 소수점이어야합니다. len(lst) 홀수이면파이썬 중간 값 함수 오류 찾기

def median(lst): 
    s = sorted(lst) 
    l = len(lst)/2 
    if len(lst) % 2 == 0: 
     print((s[l] + s[l-1])/2.0) 
    else: 
     print(s[l]) 
median([3,3,5,6,7,8,1]) 
+1

를 사용 intl 변환 뜨지. 그러므로 l은 정수가됩니다. – FLab

+1

'len (lst)'을 2로 나눠서 float을 만듭니다. 대신 정수 나누기 ('/')를 사용할 수 있습니다. – L3viathan

답변

0

오류가 부동 소수점 값, 즉 실제 분할을 반환 / 연산자를 사용하여 분할 l

을 산출되는 동안 정수 즉 // 만 반환 몫

그러므로

너는 l을 다음과 같이 계산해야한다. WS

l = len(lst) // 2 

또는 음 ... 목록 지수는 정수 또는 조각해야

l = int(l) 
+0

도움이된다면 내 대답을 upvoting하시기 바랍니다 – Ani

0

다음 l이 플로트된다.

흥미롭게도 여러분이 작성한 코드는 분자와 분모가 모두 정수인 경우 정수 나누기를 사용하므로 Python 2에서 유효 할 수 있습니다.

그러나 Python 3에서는 기본적으로 true 나누기가 사용됩니다.

자세한 내용은 참조를 들어 : 사용자가 만든 In Python 2, what is the difference between '/' and '//' when used for division?https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator