www.youtube.com/watch?v=kWiCuklohdY
* ์ ๋งํฌ์ ์๋ ์์์ ๋ฃ๊ณ ๊ณต๋ถํ๋ฉฐ ๊ธ์ ์์ฑํ์ต๋๋ค
ํ์ค ์ ๋ ฅ
answer = input("์๋ฌด ๊ฐ์ด๋ ์ ๋ ฅํ์ธ์ : ") # ์ซ์(str(answer)๋ก ํ๋๊ฒ ์ข๊ธด ํจ), ๋ฌธ์์ด ์ ๋ ฅ ํ ๋ ์ ์ถ๋ ฅ๋จ
print("์ ๋ ฅํ์ ๊ฐ์ " + answer + "์ ๋๋ค.")
# ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ์ผ๋ฉด ํญ์ ๋ฌธ์์ด ํํ๋ก ์ ์ฅ(?) - ์ด๊ฒ ๋ฌด์จ ๋ง์ด์ง
๋ค์ํ ์ถ๋ ฅ format
# ๋น ์๋ฆฌ๋ ๋น๊ณต๊ฐ(ใ )์ผ๋ก ๋๊ณ , ์ค๋ฅธ์ชฝ ์ ๋ ฌ์ ํ๋, ์ด 10์๋ฆฌ ๊ณต๊ฐ์ ํ๋ณด
print("{0:ใ >10}".format(500)) --> 500
# ์์์ผ ๋ +๋ก ํ์, ์์์ผ ๋ -๋ก ํ์
print("{0:ใ >+10}".format(500)) --> +500
print("{0:ใ >+10}".format(-500)) --> -500
# ์ผ์ชฝ ์ ๋ ฌํ๊ณ , ๋น์นธ์ผ๋ก _๋ก ์ฑ์
print("{0:_>10}".format(500)) --> +500______
# 3์๋ฆฌ ๋ง๋ค ์ฝค๋ง๋ฅผ ์ฐ์ด์ฃผ๊ธฐ
print("{0:,}".format(100000000000)) --> 100,000,000,000
# 3์๋ฆฌ ๋ง๋ค ์ฝค๋ง๋ฅผ ์ฐ์ด์ฃผ๊ธฐ, +- ๋ถํธ๋ ๋ถ์ด๊ธฐ
print("{0:+,}".format(100000000000)) --> +100,000,000,000
print("{0:+,}".format(-100000000000)) --> -100,000,000,000
# 3์๋ฆฌ ๋ง๋ค ์ฝค๋ง๋ฅผ ์ฐ์ด์ฃผ๊ธฐ, ๋ถํธ๋ ๋ถ์ด๊ณ , ์๋ฆฟ์๋ ํ๋ณดํ๊ธฐ
# ๋์ด ๋ง์ผ๋ฉด ํ๋ณตํ๋๊น ๋น ์๋ฆฌ๋ ^ ๋ก ์ฑ์์ฃผ๊ธฐ
print("{0:^(๋น์๋ฆฌ์ฑ์ฐ๊ธฐ)<(์ผ์ชฝ์ ๋ ฌ)+(+-๋ถ์ฌ์ฃผ๊ธฐ)30(์ด30์๋ฆฌ),(3์๋ฆฌ๋ง๋ค ์ฝค๋ง)}".format(100000000000) --> +100,000,000,000^^^^^^^
# ์์์ ์ถ๋ ฅ
print("{0:f}".format(5/3))
# ์์์ ํน์ ์๋ฆฌ์ ๊น์ง๋ง ํ์ (์์์ 3์งธ ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ)
print("{0:.2f}".format(5/3))
ํ์ผ ์ ์ถ๋ ฅ
score_file = open("score.txt", "w", encoding="utf8") # ์คํ ์, score.txt ํ์ผ์ด ์๊น, w : ์ฐ๊ธฐ ์ฉ๋
print("์ํ : 0", file=score_file)
print("์์ด : 50", file=score_file)
score_file.close() # ํ์ผ์ ํญ์ ๋ซ์์ค์ผ ํจ
score_file = open("score.txt", "a", encoding="utf8) # a : ๋ฎ์ด ์ฐ๊ธฐ
score_file.write("๊ณผํ : 80")
score_file.write("\n์ฝ๋ฉ : 100")
score_file.close()
score_file = open("score.txt", "r", encoding="utf8") # r : ์ฝ์ด์ค๊ธฐ
print(score_file.read()) # score.txt ๋ชจ๋ ๋ด์ฉ ์ถ๋ ฅํ๊ธฐ
score_file.close()
score_file = open("score.txt", "r", encoding="utf8")
print(score_file.readline()) # ์ค๋ณ๋ก ์ฝ๊ธฐ, ํ ์ค ์ฝ๊ณ ์ปค์๋ ๋ค์ ์ค๋ก ์ด๋, ์๋ ์ค๋ฐ๊ฟ
print(score_file.readline(), end="") # ์ค๋ฐ๊ฟ ์ํ๋ ์ต์
print(score_file.readline(), end="")
print(score_file.readline(), end="")
print(score_file.readline(), end="")
score_file.close()
# ๋ช ์ค์ด ์กด์ฌํ๋์ง ๋ชจ๋ฅผ ๋ ์ฌ์ฉ
score_file = open("score.txt", "r", encoding="utf8")
while True:
line = score_file.readline()
if not line:
break
print(line, end="")
score_file.close()
# ๋ฆฌ์คํธ ๋ง๋ค์ด์ ํ์ค์ฉ ์ถ๋ ฅ
score_file = open("score.txt", "r", encoding="utf8")
lines = score_file.readlines() # list ํํ๋ก ์ ์ฅ
for line in lines:
print(line, end="")
score_file.close()
pickle
import pickle
# ์คํ ์, profile.pickle ํ์ผ์ด ์์ฑ
profile_file = open("profile.pickle", "wb") # b : binary
profile = {"์ด๋ฆ":"๋ฐ๋ช ์", "๋์ด":30, "์ทจ๋ฏธ":["์ถ๊ตฌ","๊ณจํ","์ฝ๋ฉ"]}
print(profile) ---> {'์ด๋ฆ':'๋ฐ๋ช ์', '๋์ด':30, '์ทจ๋ฏธ':['์ถ๊ตฌ','๊ณจํ','์ฝ๋ฉ']}
pickle.dump() # profile์ ์๋ ์ ๋ณด๋ฅผ file์ ์ ์ฅ
profile_file.close()
profile_file = open("profile.pickle", "rb")
profile = pickle.load(profile_file) # file์ ์๋ ์ ๋ณด๋ฅผ profile์ ๋ถ๋ฌ์ค๊ธฐ
print(profile) ---> {'์ด๋ฆ':'๋ฐ๋ช ์', '๋์ด':30, '์ทจ๋ฏธ':['์ถ๊ตฌ','๊ณจํ','์ฝ๋ฉ']}
profile_file.close()
with
import pickle
with open("profile.pickle", "rb") as profile_file:
print(pickle.load(profile_file))
with open("study.txt", "w", encoding="utf8") as study_file:
study_file.write("ํ์ด์ฌ์ ์ด์ฌํ ๊ณต๋ถํ๊ณ ์์ด์")
with open("study.txt", "r", encoding="utf8" as study_file:
print(study_file.read())
Quiz) ๋น์ ์ ํ์ฌ์์๋ ๋งค์ฃผ 1ํ ์์ฑํด์ผ ํ๋ ๋ณด๊ณ ์๊ฐ ์์ต๋๋ค.
# ์คํ ์, 1์ฃผ์ฐจ.txt ๋ถํฐ 50์ฃผ์ฐจ.txt ๊น์ง ์์ฑ
for i in range(1, 51):
with open(str(i) + "์ฃผ์ฐจ.txt", "w", encoding="utf8") as report_file:
report_file.write("- {0} ์ฃผ์ฐจ ์ฃผ๊ฐ๋ณด๊ณ -".format(i))
report_file.write("\n๋ถ์ : ")
report_file.write("\n์ด๋ฆ : ")
report_file.write("\n์ ๋ฌด ์์ฝ : ")
์ฐธ๊ณ ) ์ง์ฐ๋ ค๋ ํ์ผ์ ๋๋ฅธํ shift ๋ฅผ ๋๋ฌ ์ฌ๋ฌ ํญ๋ชฉ์ ๋๋๊ทธ ํ๋ฉด ๊ฐํธํ๊ฒ ์ฌ๋ฌ ํ์ผ์ ํ๋ฒ์ ์ญ์ ๊ฐ๋ฅ
ํด๋์ค & __init__(์์ฑ์)
# ์ผ๋ฐ ์ ๋
class Unit:
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
print("{0} ์ ๋์ด ์์ฑ ๋์์ต๋๋ค.".format(self.name))
print("์ฒด๋ ฅ {0}, ๊ณต๊ฒฉ๋ ฅ {1}".format(self.hp, self.damage))
marine1 = Unit("๋ง๋ฆฐ", 40, 5) ---> ๋ง๋ฆฐ ์ ๋์ด ์์ฑ๋์์ต๋๋ค.\n์ฒด๋ ฅ 40, ๊ณต๊ฒฉ๋ ฅ 5
marine2 = Unit("๋ง๋ฆฐ", 40, 5) ---> ๋ง๋ฆฐ ์ ๋์ด ์์ฑ๋์์ต๋๋ค.\n์ฒด๋ ฅ 40, ๊ณต๊ฒฉ๋ ฅ 5
tank = Unit("ํฑํฌ", 150, 35) ---> ํฑํฌ ์ ๋์ด ์์ฑ๋์์ต๋๋ค.\n์ฒด๋ ฅ 150, ๊ณต๊ฒฉ๋ ฅ 35
marine3 = Unit("๋ง๋ฆฐ") # ์ฌ์ฉ ๋ถ๊ฐ
marine3 = Unit("๋ง๋ฆฐ", 40) # ์ฌ์ฉ ๋ถ๊ฐ
๋ฉค๋ฒ ๋ณ์
# ๋ ์ด์ค : ๊ณต์ค ์ ๋, ๋นํ๊ธฐ. ํด๋กํน (์๋๋ฐฉ์๊ฒ ๋ณด์ด์ง ์์)
wraith1 = Unit("๋ ์ด์ค", 80, 5)
print("์ ๋ ์ด๋ฆ : {0}, ๊ณต๊ฒฉ๋ ฅ : {1}".format(wraith1.name, wraith1.damage))
# ๋ง์ธ๋ ์ปจํธ๋กค : ์๋๋ฐฉ ์ ๋์ ๋ด ๊ฒ์ผ๋ก ๋ง๋๋ ๊ฒ (๋นผ์์)
wraith2 = Unit("๋นผ์์ ๋ ์ด์ค", 80, 5)wraith2.clocking = True # ์ถ๊ฐ๋ก ์ธ๋ถ์์ ๋ง๋ ์ ์ญ ๋ณ์ / wraith1์๋ ์กด์ฌํ์ง ์์
if wraith2.clocking == True: print("{0} ๋ ํ์ฌ ํด๋กํน ์ํ์ ๋๋ค.".format(wraith2.name))
3:53:22"
๋ฉ์๋
๋ฉ์๋ ์๋ ๋ฌด์กฐ๊ฑด self ์ฌ์ฉ
# ๊ณต๊ฒฉ ์ ๋
class AttackUnit:
def __init__(self, name, hp, damage):
self.name = name
self.hp = hp
self.damage = damage
def attack(self, location):
print("{0} : {1} ๋ฐฉํฅ์ผ๋ก ์ ๊ตฐ์ ๊ณต๊ฒฉ ํฉ๋๋ค. [๊ณต๊ฒฉ๋ ฅ {2}]"\
.format(self.name, location, self.damage))
def damaged(self, damage):
print("{0} : {1} ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.".format(self.name, damage))
self.hp -= damage
print("{0} : ํ์ฌ ์ฒด๋ ฅ์ {1} ์ ๋๋ค.".format(self.name, self.hp))
if self.hp <= 0:
print("{0} : ํ๊ดด๋์์ต๋๋ค.".format(self.name))
# ํ์ด์ด๋ฑ : ๊ณต๊ฒฉ ์ ๋, ํ์ผ๋ฐฉ์ฌ๊ธฐ.
firebat1 = AttackUnit("ํ์ด์ด๋ฑ", 50, 16)
firebat1.attack("5์")
# ๊ณต๊ฒฉ 2๋ฒ ๋ฐ๋๋ค๊ณ ๊ฐ์
firebat1.damaged(25)
firebat1.damaged(25)
---> ํ์ด์ด๋ฑ : 5์ ๋ฐฉํฅ์ผ๋ก ์ ๊ตฐ์ ๊ณต๊ฒฉํฉ๋๋ค. [๊ณต๊ฒฉ๋ ฅ 16] # (attack ํจ์)
ํ์ด์ด๋ฑ : 25 ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.
ํ์ด์ด๋ฑ : ํ์ฌ ์ฒด๋ ฅ์ 25 ์ ๋๋ค.
ํ์ด์ด๋ฑ : 25 ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.
ํ์ด์ด๋ฑ : ํ์ฌ ์ฒด๋ ฅ์ 0 ์ ๋๋ค.
ํ์ด์ด๋ฑ : ํ๊ดด๋์์ต๋๋ค.
------------------------
์์
# ๋ฉ๋ : ์๋ฌด๋ณ
# ์ผ๋ฐ ์ ๋(=๋ถ๋ชจ)
class Unit:
def __init__(self, name, hp):
self.name = name
self.hp = hp
# ๋ฉ๋์ damage๋ฅผ ๋ฐ์ง ์๊ธฐ ๋๋ฌธ์ ์ญ์
# ์ผ๋ฐ ์ ๋๊ณผ ๊ณต๊ฒฉ ์ ๋์ด ๊ณตํต์ ์ธ ๋ถ๋ถ์ด ์์
# ๊ณต๊ฒฉ ์ ๋์ด ์ผ๋ฐ ์ ๋์ ์์๋ฐ๋๋ก ์ฌ์์ฑ
# ๊ณต๊ฒฉ ์ ๋(=์์)
class AttackUnit(Unit):
def __init__(self, name, hp, damage):
Unit.__init__(self, name, hp) # ์์ฑ์ ํธ์ถ
self.damage = damage
# ๋ฐ์ ์๋ ์ฝ๋๋ ๊ทธ๋๋ก ์คํ
๋ค์ค ์์
= ๋ถ๋ชจ๊ฐ ์ฌ๋ฟ(์ฌ๋ฌ ๊ณณ์์ ์์)
# ๋๋์ฝ : ๊ณต์ฆ ์ ๋, ์์ก๊ธฐ, ๋ง๋ฆฐ / ํ์ด์ด๋ฑ / ํฑํฌ ๋ฑ์ ์์ก, ๊ณต๊ฒฉ x
# ๋ ์ ์๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ํด๋์ค
class Flyable:
def __init__(self, flying_speed): self.flying_speed = flying_speed def fly(self, name, location): print("{0} : {1} ๋ฐฉํฅ์ผ๋ก ๋ ์๊ฐ๋๋ค. [์๋ {2}]".format(name, location, self.flying_speed))
# ๊ณต์ค ๊ณต๊ฒฉ ์ ๋ ํด๋์ค
class FlyableAttackUnit(AttackUnit, Flyable):
def __int__(self, name, hp, damage, flying_speed): AttackUnit.__init__(self, name, hp, damage) Flyable.__init__(self, flying_speed)
# ๋ฐํค๋ฆฌ : ๊ณต์ค ๊ณต๊ฒฉ ์ ๋, ํ๋ฒ์ 14๋ฐ ๋ฏธ์ฌ์ผ ๋ฐ์ฌvalkyrie = FlyableAttackUnit("๋ฐํค๋ฆฌ", 2000, 6, 5)valkyrie.fly(valkyrie.name, "3์") ---> ๋ฐํค๋ฆฌ : 3์ ๋ฐฉํฅ์ผ๋ก ๋ ์๊ฐ๋๋ค. [์๋ 5]
------------------------
๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ
# ์ผ๋ฐ ์ ๋(=๋ถ๋ชจ)
class Unit:
def __init__(self, name, hp, speed):
self.name = name
self.hp = hp
self.speed = speed
def move(self, location):
print("[์ง์ ์ ๋ ์ด๋]")
print("{0} : {1} ๋ฐฉํฅ์ผ๋ก ์ด๋ํฉ๋๋ค. [์๋ {2} ]"\
.format(self.name, location, self.speed))
# ๊ณต๊ฒฉ ์ ๋(=์์)
class AttackUnit(Unit):
def __init__(self, name, hp, speed, damage):
Unit.__init__(self, name, hp, speed) # ์์ฑ์ ํธ์ถ
self.damage = damage
# ๊ณต์ค ๊ณต๊ฒฉ ์ ๋ ํด๋์ค
class FlyableAttackUnit(AttackUnit, Flyable):
def __int__(self, name, hp, damage, flying_speed):
AttackUnit.__init__(self, name, hp, 0, damage) # ์ง์ speed 0
Flyable.__init__(self, flying_speed)
def move(self, location):
print("[๊ณต์ค ์ ๋ ์ด๋]")
self.fly(self.name, location)
# ๋ฒ์ณ : ์ง์ ์ ๋, ๊ธฐ๋์ฑ์ด ์ข์
vulture = AttackUnit("๋ฒ์ณ", 80, 10, 20)
# ๋ฐฐํํฌ๋ฃจ์ : ๊ณต์ค ์ ๋, ์ฒด๋ ฅ๋ ๊ต์ฅํ ์ข์, ๊ณต๊ฒฉ๋ ฅ๋ ์ข์.
battlecruiser = FlyableAttackUnit("๋ฐฐํํฌ๋ฃจ์ ", 500, 25, 3)
vulture.move("11์") ---> [์ง์ ์ ๋ ์ด๋]
#battlecruiser.fly(battlecruiser.name, "9์")
battlecruiser.move("9์") ---> [๊ณต์ค ์ ๋ ์ด๋]
์ฌ์ง์ด ์๋ฆฐ ๋ถ๋ถ์ AttackUnit ์ ๋๋ค
pass
# ๊ฑด๋ฌผ
class BuildingUnit(Unit):
def __init__(self, name, hp, location):
pass
# ์ํ๋ผ์ด ๋ํฟ : ๊ฑด๋ฌผ, 1๊ฐ ๊ฑด๋ฌผ = 8 ์ ๋.
supply_depot = BuildingUnit("์ํ๋ผ์ด ๋ํฟ", 500, "7์")
def game_start():
print("[์๋ฆผ] ์๋ก์ด ๊ฒ์์ ์์ํฉ๋๋ค.")
def game_over():
pass
game_start()
game_over()
super
๋ค์ ํ๋ฒ ๋ด์ผํ ํ์๊ฐ ์์
# ๊ฑด๋ฌผ
class BuildingUnit(Unit):
def __init__(self, name, hp, location):
#Unit.__init__(self, name, hp, 0)
super().__init__(name, hp, 0) # self ์์ฑํ๋ฉด ์๋จ
self.location = location
practice_class.py
class Unit:
def __init__(self):
print("Unit ์์ฑ์")
class Flyable: def __init__(self): print("Flyable ์์ฑ์")
class FlyableUnit(Unit, Flyable):
def __init__(self):
#super().__init__()
Unit.__init__(self) ---> Unit ์์ฑ์ ํธ์ถ
Flyable.__init__(self) ---> Flyable ์์ฑ์ ํธ์ถ
# ๋๋์ฝ
dropship = FlyableUnit()
4:23:20"
์คํํฌ๋ํํธ ์ ๋ฐ์
from random import *
# ์ผ๋ฐ ์ ๋(=๋ถ๋ชจ)
class Unit:
def __init__(self, name, hp, speed):
self.name = name
self.hp = hp
self.speed = speed
print("{0} ์ ๋์ด ์์ฑ๋์์ต๋๋ค.".format(name))
def move(self, location):
print("[์ง์ ์ ๋ ์ด๋]")
print("{0} : {1} ๋ฐฉํฅ์ผ๋ก ์ด๋ํฉ๋๋ค. [์๋ {2} ]"\
.format(self.name, location, self.speed))
def damaged(self, damage):
print("{0} : {1} ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.".format(self.name, damage))
self.hp -= damage
print("{0} : ํ์ฌ ์ฒด๋ ฅ์ {1} ์ ๋๋ค.".format(self.name, self.hp))
if self.hp <= 0:
print("{0} : ํ๊ดด๋์์ต๋๋ค.".format(self.name))
# ๊ณต๊ฒฉ ์ ๋(=์์)
class AttackUnit(Unit):
def __init__(self, name, hp, speed, damage):
Unit.__init__(self, name, hp, speed) # ์์ฑ์ ํธ์ถ
self.damage = damage
def attack(self, location):
print("{0} : {1} ๋ฐฉํฅ์ผ๋ก ์ ๊ตฐ์ ๊ณต๊ฒฉ ํฉ๋๋ค. [๊ณต๊ฒฉ๋ ฅ {2}]"\
.format(self.name, location, self.damage))
# ๋ง๋ฆฐ
class Marine(AttackUnit):
def __init__(self):
AttackUnit.__init__(self, "๋ง๋ฆฐ", 40, 1,5)
# ์คํํฉ : ์ผ์ ์๊ฐ ๋์ ์ด๋ ๋ฐ ๊ณต๊ฒฉ ์๋๋ฅผ ์ฆ๊ฐ, ์ฒด๋ ฅ 10 ๊ฐ์
def stimpack(self):
if self.hp > 10:
self.hp -= 10
print("{0} : ์คํํฉ์ ์ฌ์ฉํฉ๋๋ค. (HP 10 ๊ฐ์)".format(self.name))
else:
print("{0} : ์ฒด๋ ฅ์ด ๋ถ์กฑํ์ฌ ์คํํฉ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.".format(self.name))
# ํฑํฌ
class Tank(AttackUnit):
# ์์ฆ๋ชจ๋ : ํฑํฌ๋ฅผ ์ง์์์ ๊ณ ์ ์์ผ, ๋ ๋์ ํ์๋ก ๊ณต๊ฒฉ ๊ฐ๋ฅ. ์ด๋ ๋ถ๊ฐ.
seize_developed = False # ์์ฆ๋ชจ๋ ๊ฐ๋ฐ ์ฌ๋ถ
def __init__(self):
AttackUnit.__init__(self, "ํฑํฌ", 150, 1, 35)
self.seize_mode = False
def set_sieze_mode(self):
if Tank.seize_developed == False:
return # ๊ฐ๋ฐ ์๋์ด์์ผ๋ฉด ๊ทธ๋ฅ ๋๊ฐ
# ํ์ฌ ์์ฆ๋ชจ๋๊ฐ ์๋ ๋(๊ฐ๋ฐ ๋์ด์๋ ์ํ)
if self.seize_mode == False:
print("{0} : ์์ฆ๋ชจ๋๋ก ์ ํํฉ๋๋ค.".format(self.name))
self.damage *= 2
self.seize_mode = True
# ํ์ฌ ์์ฆ๋ชจ๋์ผ ๋ -> ์์ฆ๋ชจ๋ ํด์
else:
print("{0} : ์์ฆ๋ชจ๋๋ฅผ ํด์ ํฉ๋๋ค.".format(self.name))
self.damage /= 2
self.seize_mode = False
# ๊ณต์ค ๊ณต๊ฒฉ ์ ๋ ํด๋์ค
class FlyableAttackUnit(AttackUnit, Flyable):
def __int__(self, name, hp, damage, flying_speed):
AttackUnit.__init__(self, name, hp, 0, damage) # ์ง์ speed 0
Flyable.__init__(self, flying_speed)
def move(self, location):
print("[๊ณต์ค ์ ๋ ์ด๋]")
self.fly(self.name, location)
# ๋ ์ด์ค
class Wraith(FlyableAttackUnit):
def __init__(self):
FlyableAttackUnit.__init__(self, "๋ ์ด์ค", 80, 20,5)
self.clocked = False # ํด๋กํน ๋ชจ๋(ํด์ ์ํ)
def clocking(self):
if self.clocked == True: # ํด๋กํน ๋ชจ๋ -> ๋ชจ๋ ํด์
print("{0} : ํด๋กํน ๋ชจ๋ ํด์ ํฉ๋๋ค.".format(self.name))
self.clocked = False
else: # ํด๋กํน ๋ชจ๋ ํด์ -> ๋ชจ๋ ์ค์
print("{0} : ํด๋กํน ๋ชจ๋ ์ค์ ํฉ๋๋ค.".format(self.name))
self.clocked = True
def game_start():
print("[์๋ฆผ] ์๋ก์ด ๊ฒ์์ ์์ํฉ๋๋ค.")
def game_over():
print("Player : gg") # good game
print("[Player] ๋์ด ๊ฒ์์์ ํด์ฅํ์ จ์ต๋๋ค.")
# ์ค์ ๊ฒ์ ์์
game_start()
# ๋ง๋ฆฐ 3๊ธฐ ์์ฑ
m1 = Marine()
m2 = Marine()
m3 = Marine()
# ํฑํฌ 2๊ธฐ ์์ฑ
t1 = Tank()
t2 = Tank()
# ๋ ์ด์ค 1๊ธฐ ์์ฑ
w1 = Wraith()
# ์ ๋ ์ผ๊ด ๊ด๋ฆฌ (์์ฑ๋ ๋ชจ๋ ์ ๋ append)
# ๋ชจ๋ ์ ๋ ๋ฆฌ์คํธ์ ์ง์ด ๋ฃ๋๋ค
attack_units = []
attack_units.append(m1)
attack_units.append(m2)
attack_units.append(m3)
attack_units.append(t1)
attack_units.append(t2)
attack_units.append(w1)
# ์ ๊ตฐ ์ด๋(์ผ๊ด์ ์ผ๋ก 1์๋ก ์ด๋)
for unit in attack_units:
unit.move("1์")
# ํฑํฌ ์์ฆ๋ชจ๋ ๊ฐ๋ฐ
Tank.seize_developed = True
print("[์๋ฆผ] ํฑํฌ ์์ฆ ๋ชจ๋ ๊ฐ๋ฐ์ด ์๋ฃ๋์์ต๋๋ค.")
# ๊ณต๊ฒฉ ๋ชจ๋ ์ค๋น (๋ง๋ฆฐ : ์คํํฉ, ํฑํฌ : ์์ฆ๋ชจ๋, ๋ ์ด์ค : ํด๋กํน)
for unit in attack_units:
if isinstance(unit, Marine):
unit.stimpack()
elif ininstance(unit, Tank):
unit.set_seize_mode()
elif ininstance(unit, Wraith):
unit.clocking()
# ์ ๊ตฐ ๊ณต๊ฒฉ
for unit in attack_units:
unit.attack("1์")
# ์ ๊ตฐ ํผํด
for unit in attack_units:
unit.damaged(randint(5, 21)) # ๊ณต๊ฒฉ์ ๋๋ค์ผ๋ก ๋ฐ์ (5~20)
# ๊ฒ์ ์ข ๋ฃ
game_over()
---> ์คํ
[์๋ฆผ] ์๋ก์ด ๊ฒ์์ ์์ํฉ๋๋ค.
๋ง๋ฆฐ ์ ๋์ด ์์ฑ๋์์ต๋๋ค. x3
ํฑํฌ ์ ๋์ด ์์ฑ๋์์ต๋๋ค. x2
๋ ์ด์ค ์ ๋์ด ์์ฑ๋์์ต๋๋ค.
๋ง๋ฆฐ : 1์ ๋ฐฉํฅ์ผ๋ก ์ด๋ํฉ๋๋ค. [์๋ 1]
๋ง๋ฆฐ : 1์ ๋ฐฉํฅ์ผ๋ก ์ด๋ํฉ๋๋ค. [์๋ 1]
๋ง๋ฆฐ : 1์ ๋ฐฉํฅ์ผ๋ก ์ด๋ํฉ๋๋ค. [์๋ 1]
ํฑํฌ : 1์ ๋ฐฉํฅ์ผ๋ก ์ด๋ํฉ๋๋ค. [์๋ 1]
ํฑํฌ : 1์ ๋ฐฉํฅ์ผ๋ก ์ด๋ํฉ๋๋ค. [์๋ 1]
๋ ์ด์ค : 1์ ๋ฐฉํฅ์ผ๋ก ๋ ์๊ฐ๋๋ค. [์๋ 5]
[์๋ฆผ] ํฑํฌ ์์ฆ ๋ชจ๋ ๊ฐ๋ฐ์ด ์๋ฃ๋์์ต๋๋ค.
๋ง๋ฆฐ : ์คํํฉ์ ์ฌ์ฉํฉ๋๋ค. (HP 10 ๊ฐ์)
๋ง๋ฆฐ : ์คํํฉ์ ์ฌ์ฉํฉ๋๋ค. (HP 10 ๊ฐ์)
๋ง๋ฆฐ : ์คํํฉ์ ์ฌ์ฉํฉ๋๋ค. (HP 10 ๊ฐ์)
ํฑํฌ : ์์ฆ๋ชจ๋๋ก ์ ํํฉ๋๋ค.
ํฑํฌ : ์์ฆ๋ชจ๋๋ก ์ ํํฉ๋๋ค.
๋ ์ด์ค : ํด๋กํน ๋ชจ๋ ์ค์ ํฉ๋๋ค.
๋ง๋ฆฐ : 1์ ๋ฐฉํฅ์ผ๋ก ์ ๊ตฐ์ ๊ณต๊ฒฉํฉ๋๋ค. [๊ณต๊ฒฉ๋ ฅ 5]
๋ง๋ฆฐ : 1์ ๋ฐฉํฅ์ผ๋ก ์ ๊ตฐ์ ๊ณต๊ฒฉํฉ๋๋ค. [๊ณต๊ฒฉ๋ ฅ 5]
๋ง๋ฆฐ : 1์ ๋ฐฉํฅ์ผ๋ก ์ ๊ตฐ์ ๊ณต๊ฒฉํฉ๋๋ค. [๊ณต๊ฒฉ๋ ฅ 5]
ํฑํฌ : 1์ ๋ฐฉํฅ์ผ๋ก ์ ๊ตฐ์ ๊ณต๊ฒฉํฉ๋๋ค. [๊ณต๊ฒฉ๋ ฅ 70]
ํฑํฌ : 1์ ๋ฐฉํฅ์ผ๋ก ์ ๊ตฐ์ ๊ณต๊ฒฉํฉ๋๋ค. [๊ณต๊ฒฉ๋ ฅ 70]
๋ ์ด์ค 1์ ๋ฐฉํฅ์ผ๋ก ์ ๊ตฐ์ ๊ณต๊ฒฉํฉ๋๋ค. [๊ณต๊ฒฉ๋ ฅ 20]
๋ง๋ฆฐ : 13 ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.
๋ง๋ฆฐ : ํ์ฌ ์ฒด๋ ฅ์ 17 ์ ๋๋ค.
๋ง๋ฆฐ : 13 ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.
๋ง๋ฆฐ : ํ์ฌ ์ฒด๋ ฅ์ 17 ์ ๋๋ค.
๋ง๋ฆฐ : 13 ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.
๋ง๋ฆฐ : ํ์ฌ ์ฒด๋ ฅ์ 20 ์ ๋๋ค.
ํฑํฌ : 17 ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.
ํฑํฌ : ํ์ฌ ์ฒด๋ ฅ์ 133 ์ ๋๋ค.
ํฑํฌ : 21 ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.
ํฑํฌ : ํ์ฌ ์ฒด๋ ฅ์ 129 ์ ๋๋ค.
๋ ์ด์ค : 18 ๋ฐ๋ฏธ์ง๋ฅผ ์ ์์ต๋๋ค.
๋ ์ด์ค : ํ์ฌ ์ฒด๋ ฅ์ 62 ์ ๋๋ค.
Player : gg
[Player] ๋์ด ๊ฒ์์์ ํด์ฅํ์ จ์ต๋๋ค.
์ฌ์ง์ด ์๋ฆฐ ๋ถ๋ถ์ Marine ์ ๋๋ค
Quiz) ์ฃผ์ด์ง ์ฝ๋๋ฅผ ํ์ฉํ์ฌ ๋ถ๋์ฐ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
class House:
# ๋งค๋ฌผ ์ด๊ธฐํ
def __init__(self, location, house_type, deal_type, price, completion_year):
self.location = location
self.house_type = house_type
self.deal_type = deal_type
self.price = price
self.completion_year = completion_year
# ๋งค๋ฌผ ์ ๋ณด ํ์
def show_detail(self):
print(self.location, self.house_type, self.deal_type\
, self.price, self.completion_year)
house = []
house1 = House("๊ฐ๋จ", "์ํํธ", "๋งค๋งค", "10์ต", "2010๋ ")
house2 = House("๋งํฌ", "์คํผ์คํ ", "์ ์ธ", "5์ต", "2007๋ ")house3 = House("์กํ", "๋น๋ผ", "์์ธ", "500/50", "2000๋ ")
house.append(house1)
house.append(house2)
house.append(house3)
print("์ด {0}๋์ ๋งค๋ฌผ์ด ์์ต๋๋ค.".format(len(houses)))
for house in houses:
house.show_detail()
์์ธ ์ฒ๋ฆฌ
# ์ฒซ๋ฒ์งธ ์ซ์ 6, ๋๋ฒ์งธ ์ซ์ ์ผ ์ ๋ ฅ์ ์ค๋ฅ ๋ฐ์ -> ์์ธ ์ฒ๋ฆฌ
try:
print("๋๋๊ธฐ ์ ์ฉ ๊ณ์ฐ๊ธฐ์ ๋๋ค.")
num = []
nums.append(int(input("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์ ๋ ฅํ์ธ์ : ")))
nums.append(int(input("๋ ๋ฒ์งธ ์ซ์๋ฅผ ์ ๋ ฅํ์ธ์ : ")))
print("{0} / {1} = {2}".format(num[0], num[1], num[2]))
num1 = int(input("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์ : "))
num2 = int(input("๋ ๋ฒ์งธ ์ซ์๋ฅผ ์
๋ ฅํ์ธ์ : "))
print("{0} / {1} = {2}".format(num1, num2, int(num1/num2)))
except ValueError:
print("์๋ฌ! : ์๋ชป๋ ๊ฐ์ ์ ๋ ฅํ์์ต๋๋ค.")
except ZeroDivisionError a err:
print(err) # ์ ํํ ์๋ฌ ๋ด์ฉ ์ถ๋ ฅ
except Exception as err:
print("์ ์ ์ ์จ ์๋ฌ๊ฐ ๋ฐ์ํ์์ต๋๋ค.")
print(err) # ์ ํํ ์๋ฌ ๋ด์ฉ ์ถ๋ ฅ
์๋ฌ ๋ฐ์์ํค๊ธฐ
try :
print("ํ ์๋ฆฌ ์ซ์ ๋๋๊ธฐ ์ ์ฉ ๊ณ์ฐ๊ธฐ์ ๋๋ค.")
num1 = int(input("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์ ๋ ฅํ์ธ์ : "))
num2 = int(input("๋ ๋ฒ์งธ ์ซ์๋ฅผ ์ ๋ ฅํ์ธ์ : "))
if num1 >= 10 or num >= 10:
raise ValueError # ํน์ ์๋ฌ ๋ฐ์ํ๋ฉด
print("{0} / {1} = {2}".format(num1, num2, int(num1/num2)) # ํด๋น ๋ฌธ์ฅ ์คํ x
except ValueError:
print("์๋ชป๋ ๊ฐ์ ์ ๋ ฅํ์์ต๋๋ค. ํ ์๋ฆฌ ์ซ์๋ง ์ ๋ ฅํ์ธ์.")
์ฌ์ฉ์ ์ ์ ์์ธ์ฒ๋ฆฌ
class BigNumberError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try :
print("ํ ์๋ฆฌ ์ซ์ ๋๋๊ธฐ ์ ์ฉ ๊ณ์ฐ๊ธฐ์ ๋๋ค.")
num1 = int(input("์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ ์ ๋ ฅํ์ธ์ : "))
num2 = int(input("๋ ๋ฒ์งธ ์ซ์๋ฅผ ์ ๋ ฅํ์ธ์ : "))
if num1 >= 10 or num >= 10:
raise BigNumberError("์ ๋ ฅ๊ฐ : {0}, {1}".format(num1, num2))
print("{0} / {1} = {2}".format(num1, num2, int(num1/num2))
except ValueError:
print("์๋ชป๋ ๊ฐ์ ์ ๋ ฅํ์์ต๋๋ค. ํ ์๋ฆฌ ์ซ์๋ง ์ ๋ ฅํ์ธ์.")
except BigNumberError as err:
print("์๋ฌ๊ฐ ๋ฐ์ํ์์ต๋๋ค. ํ ์๋ฆฌ ์ซ์๋ง ์ ๋ ฅํ์ธ์.")
print(err)
finally:
print("๊ณ์ฐ๊ธฐ๋ฅผ ์ด์ฉํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.")
finally
finally:
print("๊ณ์ฐ๊ธฐ๋ฅผ ์ด์ฉํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.")
# ์คํ์ ์ค๋ฅ๊ฐ ์๋ ์๋ finally ์์ ์๋ ๋ฌธ์ฅ์ ์ถ๋ ฅ๋จ
Quiz) ๋๋ค์ ํญ์ ๋๊ธฐ ์๋์ด ์๋ ๋ง์๋ ์นํจ์ง์ด ์์ต๋๋ค.
class SoldOutError(Exception):
pass
chicken = 10
waiting = 1
while(True): # ํ ์์๋ ํ์ฌ ๋ง์, ๋๊ธฐ๋ฒํธ 1๋ถํฐ ์์
try:
print("[๋จ์ ์นํจ : {0}]".format(chicken))
order = int(input("์นํจ ๋ช ๋ง๋ฆฌ ์ฃผ๋ฌธํ์๊ฒ ์ต๋๊น?"))
if order > chicken: # ๋จ์ ์นํจ๋ณด๋ค ์ฃผ๋ฌธ๋์ด ๋ง์๋
print("์ฌ๋ฃ๊ฐ ๋ถ์กฑํฉ๋๋ค.")
elif order <= 0:
raise ValueError
else:
print("๋๊ธฐ๋ฒํธ {0}] {1} ๋ง๋ฆฌ ์ฃผ๋ฌธ์ด ์๋ฃ๋์์ต๋๋ค." \
.format(waiting, order))
waiting += 1
chicken -= order
if chicken == 0:
raise SoldOutError
except ValueError:
print("์๋ชป๋ ๊ฐ์ ์ ๋ ฅํ์์ต๋๋ค.")
except SoldOutError:
print("์ฌ๊ณ ๊ฐ ์์ง๋์ด ๋ ์ด์ ์ฃผ๋ฌธ์ ๋ฐ์ง ์์ต๋๋ค.")
break # while๋ฌธ ํ์ถ
๋ชจ๋
theater_module.py
# ์ผ๋ฐ ๊ฐ๊ฒฉ
def price(people):
print("{0}๋ช ๊ฐ๊ฒฉ์ {1}์ ์ ๋๋ค.".format(people, people*10000))
# ์กฐ์กฐ ํ ์ธ ๊ฐ๊ฒฉ
def price_morning(people):
print("{0}๋ช ์กฐ์กฐ ํ ์ธ ๊ฐ๊ฒฉ์ {1}์ ์ ๋๋ค.".format(people, people*6000))
# ๊ตฐ์ธ ํ ์ธ ๊ฐ๊ฒฉ
def price_soldier(people):
print("{0}๋ช ๊ตฐ์ธ ํ ์ธ ๊ฐ๊ฒฉ์ {1}์ ์ ๋๋ค.".format(people, people*4000))
practice.py
1)
# import theater_module
# theater_module.price(3) # 3๋ช ์ด์ ์ํ ๋ณด๋ฌ ๊ฐ์ ๋ ๊ฐ๊ฒฉ
# theater_module.price_morning(4) # 4๋ช ์ด์ ์กฐ์กฐ ํ ์ธ ์ํ ๋ณด๋ฌ ๊ฐ์ ๋ ๊ฐ๊ฒฉ
# theater_module.price_soldier(5) # 5๋ช ์ด์ ๊ตฐ์ธ ํ ์ธ ์ํ ๋ณด๋ฌ ๊ฐ์ ๋ ๊ฐ๊ฒฉ
2)
# import theater_module as mv
# mv.price(3)
# mv.price_morning(4)
# mv.price_soldier(5)
3)
# from theater_module import *
# # from random import *
# price_soldier(3)
# price_morning(4)
# price_soldier(5)
4)
# from theater_module import price, price_morning
# # ์ด๋ค ํจ์๋ง ๊ฐ์ ธ๋ค ์ธ์ง ์ ํ ๊ฐ๋ฅ
# price(5)
# price_morning(6)
# price_soldier(7) -> ์ค๋ฅ ๋ฐ์
5)
from theater_module import price_soldier as price # ๋ณ๋ช price๋ก ์ค์
# price(5)
ํจํค์ง
: ๋ชจ๋ ๋ชจ์๋์ ์งํฉ
thailand.py
class ThailandPackage:
def detail(self):
print("[ํ๊ตญ ํจํค์ง 3๋ฐ 5์ผ] ๋ฐฉ์ฝ, ํํ์ผ ์ฌํ (์ผ์์ฅ ํฌ์ด) 50๋ง์")
vietnam.py
class VietnamPackage:
def detail(self):
print("[๋ฒ ํธ๋จ ํจํค์ง 3๋ฐ 5์ผ] ๋ค๋ญ ํจ๋ ์ฌํ 60๋ง์")
practice.py
# import travel.thailand
# #import travel.thailand.ThailandPackage
# trip_to = travel.thailand.ThailandPackage()
# trip_to.detail()
# from travel.thailand import ThailandPackage
# trip_to = ThailandPackage()
# trip_to.detail()
from travel import vietnam
trip_to = vietnam.VietnamPackage()
trip_to.detail()
__all__
#from random import *
from travel import *
#trip_to = vietnam.VietnamPackage() # ์ค๋ฅ ๋ฐ์
trip_to = thailand.ThailandPackage()
trip_to.detail()
# ์ค๋ฅ ํด๊ฒฐ
__init__.py
__all__ = ["vietnam", "thailand"]
preferences -> settings -> linting -> Pyrhon Linting Enabled ์ฒดํฌ ํด์ ํ๋ฉด ํ์ผ Int ์ค๋ฅ ์ ๊ฑฐ(?)
๋ชจ๋ ์ง์ ์คํ
thailand.py
class ThailandPackage:
def detail(self):
print("[ํ๊ตญ ํจํค์ง 3๋ฐ 5์ผ] ๋ฐฉ์ฝ, ํํ์ผ ์ฌํ (์ผ์์ฅ ํฌ์ด) 50๋ง์")
if __name__ == "__main__":
print("Thailand ๋ชจ๋์ ์ง์ ์คํ")
print("์ด ๋ฌธ์ฅ์ ๋ชจ๋์ ์ง์ ์คํํ ๋๋ง ์คํ๋ผ์")
trip_to = ThailandPackage()
trip_to.detail()
else:
print("Thailand ์ธ๋ถ์์ ๋ชจ๋ ํธ์ถ")
practice.py
ํจํค์ง, ๋ชจ๋ ์์น
practice.py
from travel import *
trip_to = thailand.ThailandPackage()
trip_to.detail()
import inspect
import random
print(inspect.getfile(random))
print(inspect.getfile(thailand))
pip install
pypi ๊ฒ์ -> beautifulsoup4 ๊ฒ์ -> ํจํค์ง ์ค์น
https://pypi.org/project/beautifulsoup4/
5:46:02"
๋ด์ฅ ํจ์
# input : ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ๋ ํจ์
language = input("๋ฌด์จ ์ธ์ด๋ฅผ ์ข์ํ์ธ์?")
print("{0}์ ์์ฃผ ์ข์ ์ธ์ด์ ๋๋ค!".format(language))
# dir : ์ด๋ค ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์คฌ์ ๋ ๊ทธ ๊ฐ์ฒด๊ฐ ์ด๋ค ๋ณ์์ ํจ์๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์
print(dir())
import random # ์ธ์ฅ ํจ์ - random์ด ์ถ๊ฐ
print(dir())
import pickle
print(dir())
print(dir(random)) # ๋๋ค ๋ชจ๋ ๋ด์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ๋ค ์ถ๋ ฅ
lst = [1, 2, 3]
print(dir(lst))
name = "Jim"
print(dir(name))
https://docs.python.org/3/library/functions.html
์ธ์ฅ ํจ์
import ํด์ผ ์ฌ์ฉ ๊ฐ๋ฅ
#glob : ๊ฒฝ๋ก ๋ด์ ํด๋ / ํ์ผ ๋ชฉ๋ก ์กฐํ (์๋์ฐ dir)
import glob
print(glob.glob("*.py")) # ํ์ฅ์๊ฐ py ์ธ ๋ชจ๋ ํ์ผ
# os : ์ด์์ฒด์ ์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ
import os
print(os.getcwd()) # ํ์ฌ ๋๋ ํ ๋ฆฌ
folder = "sample_dir"
if os.path.exists(folder):
print("์ด๋ฏธ ์กด์ฌํ๋ ํด๋์ ๋๋ค.")
os.rmdir(folder) print(folder, "ํด๋๋ฅผ ์ญ์ ํ์์ต๋๋ค.")
else:
os.makedirs(folder) # ํด๋ ์์ฑ
print(folder, "ํด๋๋ฅผ ์์ฑํ์์ต๋๋ค.")
print(os.listdir())
# time : ์๊ฐ ๊ด๋ จ ํจ์
import timeprint(time.localtime())
print(time.strftime("%Y-%m-%d %H:%M:%S"))
import datetime
print("์ค๋ ๋ ์ง๋ ", datetime.date.today())
# timedelta : ๋ ๋ ์ง ์ฌ์ด์ ๊ฐ๊ฒฉ
today = datetime.date.today() # ์ค๋ ๋ ์ง ์ ์ฅ
td = datetime.timedelta(days=100) # 100์ผ ์ ์ฅ
print("์ฐ๋ฆฌ๊ฐ ๋ง๋์ง 100์ผ์", today + td) # ์ค๋๋ถํฐ 100์ผ ํ
https://docs.python.org/3/library/functions.html
Quiz) ํ๋ก์ ํธ ๋ด์ ๋๋ง์ ์๊ทธ๋์ฒ๋ฅผ ๋จ๊ธฐ๋ ๋ชจ๋์ ๋ง๋์์ค
byme.py
def sign():
print("์ด ํ๋ก๊ทธ๋จ์ ๋๋์ฝ๋ฉ์ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค.")
print("์ ํ๋ธ : http://youtube.com")
print("์ด๋ฉ์ผ : nadocoding@gmail.com")
practice.py
import byme
byme.sign()
'๊ฐ๋ฐ > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ ๋ฆฌํ 2๊ธฐ] ์น์ 0~1. ํ์ด์ฌ ์์๐ (0) | 2021.03.14 |
---|---|
[์ธํ๋ฐ ๋ฆฌํ 2๊ธฐ] ์ค๋ฆฌ์ํ ์ด์ (OT) ํ๊ธฐ & ๋ค์ง๐ (0) | 2021.03.09 |
ํ์ด์ฌ - ์ฌํ์ ๊ฑฐ๋ฆฌ๋๊ธฐ ์ํ ์๋งค ์์คํ (๋ ๋ฒจ1) (0) | 2021.01.22 |
ํ์ด์ฌ ํ์ฉํธ #1(๊ฒ์ ๊ฐ๋ฐ) (0) | 2020.08.31 |
ํ์ด์ฌ ๊ธฐ๋ณธํธ(1/2) (0) | 2020.08.27 |