python에서 %-15s에 리스트를 대입할 때

조회수 641회
def manual() :
    menuList = ["1. 이차방정식의 근의 판별", "2. 내분점 구하기" , "3. 외분점 구하기",
                "4. 무게중심 구하기" , "5. 사용설명 보기" , "9. 프로그램 종료"]

    print("==============================================")
    print("========== 문제풀이 도움  프로그램 ===========")
    print("==============================================")
    for menu in menuList : 
        print("========== %-15s==========" % menu)
    print("==============================================")

manual()을 실행했을 때

==============================================
========== 문제풀이 도움  프로그램 ===========
==============================================
========== 1. 이차방정식의 근의 판별==========
========== 2. 내분점 구하기     ==========
========== 3. 외분점 구하기     ==========
========== 4. 무게중심 구하기    ==========
========== 5. 사용설명 보기     ==========
========== 9. 프로그램 종료     ==========
==============================================

이렇게 정렬이 맞지 않는데 깔끔하게 보이게 할 방법이 있을까요?

1 답변

  • 질문하고 계신 것은 전각문자를 공백으로 채우기(whitespace padding of full-width characters)라는 문제입니다.

    파이썬에서는 이 문제를 어떻게 하나 찾아보니 제대로 하자면 좀 성가셔지는 모양이네요. 글쎄 저 메뉴가 사용자들의 엉망진창 입력을 사용해야 하고 그래서 반드시 계산을 해서 정리해야만 하는 값이라면 또 모르겠지만... 이 상황에서 저라면 그냥 이렇게 하겠습니다.

    def manual() :
        # 최소한의 체계성을 갖기 위해 딕셔너리를 도입함.
        menuList = {
            '1': {
                'name' : '이차방정식의 근의 판별',
                'label': '1. 이차방정식의 근의 판별 '
            },
            '2': {
                'name' : '내분점 구하기',
                'label': '2. 내분점 구하기          ' # 여기 빈칸 중요
            },
            '3': {
                'name' : '외분점 구하기',
                'label': '3. 외분점 구하기          '
            },
            '4': {
                'name' : '무게중심 구하기',
                'label': '4. 무게중심 구하기        '
            },
            '5': {
                'name' : '사용설명 보기',
                'label': '5. 사용설명 보기          '
            },
            '9': {
                'name' : '프로그램 종료',
                'label': '9. 프로그램 종료          '
            }
        }
    
        print("==================================================")
        print("============= 문제풀이 도움 프로그램 =============")
        print("==================================================")
        for menuCode, menuInfo in menuList.items() :
            print("=========== " + menuInfo['label'] + " ===========")
        print("==================================================")
    
    manual()
    

    항간에 떠도는 코딩하수 VS 코딩고수 농담은 이런 맥락에서 나오는 듯합니다. 저는 ㅈ밥이지만요.

    • 위에 방법을 정확하게 따른 것은 아니지만 참고하여 구현했습니다. 감사합니다. 알 수 없는 사용자 2019.6.13 09:00

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

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

(ಠ_ಠ)
(ಠ‿ಠ)