파이썬: 이름을 입력 받아서 성씨(예:김,이,박...)별로 출력하는 프로그램
조회수 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 답변
-
음.. 저라면 이렇게 할 것 같은데요.
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('참석자 명단 끝')
댓글 입력