패스트캠퍼스 환급챌린지 22일차 미션 (2월 22일) : 파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 수강 후기
by 쿠키토끼2024. 2. 22.
01. 제목
패스트캠퍼스 환급챌린지 22일차 미션 (2월22일) : 파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 Online 수강 후기
02. 포스팅 본문 (학습 일기) 가이드
1. 학습 인증샷 2장 이상 포함
카메라로 직접 촬영한 수강 인증 사진 (캡쳐X)
2. 학습 후기700자이상 (공백 제외)
오늘은 딕셔너리와 챕터8의 클래스와 객체를 배웠다.
딕셔너리(Dictionary)의 학습목표는 딕셔너리의 특징, 딕셔너리 만들기, 딕셔너리 접근하기, 딕셔너리 할당하기, 삭제하기, 딕셔너리 함수, 딕셔너리 중첩까지 배우는 것이었다.
딕셔너리하면 영어 그대로 사전이라는 의미라서 배우기 전에는 뭔가 대용량적인 광범위한 데이터를 보관할 때 쓰는 건가 싶었다. 이전 시간에 중괄호 { } 를 쓰는 게 딕셔너리라는 것만 배우고 넘어 갔는데 어떤 쓰임이 있는지 궁금했다.
일단 딕셔너리의 특징은 시퀀스 자료형(순서가 있는 자료형)이다. 키와 데이터를 가지고 있는 사전형 자료형이며 사전형태의 자료를 만들 때 편리하다. 여기서 사전형태란 것은 단어와 뜻이 있는 형태의 자료라는 것이다.
딕셔너리를 만드는 법은 딕셔너리 이름을 써주고 할당 연산을 넣고 앞시간에 배웠던 중괄호에 묶어 중괄호 안에 키와 데이터값이 콜론(:)으로 쌍을 이루고 있다. 값들은 콤마로 구분되어 진다. 나열하자면
딕셔너리 = {키1:데이터1, 키2:데이터2} # 이 형태가 딕셔너리를 만드는 형태이다.
예를 들어
1) stock = {"삼성전자":82000, "LG전자":150000} # 키 값에는 문자형태 말고도 숫자, 불린형태도 들어갈 수 있다.
2) stock = {
"삼성전자" : [81000, 81500, 82000, 81500, 82000], # 데이터 값을 리스트로 넣을수 있다.
"LG전자" : (150000, 149000, 148000, 151000, 152000) # 데이터 값을 튜플로 넣을수도 있다.
}
딕셔너리 접근하는 법은
딕셔너리["키"] # 그 키에 해당하는 데이터 값이 나온다. 예를 들어
stock["삼성전자"] 라고 한다면 82000 값이 나온다.
다음은 딕셔너리 할당하기와 삭제하기 이다.
먼저 할당하기는 딕셔너리["키"] = 데이터 형태로 데이터가 키 값에 할당하게 된다.
예를 들어 stock["삼성전자"] = 85000 이런식으로 적용할 수 있다.
삭제하기는 del 딕셔너리["키"] 형태로 예를 들어 del stock["삼성전자"] 로 해서 삼성전자 키값을 삭제할 수 있다.
딕셔너리 함수는 예를 들어
stock = {
"삼성전자" : 82000,
"SK하이닉스" : 123000,
"NAVER" : 370000,
"카카오" : 133000,
}
이런 딕셔너리 데이터가 있다면 여기서
1) 키와 데이터 쌍은 stock.items()
2) 키는 stock.keys()
3) 데이터는 stock.values()
로 구할 수 있다.
다음 챕터8의 클래스(class)의 학습 목표는 클래스와 객체의 개념, 클래스 만들기, 클래스 사용하기이었다.
먼저 클래스와 객체의 개념이 가장 중요한데 이 부분을 이해하고 넘어가야 왜 클래스를 만들고 사용하는지에 대해 파악해서 쓸 수 있기 때문이다.
클래스는 객체를 만들기 위한 설계도 이고 객체는 설계도로부터 만들어낸 제품으로 보면 된다. 예를 들어 빵틀이 있고 거기에 알맞은 재료를 넣어 빵이 나온다고 가정하면 여기서 빵틀은 설계도 즉 클래스이고, 빵 자체는 제품인 즉 객체가 된다.
클래스에는 속성와 메서드가 포함되어 있다. 즉 클래스는 속성과 메서드의 집합이라 볼 수 있다.
속성에는 어떠한 특징들을 나타낸것이고 아래 예제를 따라한 부분을 예를 들면(롤 게임) 체력, 공격력, 방어력, 이동속도 와 같은 것이 속성이 된다. 메서드는 어떠한 동작들을 말하며(함수) 마찬가지로 예를 들면(롤 게임) 위치로 이동하기, 공격하기, 아이템 사용하기, 귀환하기 등과 같은 것이 메서드가 된다.
이러한 형태의 클래스를 가장 간단한 형태로 만드는 법은
class 클래스이름:
def 메서드이름(self):
명령블록
이런식으로 만들고 예를 들면,
정의하기
class Monster:
def say(self): # self에 대해서는 다음 시간에 자세히 / 모든 메서드의 매개변수 첫번째에는 self가 들어가야한다
print("나는 몬스터다")
정의된 클래스 호출하기
인스턴스 = 클래스이름() # 인스턴스라는 특정한 변수에 클래스이름을 넣어준다.
인스턴스.메서드()
예)
goblin = Monster() # 인스턴스는 클래스랑 연관지어서 많이 표현한다. 몬스터 클래스로 부터 만들어진 고블린 인스턴스, 또는 고블린 객체로 불린다. 인스턴스와 객체를 비슷한 느낌으로 생각하면 된다.
goblin.say()
아래는 실습 예제를 따라하고 강사님 설명 부분이다.
[딕셔너리개념]
# 딕셔너리
# : 사전형태의 자료형
# - 딕셔너리 만들기
stock_a= {"삼성전자" : 82000, "LG전자" : 150000} # 기본형태
# 데이터 값이 두 개 이상일 때
stock_b= {
"삼성전자" : [81000, 81500, 82000, 81500, 82000], # 리스트 형태
"LG전자" : (15000, 149000, 148000, 151000, 152000) # 튜플 형태
}
# 중첩
stock_c= {
"삼성전자" : { # 딕셔너리 안에 또 딕셔너리를 집어넣을 수 있는게 중첩이다.
"현재가" : 82000,
"보유수량" : 5,
"매수단가" : 81000
}
} # 하나의 키값에 대해서 여러개의 키값을 넣을 수 있으면 그 키값을 설명할 수 있어서 효율적이다.
print(stock_a)
print(stock_b) # Tip ) 위 복사하고자 하면 [{]alt + shift + 아래화살표] 하면된다, 여러줄 복사하려면 원하는 여러줄 블록을 잡고 그대로 단축키 쓰면된다.
print(stock_c)
# - 딕셔너리 접근하기
print(stock_a["삼성전자"]) # 그 키값의 데이터가 나오게 된다 -> 82000
print(stock_c["삼성전자"]["보유수량"]) # 중첩된 딕셔너리 키값 -> 5
# - 딕셔너리 할당하기
stock_a["삼성전자"] =85000
print(stock_a)
# - 딕셔너리 삭제하기
delstock_a["LG전자"]
print(stock_a)
# - 딕셔너리 함수
stock_d= {
"삼성전자" : 82000,
"SK하이닉스" : 123000,
"NAVER" : 370000,
"카카오" : 133000
}
# items() : 키와 데이터 쌍을 반환 (딕셔너리 객체형태로 반환됨)
print(stock_d.items())
foriteminstock_d.items(): # items에 해당하는 것들이 시퀀스자료형(순서를 가진 자료형)이기 때문에 for in 문에 들어갈 수 있다
print(item) # 튜플 형태로 키와 데이터가 구분되어있음 / 키값만 출력하고 싶다면 print(item([0]), 데이터만 출력하고 싶다면 print(item[1])
# key() : 키
forkeyinstock_d.keys():
print(key)
# values() : 데이터
forvalueinstock_d.values():
print(value)
[클래스 개념]
# 클래스를 사용하는 이유
champion1_name="럭스"
champion1_health=800
champion1_attak=90
print(f"{champion1_name}님 소환사의 협곡에 오신 것을 환영합니다.")
champion2_name="룰루"
champion2_health=700
champion2_attak=95
print(f"{champion2_name}님 소환사의 협곡에 오신 것을 환영합니다.")
champion3_name="아무무"
champion3_health=650
champion3_attak=90
print(f"{champion3_name}님 소환사의 협곡에 오신 것을 환영합니다.")
defbasic_attack(name, attack):
print(f"{name} 기본공격 {attack}")
basic_attack(champion1_name, champion1_attak)
basic_attack(champion2_name, champion2_attak)
basic_attack(champion3_name, champion3_attak)
print("============= 클래스를 사용한 경우 =============")
classChampion:
def__init__(self, name, health, attack):
self.name=name
self.health=health
self.attack=attack
print(f"{name}님 소환사의 협곡에 오신 것을 환영합니다!")
defbasic_attack(self):
print(f"{self.name} 기본공격 {self.attack}")
lux=Champion("럭스", 800, 90)
lulu=Champion("룰루", 700, 95)
amumu=Champion("아무무", 650, 90)
lux.basic_attack()
lulu.basic_attack()
amumu.basic_attack()
[클래스 만들기]
classMonster:
defsay(self):
print("나는 몬스터다!")
goblin=Monster()
goblin.say()
# 파이썬에는 자료형도 클래스다.
a=10
b="문자열객체"
c=True
print(type(a)) #<class 'int'> 인트형 클래스, 객체
print(type(b)) #<class 'str'> 스트링 클래스, 객체
print(type(c)) #<class 'bool'> 불린형 클래스, 객체
print(b.__dir__()) #문자열 객체에 대해서 메서드가 어떤 것이 있는지 확인, b객체(문자열 객체) 안에 있는 메서드 리스트들을 확인 가능