2011-02-14 6 views
1

그래서 함수는 목록과 숫자를 입력합니다. 그런 다음 숫자를 나눌 수있는 목록의 색인을 반환해야합니다. 목록에 숫자가 없으면이를 나눌 수 있습니다. 그러면 빈 목록 만 반환해야합니다. 예를 들어주어진 숫자의 약수 목록을 얻는 방법은 무엇입니까?

, 여기

div([5,10,15,2,34],10) 
[0,1,3] 

내 코딩되어

def div(nlst, n): 
    nlst = [] 
    for div in nlst: 
     if n % nlst == 0: 
     return nlst.index(div) 
     else: [] 

내 코드에 어떤 문제가 있습니까?

+0

무엇이 당신의 질문입니까? – vz0

+0

내가 잘못하고있는 코딩은 무엇입니까? – 97834657647563

답변

1

코드에서 몇 가지 문제가 있습니다

def div(nlst, n): 
    nlst = [] # You are deleting the original list here! 
    for div in nlst: # The list nlst is empty 
     if n % nlst == 0: # Cannot use a list 'nlst' as an operand of the % operation. 
     return nlst.index(div) # You are returning a single element here 
     else: [] # This does nothing 

작업 할 것이 코드 :

def div(nlst, n): 
    result = [] 
    for i, e in enumerate(nlst): 
     if n % e == 0: 
      result.append(i) 
    return result 

더 컴팩트 버전 다음에

def div(nlst, n): 
    return [i for i, e in enumerate(nlst) if n % e == 0] 
1

목록 함축을 구조 :

def div(nlst, n): 
    return [i for i,v in enumerate(nlst) if n % v == 0] 

>>> div([5,10,15,2,34], 10) 
[0, 1, 3] 
관련 문제