본문 바로가기
10. 클래스(class)/객체지향 이해하기

[파이썬 클래스와 객체지향] 3. 절차지향 2단계

by 만다린망고 2023. 5. 21.
반응형

우리는 헬스장 회원관리 예제를 이용하여 파이썬 객체지향을 공부하고 있습니다. 지난시간에는 절차지향 방식으로 코드를 만들었습니다. 지난 시간에 만든 코드는 아래와 같습니다. 

 

mylist=[]

while True :

    print() #한 줄 띄기
    #inputs
    name = input('enter your name ')
    name = name.lower() # force lowercase
    age = int(input('enter your age '))
    sex = input('enter your sex ')
    sex = sex.lower() # force lowercase
    mcount=int(input('enter your membership count ')) #membership count

    #define dict
    dict={'name':name,'age':age,'sex':sex,'mcount':mcount}

    #add in list
    mylist.append(dict)

    #print info
    print('Below is your information')
    print(dict)

 

회원의 이름, 나이, 성별, 회원권 횟수를 입력받아 딕셔너리 형태로 리스트원소에 추가하는 코드입니다. 오늘은 위 코드를 발전시킬 것입니다. 아래와 같이 발전시켜 봅시다. 

 

1) 초기 선택 버튼을 회원추가(a), 회원검색(b) 으로 나누고 if 문을 이용하여 각각의 기능을 구현하시오. 
2) 버튼 a,b 가 아닌 값 입력시 '버튼을 다시 눌러주세요' 출력하고 처음으로 돌아가기

3) 0부터 순서대로 회원번호가 생성되도록 하세요. 

4) 회원 검색은 회원 번호를 입력하면 정보가 출력되도록 하시오. 

5) 회원번호에 숫자가 아닌 값 입력시 숫자를 입력하세요 라고 출력하기
6) 없는 회원번호 입력 시 '존재하지 않는 회원입니다' 회원번호 입력받는 창으로 돌아가기. 

 

코드는 아래와 같이 발전시킬 수 있습니다. 

 

mylist=[]
mnum=0

while True :

    print() #한 줄 띄기
    print('Add member : press a')
    print('search member : press b')
    action=input('press button ')

    if action=='a' :

        print() #한 줄 띄기
        #inputs
        name = input('enter your name ')
        name = name.lower() # force lowercase
        age = int(input('enter your age '))
        sex = input('enter your sex ')
        sex = sex.lower() # force lowercase
        mcount=int(input('enter your membership count ')) #membership count

        #define dict
        dict={'mnum':mnum,'name':name,'age':age,'sex':sex,'mcount':mcount}

        #add in list
        mylist.append(dict)

        #print info
        print('Below is your information')
        print(dict)

        mnum=mnum+1


    elif action=='b' :

        while True : 

            print() #한 줄 띄기
            mn = int(input('what is the membership number? ')) #input 값 숫자에 넣기

            first_values=[]
            for my_dict in mylist:
                first_values.append(list(my_dict.values())[0])

            if mn in first_values :
                print(mylist[mn])
                break
            else :
                print('none exist member')
                continue

    else :
        print()
        print('no button exist')

 

코드를 나눠서 설명하겠습니다. 먼저 비어있는 리스트를 정의합니다. mnum도 정의해줍니다. mnum 은 회원번호입니다. 뒤에서 어떻게 사용되는지 살펴봅시다. 

 

mylist=[]
mnum=0

 

먼저 버튼을 입력받습니다. 맴버 추가는 a를 누르고, 맴버 검색은 b를 누르라는 문자열을 출력하고 input 함수로 버튼값을 받습니다. 

 

    print() #한 줄 띄기
    print('Add member : press a')
    print('search member : press b')
    action=input('press button ')

 

나머지 코드는 어떤 버튼값을 입력받았냐에 따라 if 문으로 나뉩니다. 먼저 a라는 값을 입력받았을경우 입니다. a는 맴버 추가입니다. 이름, 나이 성별, 맴버쉽 개수를 입력받습니다. 여기까지는 지난 코드와 동일합니다. 입력받은 값을 딕셔너리에 넣어줄 때 mnum 도 넣어줍니다. 첫번째로 추가되는 회원은 0번이고, mnum=mnum+1 을 이용하여 회원번호를 하나씩 증가시킵니다. 

 

if action=='a' :

    print() #한 줄 띄기
    #inputs
    name = input('enter your name ')
    name = name.lower() # force lowercase
    age = int(input('enter your age '))
    sex = input('enter your sex ')
    sex = sex.lower() # force lowercase
    mcount=int(input('enter your membership count ')) #membership count

    #define dict
    dict={'mnum':mnum,'name':name,'age':age,'sex':sex,'mcount':mcount}

    #add in list
    mylist.append(dict)

    #print info
    print('Below is your information')
    print(dict)

    mnum=mnum+1

 

다음은 elif 이용하여 버튼값 b를 입력받았을 경우의 코드를 만들어줍니다. 맴버를 검색하는 코드를 만들어야 합니다. 먼저 어떤 회원번호의 맴버를 검색할지 묻고 값을 입력받습니다. for 문을 이용하여 mylist 에 들어있는 회원번호만 fist_values 라는 리스트에 입력합니다. 이후 우리가 입력받은 회원번호가 first_values 에 있는지 확인합니다. 있을 경우 해당 번호의 딕셔너리 정보를 출력하고, 만약 없다면 '존재하지 않는 회원'이라는 문구를 출력합니다. 

 

elif action=='b' :

    while True : 

        print() #한 줄 띄기
        mn = int(input('what is the membership number? ')) #input 값 숫자에 넣기

        first_values=[]
        for my_dict in mylist:
            first_values.append(list(my_dict.values())[0])

        if mn in first_values :
            print(mylist[mn])
            break
        else :
            print('none exist member')
            continue

 

마지막은 버튼 a도 b도 아닌 다른 값이 입력되었을 경우 처리하는 코드입니다. else 를 이용하여 그런 버튼은 없다고 출력해줍니다. 

 

else :
    print()
    print('no button exist')

 

아래는 실행 예시입니다. 

 

enter your name kim
enter your age 15
enter your sex m
enter your membership count 55
Below is your information
{'mnum': 0, 'name': 'kim', 'age': 15, 'sex': 'm', 'mcount': 55}

Add member : press a
search member : press b
press button b

what is the membership number? 0
{'mnum': 0, 'name': 'kim', 'age': 15, 'sex': 'm', 'mcount': 55}

Add member : press a
search member : press b

 

반응형

댓글