1. Iterator
- 메모리 효율적 사용
- 한 번에 하나의 요소만을 메모리에 유지하므로 대용량 데이터 처리시 유용하다.
- 파이토치가 적극적으로 사용한다.
- for문과 같은 결과를 주지만 메모리 사용량이 훨씬 줄어듬
next, generator (대용량 데이터 처리시 중요함)
https://miki3079.tistory.com/52
2. import function
아래는 import 하는 법을 상술한 것이다.
2-1. common folder에 utils.py, constant.py생성
2-2. common/constant.py, common/utils.py 작성
- annotation 쓰는 법
# constant.py
import enum
class TEST(enum.Enum):
A = enum.auto()
# ===============================================
# utils.py
from .constant import TEST
def get_test(p_test:TEST) -> str: # <== annotation
return p_test.name
get_test
# a:int #<== annotation (hint)
# hint, not error
def add(a:int, b:int):
return a+b
def get_test(p_test:TEST): # <== annotation
print('hi')
return p_test.name
2-3. import 테스트
# common 폴더 밖에서 임의 파일 생성
from common.constant import TEST
from common import utils as u # alias, 별칭
u.get_test(TEST.A) # 'hi' A
3. 테마 색상으로 데이터 구별하기
글꼴 테마를 정했을 때, 색깔별로 클래스,함수, 변수, 명령어 등 다 다르게 표기된다. 이를 유의하여 보면 좀 더 명료하게 프로그램을 볼 수 있다.
4. Class
건축가가 아파트 설계도를 만들어서 아파트를 만든다.
= 개발자가 클래스를 설계하여 객체를 만든다.
4-1. 객체 생성
4-2. 클래스 함수
5. 상속
- 부모 자식간의 관계
6. 기사와 마법사 싸움
# 1.기사와 마법사 캐릭터 구현
# 1-1. 기사
# (1) 변수: 체력
# (2) 함수: 공격(10~40), 방어 (체력0 이면 사망)
# 1-2. 마법사
# (1) 변수: 체력, 마나
# (2) 함수: 공격(10~40,마나소모 20), 방어 (10~40,마나소모 20,체력0 이면 사망), 힐(마나소모 20)
# 기사는 공격이나 방어 중 하나, 마법사는 공격,방어,힐 중 하나 선택해서 활동함.
import random
class Knights:
def __init__(self,hp=100):
self.hp = hp
def attack(self):
self.attack_point = random.randint(10,40)
print(f'기사가 {self.attack_point}만큼 공격했다!')
return self.attack_point
def defend(self,opponent_attack:int)->None:
if random.random()<0.5: # 방어 확률
print('기사가 방어 성공했다!')
return
self.hp -= opponent_attack
print(f'기사가 방어에 실패하여 체력이 {self.hp} 되었다!')
class Wizards:
def __init__(self,hp=100,mana=100):
self.hp = hp
self.mana = mana
def attack(self):
if self.mana <=0:
print(f'마법사가 마나가 없어서 공격 불가')
return 0
attack_point = random.randint(10,40)
self.mana -=20
print(f'마법사가 {attack_point}만큼 공격했다! 마나는 {self.mana}남았다.')
return attack_point
def defend(self,opponent_attack):
if self.mana<= 0:
self.hp -= opponent_attack
print(f'마법사 마나가 없어서 방어 불가.남은 체력은 {self.hp}입니다.')
return
if random.random()<0.5:
self.mana -=20
print(f'마법사가 방어 성공하였다.마나는 {self.mana}남았다.')
return
if not self.hp <=0:
self.hp-=opponent_attack
self.mana -=20
print(f'마법사가 방어에 실패하여 체력이 {self.hp}남았고 마나는 {self.mana}남았다.')
return
def heal(self,opponent_attack):
self.hp -= opponent_attack
self.hp += 20
self.hp=100 if self.hp>=100 else self.hp
if self.mana ==0:
print('마나가 없어서 힐에 실패하였다.')
return
self.mana -=20
print(f'마법사가 힐에 성공하여 현재 체력은 {self.hp},마나는 {self.mana}')
def play_game():
knight1 = Knights()
wizard1 = Wizards()
while True:
# 기사 공격, 마법사 방어
knight_attack_pt = knight1.attack()
action = random.choice([wizard1.defend,wizard1.heal])
action(knight_attack_pt)
if wizard1.hp <=0:
print('마법사가 져서 게임을 종료합니다.')
break
# 마법사 공격, 기사 방어
wizard_attack_pt=wizard1.attack()
knight1.defend(wizard_attack_pt)
if knight1.hp <0:
print('기사가 져서 게임을 종료합니다.')
break
print('='*30)
if __name__=="__main__":
play_game()
이걸 어떻게 하면 더 고도화 시킬 수 있을까?
[ 번외 ]
IT 개발 직군
솔루션 업체에서 리스크 관리(새로 직원 뽑고 자를 때 위험부담)를 위해서 SI, SM업체를 이용한다.
코드 몽키는 수동적으로 따르기만 하는 사람. 그렇게 되지 않으려면 능동적으로 하는 버릇을 키워야 한다.
- 솔루션 업체
- 카카오, 네이버, 쿠팡.. 등
- SI 업체
- 솔루션 업체에서 만들고 싶은 서비스 또는 기존 서비스를 고도화하는 작업을 하기 위해 진행하는 모든 개발을 하는 업체
- SM 업체
- 새로운 서비스를 유지보수하는 개발업무를 맡는 업체
'개발공부 > SK Networks Family AI bootcamp 강의노트' 카테고리의 다른 글
7일차 [ 파이썬 기초 (상속,표준 라이브러리)] (0) | 2025.01.15 |
---|---|
개발 공부 방법 공유 (0) | 2025.01.14 |
5일차 [파이썬기초 (함수)] (0) | 2025.01.13 |
5일차 [ 파이썬 기초 (가위바위보 고도화,묵찌빠) ] (0) | 2025.01.13 |
4일차 [ 파이썬 기초/ try except] (0) | 2025.01.10 |