파이썬 질문입니다!!ㅠ 제발 도와주세요

파이썬 질문입니다!!ㅠ 제발 도와주세요

QA

파이썬 질문입니다!!ㅠ 제발 도와주세요

본문

l  피클 모듈로 저장한 전화번호부 파일을 읽는다.

l  사용자에게 이름을 입력 받는다.

l  사용자가 ""를 입력하면, 프로그램을 종료한다.

l  사용자가 전화번호부에 있으면, 전화번호를 출력한다.

l  사용자가 전화번호부에 없다면, 사용자를 사전(dictionary)에 추가하고 파일로 저장한다.

 

[프로그램 설계]

# 다음 기능을 함수로 분리하세요.

l  def readPhonebook:                  # 전화번호부 읽기

l  def writePhonebook:                 # 전화번호부 파일에 쓰기

l  def searchPhonebook(name)        # 전화번호부에서 이름을 검색한다.

l  def appendPhonebook(name)       # 전화번호부에 이름을 추가한다.

 

[전화번호부] pickle 모듈

import pickle

 

phoneDic = {

    "김갑순": "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***",

    "누구나": "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***",

    "김갑돌": "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***",

    "아무개": "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***"

}

 

print(phoneDic)

 

f = open("phonebook.p", 'wb')

pickle.dump(phoneDic, f)

f.close()

 

 

 

소스코드

 

def readPhonebook(): #피클 함수를 통해 저장한 전화번호 목록을 읽는다.
    import pickle
    f = open('phonebook.p', 'rb')
    phoneDic = pickle.load(f)
    f.close()
def writePhonebook(): # 전화번호부 파일에 쓰기
    import pickle
    global phoneDic
    phoneDic = { "김갑순": "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***", "누구나": "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***", "김갑돌": "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***", "아무개": "*** 개인정보보호를 위한 휴대폰번호 노출방지 ***" }
    print(phoneDic)
    f = open('phonebook.p', 'wb')
    pickle.dump(phoneDic, f)
    f.close()
def appendPhonebook(who): #이름을 입력받아서 저장
    import pickle
    with open('phonebook.p','wb') as fw:
        pickle.dump(','+'{'+who+' : xxx-xxxx-xxxx'+'}', fw)
        print(phoneDic)
def searchPhonebook(): #이름을 전화번호 목록 중에서 찾는다.
    import pickle
    f = open("phonebook.p", 'rb')
    phoneList = str(f.readlines())
    f.close()
    print(phoneList)

    phoneDic={}
    for phone in phoneList:
        nn = phone.split(' ')   # 리스트를 만든다.
        phoneDic[nn[0]] = nn[1]     # 사전에 더해준다.
        
    for key, value in phoneDic.items():
        print(key, value)

    while True:
        who = input("enter name :")
        number = phoneDic.get(who)
        if (number == None):
            print(who + ' : 전화번호부에 없습니다.')
            appendPhonebook(who)
            break
        elif (who == '\"\"'):
            break
        else:
            print('phone number:' + number)
readPhonebook()
writePhonebook()
searchPhonebook()

 

이렇게 작성하였는데 Traceback (most recent call last):
  File "C:/Users/hjdyd/OneDrive/바탕 화면/data/1.py", line 47, in <module>
    searchPhonebook()
  File "C:/Users/hjdyd/OneDrive/바탕 화면/data/1.py", line 29, in searchPhonebook
    phoneDic[nn[0]] = nn[1]     # 사전에 더해준다.
IndexError: list index out of range

이런 오류가 발생하네요...

이 질문에 댓글 쓰기 :

답변 1

답변을 작성하시기 전에 로그인 해주세요.
전체 208
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT