[제로베이스_데이터 취업 스쿨] 스터디노트 08

박소현·2023년 8월 11일
0

데이터 공부

목록 보기
9/31

강의에 나오는 문제들을 보면서 손으로는 열심히 코드를 따라 쳐보고 안의 내용들도 바꿔보고 하는데 막상 처음부터 혼자서 코드를 쓰라고 한다면 내가 할 수 없을 것 같다.
처음부터 내가 코드를 짤 수 있는 능력을 키우려면 더욱 더 노력과 연습의 시간이 필요할 것 같다. 당장은 진도 따라가기가 너무 바쁘고 힘들어서 따로 시간을 더 빼기가 벅차니 문제 안에서 최대한 응용을 해보는 쪽으로 해봐야 겠다.

💦 클래스를 이용한 헬스장 회원가입

class Member:
    def __init__(self, i, p):
        self.id = i
        self.pw = p
/
class MemberRepository:
/
    def __init__(self):
        self.members = {}
/
    def addMember(self, m):
        self.members[m.id] = m.pw
/
    def loginMember(self, i, p):
        isMember = i in self.members
/
        if isMember and self.members[i] == p:
            print(f'{i}: 오늘도 운동 완료!!')
/
        else:
            print(f'{i}: 회원님 이러시기에요?!!')
/
    def removeMember(self, i, p):
        if i in self.members and self.members[i] == p:
            del self.members[i]
            print(f'{i}: 탈퇴한 회원입니다!')
/
    def printMembers(self):
        for mk in self.members.keys():
            print(f'ID: {mk}')
            print(f'PW: {self.members[mk]}')
import member as mb
/
mems = mb.MemberRepository()
/
for i in range(3):
    mId = input('아이디 입력: ')
    mPw = input('비밀번호 입력: ')
    mem = mb.Member(mId, mPw)
    mems.addMember(mem)
/
mems.printMembers()
/
mems.loginMember('abc@gmail.com', '1234')
mems.loginMember('python@gmail.com', '5678')
mems.loginMember('iwant@rest.com', '9900')
/
mems.removeMember('abc@gmail.com','1234')
/
mems.printMembers()
아이디 입력: abc@gmail.com
비밀번호 입력: 1234
아이디 입력: python@gmail.com
비밀번호 입력: 5678
아이디 입력: iwant@rest.com
비밀번호 입력: 9999
ID: abc@gmail.com
PW: 1234
ID: python@gmail.com
PW: 5678
ID: iwant@rest.com
PW: 9999
abc@gmail.com: 오늘도 운동 완료!!
python@gmail.com: 오늘도 운동 완료!!
iwant@rest.com: 회원님 이러시기에요?!!
abc@gmail.com: 탈퇴한 회원입니다!
ID: python@gmail.com
PW: 5678
ID: iwant@rest.com
PW: 9999

원래 회원가입 후
mems.removeMember('abc@gmail.com','1234')
이 코드 뒤에는 로그인이 되면 안되는데 계속 로그인 성공 메세지가 나왔다.
그래서 if i in self.members and self.members[i] == p: 아이디와 비밀번호 두가지를 검증하는 내용으로 바꿔야 했다.

📌 클래스 상속 - 스마트폰 정보

class NormalPhone:
/
    def __init__(self, i=17, c='black', r='full-HD'):
        self.inch = i
        self.color = c
        self.resolution = r
        self.ai = 'off'
        self.smartPhone = 'off'
/
    def turnOn(self):
        print('power on')
/
    def turnOff(self):
        print('power off')
/
    def printPhoneInfo(self):
        print(f'inch: {self.inch}inch')
        print(f'color: {self.color}')
        print(f'resolution: {self.resolution}')
        print(f'ai: {self.ai}')
        print(f'smartPhone: {self.smartPhone}')
/
class phone4k(NormalPhone):
/
    def __init__(self, i, c, r='4k'):
        super().__init__(i, c, r)
