728x90
반응형
클래스
- class 클래스 이름:
- def init(): #생성자
- def 메소드 이름():… #메소드
모든 메소드에 사용 유무와 상관없이 self 파라미터가 첫번째로 들어가야 한다.
class Counter:
# count =0
count_a=0
def __init__(self):
self.count = 0
def increment(self):
self.count+=1
def print_count(self):
print(self.count)
a= Counter()
a.increment()
a.print_count()
1
a.count_a= 5
class Counter:
def __init__(self, initValue=0):
self.count= initValue
def increment(self):
self.count+=1
def print_count(self):
print(self.count)
a = Counter()
a.increment()
a.print_count()
1
b=Counter(100)
b.increment()
b.print_count()
101
class CustomerInfo:
def __init__(self):
self.customers = list()
self.index = -1
def print_menu(self):
return input('''
다음 중에서 하실 작업의 메뉴를 입력하세요.
I - 고객 정보 입력
P - 이전 고객 정보 조회
C - 현재 고객 정보 조회
N - 다음 고객 정보 조회
U - 현재 고객 정보 수정
D - 현재 고객 정보 삭제
Q - 프로그램 종료
''').upper()
def chk_input_data(self, msg, func):
while True:
x = input(msg).upper()
if func(x):
break
else:
print('잘못입력하셨습니다. 다시 입력 해 주세요.')
return x
def do_I(self):
print('고객정보 입력')
customer = { 'name':'', 'gender': '', 'email': '', 'year': 0 }
customer['name'] = self.chk_input_data('이름을 입력하세요 : ',
lambda x: True if len(x) > 2 else False)
customer['gender'] = self.chk_input_data('성별 (M/F)를 입력하세요 : ',
lambda x: True if x in ('M', 'F') else False)
customer['email'] = self.chk_input_data('이메일 주소를 입력하세요 : ',
lambda x: True if '@' in x else False)
customer['year'] = self.chk_input_data('출생년도 4자리 입력하세요 : ',
lambda x: True if len(x) == 4 and x.isdigit() else False)
self.customers.append(customer)
self.index = len(self.customers) - 1
def do_P(self):
print('이전 고객 정보 조회')
if self.index <= 0:
print('이전 데이타로 이동 불가.')
print(self.index)
else:
self.index -= 1
print(f'{self.index + 1}번째 고객 정보 입니다.')
print(self.customers[self.index])
def do_C(self):
print('현재 고객 정보 조회')
if self.index >= 0:
print(f'{self.index + 1}번째 고객 정보 입니다.')
print(self.customers[self.index])
else:
print('입력된 정보가 없습니다. 정보 입력은 I를 선택하세요.')
def do_N(self):
print('다음 고객 정보 조회')
if self.index >= (len(self.customers) - 1):
print('이후 데이터 이동 불가')
print(self.index)
else:
self.index += 1
print(f'{self.index + 1}번째 고객 정보 입니다.')
print(self.customers[self.index])
def do_U(self):
print('현재 고객 정보 수정')
customer = { 'name':'', 'gender': '', 'email': '', 'year': 0 }
customer['name'] = input('이름을 입력하세요 : ')
while True:
customer['gender'] = input('성별 (M/F)를 입력하세요 : ').upper()
if customer['gender'] in ('M', 'F'):
break
else:
print('잘못입력하셨습니다. 다시 입력 해 주세요.')
while True:
customer['email'] = input('이메일 주소를 입력하세요 : ')
golbang = '@' in customer['email']
if golbang:
break
else:
print('"@"를 포함한 이메일 주소를 입력하세요.')
while True:
customer['year'] = input('출생년도 4자리 입력하세요 : ')
check = len(customer['year']) == 4 and customer['year'].isdigit()
if check:
break
else:
print('잘 입력 해라....')
self.customers[self.index] = customer
def do_D(self):
print(f'현재 고객 정보{self.customers[self.index]["name"]} 삭제')
del self.customers[self.index]
# Main
def main():
start = CustomerInfo()
while True:
menu = start.print_menu()
if menu == 'I':
start.do_I()
elif menu == 'P':
start.do_P()
elif menu == 'C':
start.do_C()
elif menu == 'N':
start.do_N()
elif menu == 'U':
start.do_U()
elif menu == 'D':
start.do_D()
elif menu == 'Q':
print('안녕히가세요~')
break
else:
print('잘못 입력하셨습니다. 다시 입력 해주세요')
if __name__ == '__main__':
main()
728x90
반응형
'파이썬' 카테고리의 다른 글
유니코드 짧은 (1) | 2023.11.14 |
---|---|
도서 입고/대출반납 관리를 위한 키오스크 파이썬 프로그램 실습 (3) | 2023.11.13 |
파이썬은 객체지향 언어인가 절차지향 언어인가? (3) | 2023.11.09 |
raw string과 정규식. 파이썬 문자열 중에서.. (1) | 2023.11.09 |
파이썬 파일 읽기 쓰기 (2) | 2023.11.07 |