2012-12-26 2 views
0

파일을 읽고 모든 레벨의 게임을 1 개의 셀에 넣는 함수를 작성해야합니다. 모든 셀은 레벨의 행을 문자열로 포함하고 모든 행은 셀의 요소입니다. 마지막 셀에는 숫자 앞에 '레벨이 나오지 않고 빈 셀이없는 단어 나 단어가 없어야합니다. 이 기능을 구현했지만 이와 같은 수준에서는 잘 작동하지 않습니다. 어떤 아이디어가 있습니까? 파일 목록에서 셀과파일에서 "levels"을 복사하십시오.

; 1 

#### 
# .# 
# ### 
#*@ # 
# $ # 
# ### 
#### 

에서

수준이 같은

; 154 'Take the long way home.' 

############################ 
#       # 
# ######################## # 
# #      # # 
# # #################### # # 
# # #     # # # 
# # # ################ # # # 
# # # #    # # # # 
# # # # ############ # # # # 
# # # # #   # # # # 
# # # # # ############ # # # 
# # # # #    # # # 
# # # # ################ # # 
# # # #     # # 
##$# # #################### # 
#. @ #      # 
############################# 

찾고 뭔가를해야만 : 수준의

['####', '# .#', '# ###', '#*@ #', '# $ #', '# ###', '####'] 

예를 들어 내가 가진 문제가

["54 'Take the long way home.'", '', ' ############################', ' #       #', ' # ######################## #', ' # #      # #', ' # # #################### # #', ' # # #     # # #', ' # # # ################ # # #', ' # # # #    # # # #', ' # # # # ############ # # # #', ' # # # # #   # # # #', ' # # # # # ############ # # #', ' # # # # #    # # #', ' # # # # ################ # #', ' # # # #     # #', '##$# # #################### #', '#. @ #      #', '#############################'] 

내 코드 :

def loader(filename): 

    tmp=[] 
    levels=[] 
    f=open(filename, "r") 
    f=f.read().split(';') 
    for line in f: 
     tmp.append(line[2:].strip()) 
    tmp.remove("") 
    for i in tmp: 
     i=i.split("\n") 
     levels.append(i) 
    print levels 
+3

발생한 문제는 무엇입니까? –

+0

문제가 발생한 수준 이후 출력을 추가했습니다. 단어가없는 셀은 비어 있습니다. – user1816377

+1

예제 출력이 예제 입력에 맞지 않습니다. – WolframH

답변

0

그것은 당신이 달성하기 위해 노력하고 정확히 따라 좀 어렵다,하지만이 기능은 당신이 원하는 걸 줄 것이라 생각합니다.

def loader(filename): 
    f = open(filename, 'r') 
    lines = f.read().split('\n') 
    header = lines[0] # don't know if you need this 
    level = lines[2:] 
    f.close() 
    return level 

편집 : 아, 내가 파일 당 여러 단계가 있다고 인식하지 않았다.

이 방법에 대해 다음 :

def loader(filename): 
    f = open(filename, 'r') 
    levels = f.read().split(';')[1:] 
    return [level.strip().split('\n')[2:] for level in levels] 
+0

난 그냥 "깨끗한"수준, 전에 번호 또는 레벨 또는 빈 줄의 이름없이 게임 보드가 포함 된 행을 얻을 필요가 – user1816377

+0

그게 내 생각은 내 대답을 시도 했습니까? – mads

+0

@ user1659937 파일에 여러 수준이 포함되어 있다고 생각합니다. – WolframH

0
def loader(filename): 

    tmp=[] 
    levels=[] 
    f=open(filename, "r") 
    f=f.read().split(';') 
    for i in f[1:]: 
     i=i.split("\n") 
     levels.append(i[2:-1]) 
    print levels 
나를 위해

작품 미세 :

testinput.txt :

; 1 

#### 
# .# 
# ### 
#*@ # 
# $ # 
# ### 
#### 
; 154 'Take the long way home.' 

############################ 
#       # 
# ######################## # 
# #      # # 
# # #################### # # 
# # #     # # # 
# # # ################ # # # 
# # # #    # # # # 
# # # # ############ # # # # 
# # # # #   # # # # 
# # # # # ############ # # # 
# # # # #    # # # 
# # # # ################ # # 
# # # #     # # 
##$# # #################### # 
#. @ #      # 
############################# 

출력 :

[['####', '# .#', '# ###', '#*@ #', '# $ #', '# ###', '####'], [' ############################', ' #       #', ' # ######################## #', ' # #      # #', ' # # #################### # #', ' # # #     # # #', ' # # # ################ # # #', ' # # # #    # # # #', ' # # # # ############ # # # #', ' # # # # #   # # # #', ' # # # # # ############ # # #', ' # # # # #    # # #', ' # # # # ################ # #', ' # # # #     # #', '##$# # #################### #', '#. @ #      #', '#############################']] 
+0

도움이되지 않았습니다. 내 코드와 거의 같습니다. – user1816377

+0

'levels.append' 줄의 [2 :]에 유의하십시오. 작동하는지 보여주기 위해 예제 출력을 추가했습니다. – WolframH

+0

하지만 여전히 빈 셀이 있습니다. – user1816377

관련 문제