Skip to content

Commit 142da13

Browse files
authored
전화번호부(리스트 사용)
https://youtu.be/u9r3k28JjCQ
1 parent 7944538 commit 142da13

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed

phonebook.py

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
import pickle
2+
import os.path
3+
4+
def print_menu():
5+
print()
6+
print("="*50)
7+
print("1. 조회, 2. 입력, 3. 수정, 4. 삭제, 5. 종료")
8+
print("="*50)
9+
10+
def phonebook_search():
11+
global phonebook
12+
print("1. 조회")
13+
a = input("조회할 이름 또는 전화번호를 입력하세요: ").strip()
14+
idx = 0
15+
for i in phonebook:
16+
if a == "":
17+
print("[{}] {} {}".format(idx+1, i[0], i[1]))
18+
idx += 1
19+
elif a in i[0] or a in i[1]:
20+
print("[{}] {} {}".format(idx+1, i[0], i[1]))
21+
idx += 1
22+
if idx == 0:
23+
print("조회된 자료가 없습니다.")
24+
25+
print_menu()
26+
return
27+
28+
def phonebook_insert():
29+
global phonebook
30+
print("2. 입력")
31+
a = input("입력할 이름을 입력하세요: ").strip()
32+
b = input("입력할 전화번호를 입력하세요: ").strip()
33+
if a == "" or b == "":
34+
print("입력값이 부족합니다. 다시 입력해주세요.")
35+
phonebook_insert()
36+
return
37+
38+
phonebook.append([a, b])
39+
print("{} {} 입력 성공".format(a, b))
40+
print_menu()
41+
return
42+
43+
def phonebook_update():
44+
global phonebook
45+
print("3. 수정")
46+
a = input("이름을 입력하세요: ").strip()
47+
b = input("변경할 전화번호를 입력하세요: ").strip()
48+
if a == "" or b == "":
49+
print("입력값이 부족합니다. 다시 입력해주세요.")
50+
phonebook_update()
51+
return
52+
53+
idx = 0
54+
cnt = 0
55+
for i in phonebook:
56+
if i[0] == a:
57+
phonebook[idx][1] = b
58+
cnt += 1
59+
idx += 1
60+
61+
if cnt > 0:
62+
print("{} {} 수정 성공".format(a, b))
63+
else:
64+
print("{} 이름이 존재하지 않습니다.".format(a))
65+
66+
print_menu()
67+
return
68+
69+
def phonebook_delete():
70+
global phonebook
71+
print("4. 삭제")
72+
a = input("삭제할 전화번호를 입력하세요: ").strip()
73+
if a == "":
74+
print("입력값이 부족합니다. 다시 입력해주세요.")
75+
phonebook_delete()
76+
return
77+
78+
tmp_list = []
79+
80+
for i in phonebook:
81+
if not i[1] == a:
82+
tmp_list.append([i[0], i[1]])
83+
84+
if len(tmp_list)>0:
85+
phonebook.clear()
86+
phonebook = tmp_list
87+
88+
print("{} 삭제 성공".format(a))
89+
else:
90+
print("{} 번호가 존재하지 않습니다.".format(a))
91+
92+
print_menu()
93+
return
94+
95+
def save_phonebook():
96+
global phonebook
97+
with open("phonebook.pickle", "wb") as f:
98+
pickle.dump(phonebook, f, pickle.HIGHEST_PROTOCOL)
99+
100+
"""
101+
[
102+
['홍길동','010-1234-5678'],
103+
['김철수','010-1234-5678'],
104+
['김대한','010-1111-2222']
105+
]
106+
"""
107+
108+
phonebook = []
109+
110+
if os.path.exists("phonebook.pickle"):
111+
with open("phonebook.pickle", "rb") as f:
112+
phonebook = pickle.load(f)
113+
114+
print("파이썬 전화번호부 Ver 1.0")
115+
print_menu()
116+
117+
while True:
118+
m = input("기능을 선택하세요.(1~5 입력) ").strip()
119+
if m == "": continue
120+
121+
if m == "1":
122+
phonebook_search()
123+
124+
elif m == "2":
125+
phonebook_insert()
126+
save_phonebook()
127+
128+
elif m == "3":
129+
phonebook_update()
130+
save_phonebook()
131+
132+
elif m == "4":
133+
phonebook_delete()
134+
save_phonebook()
135+
136+
elif m == "5":
137+
save_phonebook()
138+
break

0 commit comments

Comments
 (0)