- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 동적할당
- C++
- 프로그래밍 입문
- 정렬
- android studio
- 연결리스트
- 로그인
- 백준
- firebase google
- 배열
- 자바
- 안드로이드 스튜디오
- 구글 로그인
- 안드로이드
- Java
- 컴퓨터공학과
- oauth
- 파이썬
- 코딩테스트
- sql
- 알고리즘
- 공유대학
- C언어
- til
- python
- 프로그래머스
- 자료구조
- 비주얼 베이직
- Firebase
Archives
코딩하는 해달이
[Python] numpy를 이용해서 전화번호부 만들기 본문
Version & 참고 링크
더보기
Version
-운영체제 : Window 11
-PYTHON : python 3.10.6 64-bit
-Visual Studio Code : Visual Studio Code 1.70.1(user setup)
오늘은 다른 과의 친구가 파이썬으로 전화번호부를 생성하는 프로그램을 짜는걸 도와달라고 해서 아는대로 짜 보았습니다.
전화번호부의 구성은 전화번호와 성이 한쌍을 이룹니다.
총 메뉴는 7개이고 각 메뉴의 기능은 아래와 같습니다.
1번 전화번호 랜덤으로 입력받은 숫자만큼 생성
2번 랜덤으로 생성한 전화번호를 csv파일에 저장
3번 전화번호가 들어있는 csv파일을 로드함 (출력 X)
4번 로드한 전화번호 출력
5번 전화번호와 성을 입력받아 csv에 추가
6번 전화번호 뒷자리 4자리를 입력받아 csv파일에서 같은 전화번호와 성 출력
7번 종료
이 기능들을 바탕으로 파이썬을 가지고 전화번호부를 만들어보았습니다.
from asyncio.windows_events import NULL
from logging import exception
from re import T
from xml.etree.ElementTree import tostring
import numpy as np
import csv
def print_menu(): # 메뉴 생성 함수
print("="*20)
print("1. Generate Number")
print("2. Save Number")
print("3. Load Number")
print("4. Print Number")
print("5. Add Number")
print("6. Find Number")
print("7. Exit")
print("="*20)
def generate_number() : # 인원수를 입력 받아 랜덤 전화번호 생성 후 numpyList 변수에 대입
global my_arr
n = int(input("Number of people = "))
fName_arr = [ "KIM", "LEE", "PARK", "JANG", "CHOI"]
try :
for i in range(n) :
number = '010-'
fName = np.random.choice(fName_arr) # list 중 랜덤으로 하나 고르기
for j in range(4) :
number += str(np.random.randint(10)) # (0 ~ 9 사이의 숫자 하나 생성)*4
number += "-"
for j in range(4) :
number += str(np.random.randint(10)) # (0 ~ 9 사이의 숫자 하나 생성)*4
my_list = np.array([[number,fName.upper()]])
my_arr = np.append(my_arr, my_list, axis=0)
print("Generation completed...")
except exception as e :
print("Generation failed...")
def Save_number() : # numpyList 에 대입되어 있는 랜덤 전화번호를 csv파일에 저장
global my_arr
try :
np.savetxt('test.csv', my_arr, fmt = '%s', delimiter=',', header='Phone Book')
print("Save completed...")
except exception as e :
print("Save failed...")
def Load_number() : # 저장한 csv파일에 있는 전화번호를 numpyList 변수로 Load
try :
my_arr = np.genfromtxt("test.csv", delimiter=',', skip_header = 1, dtype=np.string_)
print("Load completed...")
except exception as e :
print("Load failed...")
return my_arr
def Print_number(my_arr) : # numpyList 에 대입되어있는 전화번호 출력
print(my_arr)
def Add_number() : # 전화번호와 성을 입력받아 csv파일에 추가 입력
number = str(input("Phone Number XXX-XXXX-XXXX = ?"))
name = str(input("Name = ?"))
my_list = np.array([number,name.upper()])
f = open('test.csv','a', newline='')
wr = csv.writer(f)
wr.writerow(my_list)
def Find_number() : # 전화번호 뒤 4자리를 입력받아 csv파일에서 같은 전화번호와 성 출력
bnum = str(input("Last 4 number, XXXX = ?"))
file = open("test.csv", 'r')
rdr = csv.reader(file)
next(rdr) # 첫 줄 건너뛰기
for line in rdr :
spnum = line[0].split('-')
if spnum[2] == bnum :
print(line)
print("Find complited...")
file.close()
break
else :
continue
my_arr = np.empty((0,2), dtype=np.string_)
while True :
print_menu()
id_case = int(input("Choose Menu(1~7) = "))
if( id_case == 1 ) :
generate_number()
elif( id_case == 2 ) :
Save_number()
elif( id_case == 3 ) :
my_arr = Load_number()
elif( id_case == 4 ) :
Print_number(my_arr)
elif( id_case == 5 ) :
Add_number()
elif( id_case == 6 ) :
Find_number()
else:
print("Good Bye!") # 종료
break
반응형
'개인 공부 > Python' 카테고리의 다른 글
[Python] turtle heart (잡다한것) (0) | 2022.11.28 |
---|---|
[코딩역량인증시험 PCCE] 시험 후기 (0) | 2022.09.18 |
파이썬 - Flask를 이용해서 JSON인코딩한 MySql 데이터를 Android Studio에 보내기 (1) (0) | 2022.08.16 |
파이썬 - flask 웹 서버 환경 구축 (env, 가상 환경) (0) | 2022.08.13 |
파이썬 Could not be resolved * from source 모듈 인식 해결 방법 (0) | 2022.08.10 |
Comments