2017-04-05 1 views
2

안녕하세요 사용자가 입력이루프 문자의 패턴을 통해 텍스트

pattern = ['.', '.', '_', '.', '_', '.'] 

하고 코드와 같은 형식의 문자열이 결과를 인쇄 할 것이다 모스 코드 문제의 종류에 노력 해당 인쇄 과 같이 각 단어 :

"dot-dot-dash-dot-dash-dot" 

나는이 시도했다 :

def ss(pattern): 
    dotdash = "" 
    for s in pattern: 
     if s == ".": 
      dotdash+=("dot") 
     elif s == "_": 
      dotdash+=("dash") 
    x = "-".join(dotdash) 
    print(x) 

ss(['.', '.', '_', '.', '_', '.']) 

을하지만 그건 그냥 포기 것 이 같은 g의 저 출력 :

d-o-t-d-o-t-d-a-s-h-d-o-t-d-a-s-h-d-o-t 

는 하이픈으로 그 점과 대시를 분리 할 수있는 솔루션을 찾고 - 난처한 상황에 빠진 조금. 어쩌면 나누기 - 단어를 기반으로 생각할 수 있습니다 - 그러나 그것을 성취하는 방법은 확실하지 않습니다. 어떤 도움이라도 대단히 감사합니다.

답변

2

join() 함수에 전달할 내용은 문자열이므로 문자열의 모든 문자를 반복하므로이 출력이 표시됩니다.

... 
dotdash = [] 
for s in pattern: 
    if s == ".": 
     dotdash.append("dot") 
    elif s == "_": 
     dotdash.append("dash") 
x = "-".join(dotdash) 
... 
+0

그래 그냥 알아 냈 응답에 감사드립니다처럼 초기화합니다! –

2

그런 다음 당신에게 문자열을 제공하는 join 먼저 하이픈을 추가하고, 수 두 교체를 적용 : 목록에있는 모든 단어를 통해 join() 반복이되도록 당신이 정말로 원하는 것은 목록을 사용하는 것입니다 최종 문자열을 얻으십시오 :

def ss(pattern): 
    return '-'.join(pattern).replace('.', 'dot').replace('_', 'dash') 

print(ss(['.', '.', '_', '.', '_', '.'])) // dot-dot-dash-dot-dash-dot 
0

글쎄, 난 그냥 내 자신의 대답에 응답거야 - woops. 쉬운 해결책은 여기에 - 나는 방금 목록에 dotdash를 바꿨다. 그리고 그것은 모든 나의 문제를 돌 보았다.

0

마침표가 쉼표로 변경 ("점")되고 같은 ("대시")로 변경됩니다. 후행 쉼표로 목록 유형이됩니다.

편집 : 또한, 변경 dotdash는 dotdash = []

관련 문제