/
    def setSmartPhone(self, s):
        self.smartPhone = s
/
class phone8k(NormalPhone):
/
    def __init__(self, i, c, r='8k'):
        super().__init__(i, c, r)
/
    def setSmartPhone(self, s):
        self.smartPhone = s
/
    def setAiPhone(self, a):
        self.aiPhone = a
import smartPhone as sp
/
mysp = sp.phone4k('10', 'baby-blue', '4k')
mysp.setSmartPhone('on')
mysp.turnOn()
mysp.printPhoneInfo()
mysp.turnOff()
/
friendsp = sp.phone4k('8', 'indian-pink', '4k')
friendsp.setSmartPhone('off')
friendsp.turnOn()
friendsp.printPhoneInfo()
friendsp.turnOff()
/
my8ksp = sp.phone8k('7', 'white', '8k')
my8ksp.setSmartPhone('on')
my8ksp.setAiPhone('on')
my8ksp.turnOn()
my8ksp.printPhoneInfo()
my8ksp.turnOff()
/
friendmy8ksp = sp.phone8k('9', 'red', '8k')
friendmy8ksp.setSmartPhone('on')
friendmy8ksp.setAiPhone('off')
friendmy8ksp.turnOn()
friendmy8ksp.printPhoneInfo()
friendmy8ksp.turnOff()
power on
inch: 10inch
color: baby-blue
resolution: 4k
ai: off
smartPhone: on
power off
/
power on
inch: 8inch
color: indian-pink
resolution: 4k
ai: off
smartPhone: off
power off
/
power on
inch: 7inch
color: white
resolution: 8k
ai: off
smartPhone: on
power off
/
power on
inch: 9inch
color: red
resolution: 8k
ai: off
smartPhone: on
power off

강의에 나온건 TV였는데 내가 다른걸로 바꿔볼까 하고 스마트폰으로 내용을 바꿨다가 핸드폰에 대해서 잘 알지 못해 4k, 8k 같은 내용은 그대로 남게 됐다.
클래스 상속을 통해서 속성들을 가져오되 그 기능들이 있다고 해서 다 쓰지는 않았다.

예외처리로 계산하기

문제가 있는 항목은 따로 묶어서 보여주기

goods1 구매 개수: 2
goods2 구매 개수: 므이
goods3 구매 개수: 
goods4 구매 개수: 5
goods5 구매 개수: 3
invalid literal for int() with base 10: '므이'
invalid literal for int() with base 10: ''
------------------------------------------------------
총 구매 금액: 15100-------------미결제 항목---------------------------------
상품: g2, 	 구매 개수: 므이
상품: g3, 	 구매 개수: 
------------------------------------------------------

정상적으로 결제되지 않은 항목들을 따로 묶어서 보여주는 영수증 처리이다.
예외처리를 잘 해놔야 오류없이 다른 부분이라도 실행할 수 있기 때문

🧐 오늘 공부를 마치며..

연습문제를 풀어보는 시간을 갖었다라고 말하기도 뭐한게..
사실 강의를 보면서 코드를 따라치기도 바쁜 시간이었기 때문이었다.
하지만 그 과정을 겪으면서 내가 느낀 점은,
'배우고 까먹고 배우고 까먹고...' 이 반복의 고리를 어떻게 끊어야 할까 고민하게 됐다는 점이다.
분명히 배웠던 내용인데도 불구하고 막상 응용해서 문제랑 같이 보려고하면 생각이 안난다거나 응용하는 법을 모른다거나 부딪히는 포인트가 너무 많았기 때문이었다. 매일 매일이 겸손의 시간이었다.
언제쯤 탑이 무너지지 않고 쌓아지기 시작할지 기다려진다...!!!
더 나은 미래를 위해서 더 노력하자.

profile
아직은 모든게 무섭고 모르는거 투성이지만, 나중엔 멋진 으른이 되야지!

0개의 댓글