2014-04-18 4 views
0

링크 된 목록을 반복하는 함수를 작성하려고하면 홀수를 모두 합한 다음 합계를 표시합니다. 여기 내가 지금까지 가지고있는 것입니다 :파이썬에서 연결된 목록과 패턴 사용

from List import * 

def main(): 
    array = eval(input("Give me an array of numbers: ")) 
    ArrayToList(array) 
    print(array[0]) 
    print(array[1]) 
    print(array[2]) 
    print(array[3]) 
    print(sumOdds(array)) 


def isOdd(x): 
    return x % 2 != 0 

def sumOdds(array): 
    if (array == None): 
     return 0 
    elif (isOdd(head(array))): 
     return head(array) + sumOdds(tail(array)) 
    else: 
     return sumOdds(tail(array)) 
main() 

실제로 합계를 인쇄 할 수는 없습니다. 아무도 나를 도와 줄 수 있니? 파이썬에서

$ python3 1.py 
Give me an array of numbers: [11, 5, 3, 51] 
Traceback (most recent call last): 
    File "1.py", line 22, in <module> 
    main() 
    File "1.py", line 10, in main 
    print(sumOdds(array)) 
    File "1.py", line 19, in sumOdds 
    return head(array) + sumOdds(tail(array)) 
    File "1.py", line 18, in sumOdds 
    elif (isOdd(head(array))): 
    File "/Users/~/cs150/practice3/friday/List.py", line 34, in head 
    return NodeValue(items) 
    File "/Users/~/cs150/practice3/friday/List.py", line 12, in NodeValue 
    def NodeValue(n): return n[0] 
    TypeError: 'int' object is not subscriptable 
+1

특히'import' 문 ('head'와'tail'은 어디에 정의되어 있습니까?)과'List.py' 파일 (오류 메시지에서 언급)을 포함하여 완전한 코드를 게시해야합니다. – Gilles

+0

ArrayToList 란 무엇입니까? – Bucket

+0

게시 한 추적을보십시오. 'sumOdds'는 자신을 호출 한 다음'head()'를 호출하려고 시도했고 그 함수의 어딘가에서'NodeValue'를 호출해야했습니다. 이 'NodeValue' 함수는리스트 나 다른 subscriptable 데이터 타입을 전달해야하지만'int'가 전달되었습니다 – jshanley

답변

0

는이 같은 목록을 반복 :

list_of_numbers = [1,4,3,7,5,8,3,7,24,23,76] 
sum_of_odds = 0 
for number in list_of_numbers: 
    # now you check for odds 
    if isOdd(number): 
     sum_of_odds = sum_of_odds + number 

print(sum_of_odds) 

List는 컴퓨터에 또한 모듈 내가 그것을 실행할 때 다음

프로그램의 출력입니다. 나는 안에 무엇이 있는지 모른다. 따라서 ArrayToList(array) 이후에 나는 당신을 도울 수 없습니다.

관련 문제