파이썬: 이름을 입력 받아서 성씨(예:김,이,박...)별로 출력하는 프로그램

조회수 567회

파이썬 독학 중입니다 . 여기까지 짜봤는데 일단 참석자 수 입력 없이 엔터키를 쳤을 때 입력 종료를 구분하고 싶고, 한명의 이름이 추가 될 때마다 딕셔너리를 출력해서 확인하고 싶습니다.

출력 예)

참석자의 이름을 입력하시오(종료하려면 엔터키): 박준희
{'박':['박준희']}
참석자의 이름을 입력하시오(종료하려면 엔터키):김성용
{'박':['박준희'], '김':['김성용']}
참석자의 이름을 입력하시오(종료하려면 엔터키):김준영
{'박':['박준희'], '김':['김성용'], ['김준영']}
참석자의 이름을 입력하시오(종료하려면 엔터키):

참석자 명단 : 
박: 박준희
김 : 김성용, 김준영
attendanceList = []
attendanceCount = int(input("참석자 수를 입력하시오: "))
for i in range(attendanceCount) :
    name = input("참석자의 이름을 입력하시오: ")
    for sameFamilyNames in attendanceList : # 성씨별 명단을 반복하면서
        if name[0] == sameFamilyNames[0][0] : # 입력받은 이름의 성과 같은 성이면
            sameFamilyNames.append(name) # 같은 성씨 명단에 이름을 추가하고
            name = "" # 성씨 명단에 추가했음을 표시
            break
    if name : # name != "" 와 동일 # 성씨 명단에 추가된 적이 없으면
        attendanceList.append([name]) # 새로운 성씨 명단을 만들어서 추가
    print(attendanceList)

print("참석자 명단 : ")
for sameFamilyNames in attendanceList :
    print(sameFamilyNames[0][0], end="")
    separator = ":"
    for name in sameFamilyNames :
        print(separator, name, end="")
        separator = ","
    print()

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    음.. 저라면 이렇게 할 것 같은데요.

    from pprint import pprint
    
    dict_a = {}
    
    while 1:
        a = input('이름을 입력해주세요.(이름이 없는 경우 종료) : ')
        if a.strip() == '':
            break
        if dict_a.get(a[0]):
            dict_a[a[0]].append(a)
        else:
            dict_a[a[0]] = [a]
       print(a[0] + '씨 명단 :', dict_a[a[0]])
    
    print('참석자 명단 시작')
    # pprint(dict_a)
    for i in dict_a:
        print(i, '씨 명단')
        print(','.join(dict_a[i])
    
    print('참석자 명단 끝')
    
    • 결과 출력할 때 성씨 별로 다른 줄에 출력할 수는 없나요? tlgus699 2022.5.30 16:41
    • 수정한 내용 확인해주세요. 초보자 2022.5.30 16:47

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

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

(ಠ_ಠ)
(ಠ‿ಠ)