파이썬 질문입니다!!ㅠ 제발 도와주세요
본문
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
이런 오류가 발생하네요...