10. 클래스(class)/객체지향 이해하기

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

만다린망고 2023. 5. 23. 15:52
반응형

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

지난 시간에 만든 코드는 아래와 같습니다. 

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')


회원 추가하기, 회원 검색하기라는 두가지 기능을 수행하는 코드입니다. 오늘은 위 코드를 한번더 발전시키겠습니다. 

 

1) 초기 버튼에 '회원권 사용하기' 를 추가하세요.
2) 회원권 사용하기에서 회원번호를 물어보시고, 회원 번호를 입력받아 회원권을 차감되게 하세요. 
3) 회원권이 0개일 경우, 회원권이 없어서 차감이 불가능합니다 라고 띄우고 첫 화면으로 돌아가기. 
4) 회원권이 1개 이상일 경우, 회원권을 차감하고 '입장하십시오' 라고 띄우고 첫 화면으로 돌아가기. 

 

수정한 코드는 아래와 같습니다. 

 

#지난 코드를 수정하여 작성하세요.
#초기 버튼에 '회원권 사용하기' 를 추가하세요.
#회원권 사용하기에서 회원번호를 물어보시고, 회원 번호를 입력받아 회원권을 차감되게 하세요. 
#회원권이 0개일 경우, 회원권이 없어서 차감이 불가능합니다 라고 띄우고 첫 화면으로 돌아가기. 
#회원권이 1개 이상일 경우, 회원권을 차감하고 '입장하십시오' 라고 띄우고 첫 화면으로 돌아가기. 

mylist=[]
mnum=0

#def usem()

while True :

    print() #한 줄 띄기
    print('Adding member : press a')
    print('searching member : press b')
    print('using membership coupon : press c')
    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

    elif action=='c' :

        while True : 

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

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

            if num in first_values :
                

                if mylist[num]['mcount']<1 :
                    print('We cannot deduct it because you do not have a membership coupon.')
                    break

                else :
                    mylist[num]['mcount']=mylist[num]['mcount']-1

                    print()
                    print('below is your updated info')
                    print(mylist[num])
                    break                       

            else :
                print('none exist member')
                continue



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



지난시간에 비해 변경된 코드를 설명하겠습니다. 회원권을 사용하고 싶은 경우 c를 입력하라는 문구입니다. 

print('using membership coupon : press c')


c를 선택했을 때 작동하는 코드는 elif 를 이용하여 구현하였습니다. 회원번호를 먼저 입력하면 회원권이 사용되도록 하였습니다. 만약 회원권이 1개 미만일 경우 회원권이 없다는 메시지가 출력되도록 하였습니다. 

elif action=='c' :

    while True : 

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

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

        if num in first_values :


            if mylist[num]['mcount']<1 :
                print('We cannot deduct it because you do not have a membership coupon.')
                break

            else :
                mylist[num]['mcount']=mylist[num]['mcount']-1

                print()
                print('below is your updated info')
                print(mylist[num])
                break                       

        else :
            print('none exist member')
            continue

 

아래는 실행 예시입니다. 

 

Adding member : press a
searching member : press b
using membership coupon : press c
press button a

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

Adding member : press a
searching member : press b
using membership coupon : press c
press button c

what is the membership number? 0

below is your updated info
{'mnum': 0, 'name': 'kim', 'age': 15, 'sex': 'm', 'mcount': 21}
반응형