개별 리스트를 하나로 합치기

조회수 390회
lang_type=['ko','en','es','vi']

text_src = translator.translate(user_text).src
if text_src==lang_type[0]: 
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[1]).text) 
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[2]).text) 
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[3]).text) 

elif text_src==lang_type[1]:
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[0]).text)
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[2]).text)
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[3]).text)

elif text_src==lang_type[2]: 
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[0]).text)
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[1]).text)
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[3]).text)

else: 
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[0]).text)
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[1]).text)
    telegram.Bot(TelegramToken).send_message(user_id,translator.translate(user_text, dest=lang_type[2]).text)

이 코드를 프린트 했을 때 메시지를 개별적으로 출력하는데 이 개별 메세지들을 하나의 메세지에 다 출력되게 하는 방법을 알려주실 수 있으실까요?

단순히 [1:3] 같이 시도해봤는데 작동이 안되었습니다.

2 답변

  • 엽토군님이 설명한 걸 구현해 본 코드입니다. 테스트는 안해봤어요. 참고하세요.

    text_src = translator.translate(user_text).src
    
    lang_type_ = [ lang for lang in lang_type if lang != text_src ] # 1 filter
    
    messages = [ translator.translate(user_text, dest = lang).text for lang in lang_type_ ] # 2 mapping
    
    joined_message = ' '.join(messages) #3  join
    
    telegram.Bot(TelegramToken).send_message(user_id, joined_message) # 4 send
    
  • 그러니까 사용자가 입력한 언어가 한국어면 그걸 한국어로는 번역하지 않고 나머지 언어들(영어, 스페인어, 베트남어)로 번역해서 그걸 한번에 다 보여주시려는 거죠?

    순회 가능한 자료에 관해 배우셨다면, 다음 설명만으로도 충분할 거 같습니다.

    1. lang_type을 필터합니다. text_src가 아닌 것만 남기면 됩니다.
    2. lang_type을 맵핑합니다. lang_type 안의 각 문자열들을 lang이라고 했을 때, 그것들 각각을 translator.translate(user_text, lang).text로 변환해주면 되겠지요.
    3. 2에서 얻은 리스트를 join으로 합쳐줍니다.
    4. 3을 텔레그램 봇으로 전달합니다.

    관련참고자료:

    여기서부터는 직접 해보세요! 행운을 빕니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)