Dictionary를 이용해 CRUD 기능이 있는 전화번호부 만들기!
메뉴: 회원정보 추가(a), 검색(f), 수정(u), 삭제(d), 종료(x)
while Loop 활용: 별도의 명령이 있을 때까지 무한히 반복~
members = {}
while True:
menu = input('회원정보 추가(a), 검색(f), 수정(u), 삭제(d), 목록(s), 종료(x): ')
if menu=='a':
name = input('이름 입력: ').title()
phone = input('전화번호 입력: ')
members[name] = phone
print('----------')
print(f'*****{name} 입력 완료*****')
print(f'{name}:', phone)
print('----------')
elif menu=='f':
name = input('검색할 이름 입력: ').title()
phone = members.get(name, '존재하지 않습니다.')
print('----------')
print(f'{name}:', phone)
print('----------')
elif menu=='u':
name = input('수정할 이름 입력: ').title()
if name not in members.keys(): # members.keys(): key만 추출하기
print('----------')
print(f'{name} 회원은 존재하지 않습니다.')
print('----------')
continue # loop 계속 진행
else:
phone = input('새로운 전화번호 입력: ')
members[name] = phone
print('----------')
print(f"*****{name} 수정 완료*****")
print(f'{name}:', phone)
print('----------')
elif menu=='d':
name = input('삭제할 이름 입력: ').title()
if name not in members.keys():
print('----------')
print(f'{name} 회원은 존재하지 않습니다.')
print('----------')
continue
else:
ask = input(f"{name} 회원을 정말로 삭제할까요?(y): ").lower()
if ask == 'y':
del members[name]
print('----------')
print(f"*****{name} 삭제 완료*****")
print('----------')
else:
print('----------')
print(f'{name} 회원을 삭제하지 않았습니다.')
print('----------')
elif menu=='s':
print('----------')
for k, v in members.items(): # members.items(): key, value 추출하기
print(f'{k}: {v}')
print('----------')
elif menu=='x':
print('----------')
print('프로그램을 종료합니다.')
print('----------')
break # loop 끝내기
검색 부분에서 쓰인 get 함수는 dictionary의 key를 부여하면 value가 리턴되는 기능으로, dict['key']와 같다.
즉, members.get(name)는 members[name]와 같다고 보면 된다.
차이점이 있다면 members[name]은 name이라는 key가 존재하지 않는다면 오류를 띄우고 프로그램을 종료시키지만,
members.get(name)는 name이라는 key가 존재하지 않을 때 오류가 나지 않고 대신 None을 리턴한다.
또 key가 존재하지 않을 때 None 대신 미리 정해둔 값을 리턴하도록 다음과 같이 설정할 수 있다.
members.get(name, '존재하지 않습니다.')
name이라는 key가 없다면 '존재하지 않습니다.'가 리턴된다.
실행 예시
회원정보 추가(a), 검색(f), 수정(u), 삭제(d), 목록(s), 종료(x): a
이름 입력: David
전화번호 입력: 503-203-9495
----------
*****David 입력 완료*****
David: 503-203-9495
----------
회원정보 추가(a), 검색(f), 수정(u), 삭제(d), 목록(s), 종료(x): f
검색할 이름 입력: David
----------
David: 503-203-9495
----------
회원정보 추가(a), 검색(f), 수정(u), 삭제(d), 목록(s), 종료(x): u
수정할 이름 입력: david
새로운 전화번호 입력: 702-303-9283
----------
*****David 수정 완료*****
David: 702-303-9283
----------
회원정보 추가(a), 검색(f), 수정(u), 삭제(d), 목록(s), 종료(x): s
----------
David: 702-303-9283
----------
회원정보 추가(a), 검색(f), 수정(u), 삭제(d), 목록(s), 종료(x): d
삭제할 이름 입력: dave
----------
Dave 회원은 존재하지 않습니다.
----------
회원정보 추가(a), 검색(f), 수정(u), 삭제(d), 목록(s), 종료(x): x
----------
프로그램을 종료합니다.
----------
Process finished with exit code 0
'Python Basic' 카테고리의 다른 글
Dictionary(딕셔너리) 활용한 로그인 기능, 3항 연산자 - Python(파이썬) (0) | 2020.12.09 |
---|---|
Dictionary(딕셔너리) 생성, 추가, 수정, 삭제 - Python(파이썬) (0) | 2020.12.09 |
Boolean 값(True/False)을 리턴하는 in ~, not in ~ - Python(파이썬) (0) | 2020.12.09 |
List to Tuple(리스트를 튜플로), Tuple to List(튜플을 리스트로): list(), tuple() - Python(파이썬) (0) | 2020.12.09 |
List Comprehension: 리스트 안에서 for loop 돌리기 - Python(파이썬) (0) | 2020.12.03 |