강의에 나오는 문제들을 보면서 손으로는 열심히 코드를 따라 쳐보고 안의 내용들도 바꿔보고 하는데 막상 처음부터 혼자서 코드를 쓰라고 한다면 내가 할 수 없을 것 같다.
처음부터 내가 코드를 짤 수 있는 능력을 키우려면 더욱 더 노력과 연습의 시간이 필요할 것 같다. 당장은 진도 따라가기가 너무 바쁘고 힘들어서 따로 시간을 더 빼기가 벅차니 문제 안에서 최대한 응용을 해보는 쪽으로 해봐야 겠다.
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, 구매 개수: ------------------------------------------------------
정상적으로 결제되지 않은 항목들을 따로 묶어서 보여주는 영수증 처리이다.
예외처리를 잘 해놔야 오류없이 다른 부분이라도 실행할 수 있기 때문
연습문제를 풀어보는 시간을 갖었다라고 말하기도 뭐한게..
사실 강의를 보면서 코드를 따라치기도 바쁜 시간이었기 때문이었다.
하지만 그 과정을 겪으면서 내가 느낀 점은,
'배우고 까먹고 배우고 까먹고...' 이 반복의 고리를 어떻게 끊어야 할까 고민하게 됐다는 점이다.
분명히 배웠던 내용인데도 불구하고 막상 응용해서 문제랑 같이 보려고하면 생각이 안난다거나 응용하는 법을 모른다거나 부딪히는 포인트가 너무 많았기 때문이었다. 매일 매일이 겸손의 시간이었다.
언제쯤 탑이 무너지지 않고 쌓아지기 시작할지 기다려진다...!!!
더 나은 미래를 위해서 더 노력하자.