2014-10-24 3 views
2
index1 = 0 
singlechar = [] 
def SINGLE_CHAR_VAR(filename): 
    firdict = vars_indents(filename)[0] 
    firtup_keys = firdict.keys() 
    firtup_val = firdict.values() 
    for keys in firtup_keys: 
     for values in firtup_val: 
      index = 0 
      for index in range(len(values)): 
       firvallist = firtup_val[index] 
       for item in firvallist: 
        if len(item[0]) == 1: 
         singlechar.append({'ERROR_TYPE': 'SINGLE_CHAR_VAR', 'LINE_NUMBER': str(keys),'COLUMN': str(item[1]),'INFO': str(item[0]),'SOURCE_LINE': str(lines[keys - 1])}) 
        else: 
         continue 
       return singlechar 

이것은 내 코드이지만 생성 된 출력이 없거나 return 문을 돌아볼 때 빈 목록이 생성되었습니다. 나는 그것이 나에게 사전으로서의 목록을 출력물로주기를 바랐다.파이썬 : 출력이 없거나 비어있는 목록 만 생성되었습니다.

누가이 문제를 해결할 수있는 방법을 가르쳐 줄 수 있습니까?

답변

1

당신은 출력을 얻기 위해 처음에 함수를 호출해야합니다 감사합니다.

SINGLE_CHAR_VAR(filename) 

함수를 호출하지 않고도 실행하려면 어떻게해야합니까?

0

return! = print. `print SINGLE_CHAR_VAR (filename)

return은 그 기능을 호출하는 모든 것에 값을 보낼 것입니다. 이 경우 값/문자열이 반환되지만 그걸로 뭔가를해야하므로 print이 필요합니다. 함수 자체에서 출력을 인쇄하려면 returnprint으로 바꿀 수 있습니다. 그러나이 경우 값은 전달되지 않으므로 값을 저장할 수 없습니다. 그것은 정말로 당신을 위해 일하는 것/당신이 원하는 것에 달려 있습니다. `

+0

죄송합니다. 그래서 나는 예를 들어했습니다. 'SINGLE_CHAR_VAR ('naughty.py ')를 출력하지만'None '을 출력으로 출력합니다. 어떻게하면 ''ERROR_TYPE ':'SINGLE_CHAR_VAR ','LINE_NUMBER ': str (4),'COLUMN ': str (89),'INFO ': str ('r '),'SOURCE_LINE '과 비슷한 것을 인쇄 할 수 있을까요? ': str ('우리는 여기에있다 ')} –

0

나는 문제가 반송 성명서에 있다고 생각합니다. 들여 쓰기 바로 아래에 바깥 쪽의 루프 아래에는 내부 루프 아래가 아닌 반환 명세서가 있어야합니다. 아래 그림과 같습니다 :

def SINGLE_CHAR_VAR(filename): 
    firdict = vars_indents(filename)[0] 
    firtup_keys = firdict.keys() 
    firtup_val = firdict.values() 
    for keys in firtup_keys: 
     for values in firtup_val: 
      index = 0 
      for index in range(len(values)): 
       firvallist = firtup_val[index] 
       for item in firvallist: 
        if len(item[0]) == 1: 
         singlechar.append({'ERROR_TYPE': 'SINGLE_CHAR_VAR', 'LINE_NUMBER': str(keys),'COLUMN': str(item[1]),'INFO': str(item[0]),'SOURCE_LINE': str(lines[keys - 1])}) 
        else: 
         continue 
    return singlechar # indent of return changed 
+0

return 문에 들여 쓰기를 변경하려고했지만 출력으로 []를주었습니다 ... –

+0

작업하기 위해 작업중인 파일이나 파일을 업로드해야합니다 문제를 쉽게 해결할 수 있습니다. –