2013-10-22 6 views
4

일부 파이썬 코드 (간단한 것들)에 약간의 문제가 있습니다.오브젝트는 아래 첨자가 아닙니다.

Data = [1, 2, 3, 4, 5] 
Frequency = [1, 2, 3, 3, 1] 

def mode(data1, frequency1): 
    mode = [0] 
    count = 0 
    while count != len(frequency1): 
     if frequency1[count] > mode[0]: 
      mode = data1[count] 
     elif frequency1[count] == mode: 
      mode = [mode, data1[count]] 
     count +=1 
    return mode 

mode = mode(Data, Frequency) 
print(mode) 

그것은 반환 :

if Frequency[0] > mode[0]: 

TypeError: 'int' object is not subscriptable 

I 은 여기

코드의 ... 나는 충분히 번 실행을 클릭하면 작동 할 수 바라고 점에 점점 다른 질문을 한 번 보았습니다 & 대답하지만 그것은 저를 넘어 보입니다. 어디서 잘못 될까요!

편집 : 평균을 찾기 위해 가져올 수있는 모듈이 있지만 아무 것도 가져 오지 않고 모듈을 만들고 싶습니다.

편집 : 전체 코드가 게시되었습니다. 모드 변수를리스트로 만들지 않으면 두 가지 모드가있을 때까지 괜찮습니다.

+2

오른쪽 ...'모드'는'int'입니다 ... 일부 목록이 아닙니다 ... 목적에 따라 변수 이름을 재사용하지 말고 각각 다른 용도로 다른 이름으로 다른 변수를 선언하십시오. –

+1

코드가 무엇을 하려는지 이해하지 못합니다. 'mode [0]'가 정수로 변환해야 할 필요가있는 것은 무엇입니까? 이전 모드와 새로운 모드를'mode'로리스트에 함께 저장하는 이유는 무엇입니까? – abarnert

+1

부수적으로'count = 0','while count! = len (frequency1) :''frequency1 [count]'루프는'for frequency1 :'로 대체 될 수 있습니다. 만약 어떤 이유로'count'가 필요하다면'for count, frequency in enumeration (frequency1) :'을 사용하십시오. 그러나 lockstep에서 다른 목록을 색인하기 위해'count' 만 필요하다면 그렇게하지 마십시오. 그냥 주파수를 위해서, 데이터는 우편 번호 (frequency1, data1) :'. 그러나 수동 루프 카운터 관리를 제거하면 많은 잠재적 인 버그를 쉽게 제거 할 수 있습니다. – abarnert

답변

5

int(mode[0])을 확인하십시오. 당신은 기본적으로 말해서 0의 0 번째 원소를 얻습니다. 아마 당신은 아래 첨자를 잃고 싶습니까? 또는 모드 유형을 변경 하시겠습니까?

관련 문제