테스트 사이트 - 개발 중인 베타 버전입니다

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

마루마루임당 3년 전 조회 1,821

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

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

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

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

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

 

[프로그램 설계]

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

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

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

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

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

 

[전화번호부] pickle 모듈

import pickle

 

phoneDic = {

    "김갑순": "010-2222-5678",

    "누구나": "010-1234-1234",

    "김갑돌": "010-1111-1234",

    "아무개": "010-3333-4444"

}

 

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 = { "김갑순": "010-2222-5678", "누구나": "010-1234-1234", "김갑돌": "010-1111-1234", "아무개": "010-3333-4444" }
    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개

3년 전

nn = phone.split(' ')   # 리스트를 만든다.

 

여기에서 phone 하고 nn 을 보세요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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

로그인