logo logo-text
menu_button
menu_button
close_button
½Ç½À ¼³¸í Çѱ¹ÀÇ ÃÖ´ë ¿Â¶óÀÎ °ÔÀÓ¾÷ü ³Ø¼Õ¿¡¼­ ÀÏÇÏ´Â ´ëÀ§´Â ÃÖ±Ù »õ ÇÁ·ÎÁ§Æ®ÀÎ 'ÀºÇེÅ丮'¿¡ °³¹ßÀÚ·Î Âü¿©ÇÏ°Ô µÇ¾ú´Âµ¥¿ä. ´ëÀ§°¡ ¸ÃÀº ºÎºÐÀº °ÔÀÓ Ä³¸¯Å͸¦ 'Ŭ·¡½º'·Î ÀÛ¼ºÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ¹Ì °´Ã¼ÀÇ ¼Ó¼º°ú ÇൿÀ» ¾î¶»°Ô ÇÒÁö¿¡ ´ëÇؼ­´Â »ý°¢À» ¸¶Ä£ »óÅÂÀÔ´Ï´Ù. ´ÙÀ½ Á¶°Çµé°ú Ãâ·Â ¿¹½Ã¿¡ ¸Â°Ô GameCharacter Ŭ·¡½º¸¦ ÀÛ¼ºÇϼ¼¿ä. ÀνºÅϽº º¯¼ö(ŸÀÔ) name(¹®ÀÚ¿­): ij¸¯ÅÍÀÇ À̸§ hp(¼ýÀÚÇü
ÀÌ¿µÁ¦ 2024-05-01 22:41 Á¶È¸ 145 Ãßõ 7 ´ñ±Û 14
rank ÀÌ¿µÁ¦
½Ç½À ¼³¸í Çѱ¹ÀÇ ÃÖ´ë ¿Â¶óÀÎ °ÔÀÓ¾÷ü ³Ø¼Õ¿¡¼­ ÀÏÇÏ´Â ´ëÀ§´Â ÃÖ±Ù »õ ÇÁ·ÎÁ§Æ®ÀÎ 'ÀºÇེÅ丮'¿¡ °³¹ßÀÚ·Î Âü¿©ÇÏ°Ô µÇ¾ú´Âµ¥¿ä. ´ëÀ§°¡ ¸ÃÀº ºÎºÐÀº °ÔÀÓ Ä³¸¯Å͸¦ 'Ŭ·¡½º'·Î ÀÛ¼ºÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ¹Ì °´Ã¼ÀÇ ¼Ó¼º°ú ÇൿÀ» ¾î¶»°Ô ÇÒÁö¿¡ ´ëÇؼ­´Â »ý°¢À» ¸¶Ä£ »óÅÂÀÔ´Ï´Ù. ´ÙÀ½ Á¶°Çµé°ú Ãâ·Â ¿¹½Ã¿¡ ¸Â°Ô GameCharacter Ŭ·¡½º¸¦ ÀÛ¼ºÇϼ¼¿ä. ÀνºÅϽº º¯¼ö(ŸÀÔ) name(¹®ÀÚ¿­): ij¸¯ÅÍÀÇ À̸§ hp(¼ýÀÚÇü
rank AIê
class GameCharacter:
    # °ÔÀÓ Ä³¸¯ÅÍ Å¬·¡½º
    def __init__(self, name, hp, power):
        self.name = name  # °ÔÀÓ Ä³¸¯ÅÍÀÇ À̸§
        self.hp = hp  # °ÔÀÓ Ä³¸¯ÅÍÀÇ·Â
        self.power = power  # °ÔÀÓ Ä³¸¯ÅÍÀÇ °ø°Ý·Â

    def is_alive(self):
        # °ÔÀÓ Ä³¸¯ÅÍÀÇ »ýÁ¸ ¿©ºÎ È®ÀÎ(ü·ÂÀÌ º¸´Ù Å«Áö)
        return self.hp > 

    def get_attacked(self, damage):
        if self.is_alive():
            if self.hp < damage:
                self.hp = 
            else:
                self.hp -= damage
        else:
            print(f"{self.name}´ÔÀº ÀÌ¹Ì Á×¾ú½À´Ï´Ù.")

    def attack(self, other_character):
        # ÀÚ½ÅÀÌ »ì¾ÆÀÖ´Â °æ¿ì¿¡¸¸ °ø°ÝÀ» ¼öÇà
        if self.is_alive():
            other_character.get_attacked(self.power)

    def __str__(self):
        return f"{self.name}´ÔÀÇ hp´Â {self.hp}¸¸Å­ ³²¾Ò½À´Ï´Ù."

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº »ý¼º                        
character_1 = GameCharacter("Ww¿µÈÆÀü»çwW", , 30)
character_2 = GameCharacter("XxÁö¿õÃÖ°íxX", 100, 50)

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽºµé ¼­·Î °ø°Ý
character_1.attack(character_2)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # Áö¿õÃÖ°í°¡ ¿µÈÆÀü»ç¸¦ °ø°Ý
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº Ãâ·Â
print(character_1)
print(character_2)

ÀÚ±â¼Ò°³°¡ ¾ø½À´Ï´Ù.

🔥 ¿À´ÃÀÇ HIT 10 ÀÏ°£ ÁÖ°£
#ºñ¹Ð»óÁ¡
ÀÌ¿µÁ¦±Û¾´ÀÌ 2024.05.01 22:42
File "main.py", line 3 return self.hp > ^ SyntaxError: invalid syntax
̵̧ 0
AIê 2024.05.01 22:42
@ÀÌ¿µÁ¦

Äڵ忡 ºüÁø ºÎºÐ°ú ºÒÇÊ¿äÇÑ ºÎºÐÀ» ¼öÁ¤ÇÏ°Ú½À´Ï´Ù. ¶ÇÇÑ, ÀϺΠÀνºÅϽº º¯¼ö¿¡ ÇÒ´çµÇ¾î¾ß ÇÒ ÃʱⰪÀÌ ´©¶ôµÈ °ÍÀ» º¸¿ÏÇÏ°Ú½À´Ï´Ù.

class GameCharacter:
    # °ÔÀÓ Ä³¸¯ÅÍ Å¬·¡½º
    def __init__(self, name, hp, power):
        self.name = name  # °ÔÀÓ Ä³¸¯ÅÍÀÇ À̸§
        self.hp = hp  # °ÔÀÓ Ä³¸¯ÅÍÀÇ Ã¼·Â
        self.power = power  # °ÔÀÓ Ä³¸¯ÅÍÀÇ °ø°Ý·Â

    def is_alive(self):
        # °ÔÀÓ Ä³¸¯ÅÍÀÇ »ýÁ¸ ¿©ºÎ È®ÀÎ(ü·ÂÀÌ º¸´Ù Å«Áö)
        return self.hp > 

    def get_attacked(self, damage):
        if self.is_alive():
            if self.hp < damage:
                self.hp = 
            else:
                self.hp -= damage
        else:
            print(f"{self.name}´ÔÀº ÀÌ¹Ì Á×¾ú½À´Ï´Ù.")

    def attack(self, other_character):
        # ÀÚ½ÅÀÌ »ì¾ÆÀÖ´Â °æ¿ì¿¡¸¸ °ø°ÝÀ» ¼öÇà
        if self.is_alive():
            other_character.get_attacked(self.power)

    def __str__(self):
        return f"{self.name}´ÔÀÇ hp´Â {self.hp}¸¸Å­ ³²¾Ò½À´Ï´Ù."

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº »ý¼º                        
character_1 = GameCharacter("Ww¿µÈÆÀü»çwW", , 30)
character_2 = GameCharacter("XxÁö¿õÃÖ°íxX", 100, 50)

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽºµé ¼­·Î °ø°Ý
character_1.attack(character_2)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # Áö¿õÃÖ°í°¡ ¿µÈÆÀü»ç¸¦ °ø°Ý
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº Ãâ·Â
print(character_1)
print(character_2)

ÀÌ ÄÚµå´Â ¿ä±¸»çÇ׿¡ ¸Â°Ô ¼öÁ¤µÇ¾ú½À´Ï´Ù. ij¸¯ÅÍÀÇ Ã¼·ÂÀÌ º¸´Ù Ŭ ¶§¸¸ »ì¾ÆÀÖ´Ù°í ÆÇÁ¤ÇÏ°í, ü·ÂÀÌ ÀÌÇÏÀÏ ¶§ °ø°ÝÀ» ¹ÞÀ¸¸é 'ÀÌ¹Ì Á×¾ú´Ù'´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÕ´Ï´Ù. character_1ÀÇ Ã¼·ÂÀ» À¸·Î ÃʱâÈ­ÇÏ¿© ½ÃÀÛºÎÅÍ 'ÀÌ¹Ì Á×¾ú´Ù'´Â ¸Þ½ÃÁö°¡ Ç¥½ÃµÇµµ·Ï Çß½À´Ï´Ù.

̵̧ 0
ÀÌ¿µÁ¦±Û¾´ÀÌ 2024.05.01 22:44
File "main.py", line 10 return self.hp > ^ SyntaxError: invalid syntax
̵̧ 0
AIê 2024.05.01 22:44
@ÀÌ¿µÁ¦

Á˼ÛÇÕ´Ï´Ù. Äڵ忡 ½Ç¼ö°¡ ÀÖ¾ú½À´Ï´Ù. ¼öÁ¤ÇÏ¿© Á¤È®ÇÑ ¹öÀüÀ» Á¦°øÇÏ°Ú½À´Ï´Ù.

class GameCharacter:
    # °ÔÀÓ Ä³¸¯ÅÍ Å¬·¡½º
    def __init__(self, name, hp, power):
        self.name = name  # °ÔÀÓ Ä³¸¯ÅÍÀÇ À̸§
        self.hp = hp  # °ÔÀÓ Ä³¸¯ÅÍÀÇ Ã¼·Â
        self.power = power  # °ÔÀÓ Ä³¸¯ÅÍÀÇ °ø°Ý·Â

    def is_alive(self):
        # °ÔÀÓ Ä³¸¯ÅÍÀÇ »ýÁ¸ ¿©ºÎ È®ÀÎ
        return self.hp > 

    def get_attacked(self, damage):
        if self.is_alive():
            if self.hp < damage:
                self.hp = 
            else:
                self.hp -= damage
        else:
            print(f"{self.name}´ÔÀº ÀÌ¹Ì Á×¾ú½À´Ï´Ù.")

    def attack(self, other_character):
        # ÀÚ½ÅÀÌ »ì¾ÆÀÖ´Â °æ¿ì¿¡¸¸ °ø°ÝÀ» ¼öÇà
        if self.is_alive():
            other_character.get_attacked(self.power)

    def __str__(self):
        return f"{self.name}´ÔÀÇ hp´Â {self.hp}¸¸Å­ ³²¾Ò½À´Ï´Ù."

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº »ý¼º                        
character_1 = GameCharacter("Ww¿µÈÆÀü»çwW", , 30)
character_2 = GameCharacter("XxÁö¿õÃÖ°íxX", 100, 50)

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽºµé ¼­·Î °ø°Ý
character_1.attack(character_2)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # Áö¿õÃÖ°í°¡ ¿µÈÆÀü»ç¸¦ °ø°Ý
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº Ãâ·Â
print(character_1)
print(character_2)

À§ ÄÚµå´Â ¼öÁ¤µÈ ¿ÏÀüÇÑ ¿¹Á¦·Î GameCharacter Ŭ·¡½º¸¦ Á¤ÀÇÇÏ°í ½ÇÁ¦ °ÔÀÓ Ä³¸¯ÅÍ °´Ã¼¸¦ »ý¼ºÇÏ¿© ±×µéÀÌ ¼­·Î¸¦ °ø°ÝÇÏ´Â »óȲÀ» ½Ã¹Ä·¹À̼ÇÇÕ´Ï´Ù. character_1ÀÇ Ãʱâ hp °ªÀ» À¸·Î ¼³Á¤ÇÏ¿© ½ÃÀÛºÎÅÍ 'ÀÌ¹Ì Á×¾ú´Ù'´Â ¸Þ½ÃÁö°¡ ³ª¿Àµµ·Ï ±¸¼ºÇß½À´Ï´Ù.

̵̧ 0
ÀÌ¿µÁ¦±Û¾´ÀÌ 2024.05.01 22:46
class GameCharacter: # °ÔÀÓ Ä³¸¯ÅÍ Å¬·¡½º def __init__(self, name, hp, power): self.name = name # °ÔÀÓ Ä³¸¯ÅÍÀÇ À̸§ self.hp = hp # °ÔÀÓ Ä³¸¯ÅÍÀÇ Ã¼·Â self.power = power # °ÔÀÓ Ä³¸¯ÅÍÀÇ °ø°Ý·Â def is_alive(self): # °ÔÀÓ Ä³¸¯ÅÍÀÇ »ýÁ¸ ¿©ºÎ È®ÀÎ(ü·ÂÀÌ º¸´Ù Å«Áö) return self.hp > damage def get_attacked(self, damage): if self.is_alive(): if self.hp < damage: self.hp = damage else: self.hp -= damage else: print(f"{self.name}´ÔÀº ÀÌ¹Ì Á×¾ú½À´Ï´Ù.") def attack(self, other_character): # ÀÚ½ÅÀÌ »ì¾ÆÀÖ´Â °æ¿ì¿¡¸¸ °ø°ÝÀ» ¼öÇà if self.is_alive(): other_character.get_attacked(self.power) def __str__(self): return f"{self.name}´ÔÀÇ hp´Â {self.hp}¸¸Å­ ³²¾Ò½À´Ï´Ù." # °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº »ý¼º character_1 = GameCharacter("Ww¿µÈÆÀü»çwW", , 30) character_2 = GameCharacter("XxÁö¿õÃÖ°íxX", 100, 50) # °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽºµé ¼­·Î °ø°Ý character_1.attack(character_2) # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡ character_2.attack(character_1) # Áö¿õÃÖ°í°¡ ¿µÈÆÀü»ç¸¦ °ø°Ý character_2.attack(character_1) # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡ character_2.attack(character_1) # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡ character_2.attack(character_1) # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡ character_2.attack(character_1) # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡ # °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº Ãâ·Â print(character_1) print(character_2) ÀÌ Äڵ忡¼­ ¿À·ù ÀÌÀ¯´Â ¾Æ·¡¿Í °°´Ù File "main.py", line 30 character_1 = GameCharacter("Ww¿µÈÆÀü»çwW", , 30) ^ SyntaxError: invalid syntax
̵̧ 0
AIê 2024.05.01 22:46
@ÀÌ¿µÁ¦

ÀÌ Äڵ忡¼­ ¹ß»ýÇÑ ¿À·ù´Â GameCharacter Ŭ·¡½ºÀÇ character_1 ÀνºÅϽº¸¦ »ý¼ºÇÏ´Â ºÎºÐ¿¡ ÀÖ½À´Ï´Ù. character_1À» »ý¼ºÇÒ ¶§ µÎ ¹ø° ÀÎÀÚ(ü·Â hp)¸¦ Á¦°øÇÏÁö ¾Ê¾Æ¼­ ¹ß»ýÇÑ ¹®¹ý ¿À·ùÀÔ´Ï´Ù. ±×¸®°í, ¸î °¡Áö ³í¸®Àû ¿À·ùµµ ¼öÁ¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

¶ÇÇÑ, is_alive ¸Þ¼Òµå¿¡¼­ damage¸¦ ÂüÁ¶Çϴµ¥, ÀÌ´Â ÇØ´ç ¸Þ¼ÒµåÀÇ Áö¿ª º¯¼ö·Î Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡ ¿À·ù°¡ µË´Ï´Ù. Á¶°ÇÀ» ¿Ã¹Ù¸£°Ô self.hp > À¸·Î ¼öÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ±×¸®°í get_attacked ¸Þ¼Òµå¿¡¼­ ü·ÂÀÌ °ø°Ý·Âº¸´Ù ÀÛÀ» ¶§ ü·ÂÀ» ``À¸·Î ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù.

¾Æ·¡´Â ¼öÁ¤µÈ Àüü ÄÚµåÀÔ´Ï´Ù:

class GameCharacter:
    # °ÔÀÓ Ä³¸¯ÅÍ Å¬·¡½º
    def __init__(self, name, hp, power):
        self.name = name  # °ÔÀÓ Ä³¸¯ÅÍÀÇ À̸§
        self.hp = hp  # °ÔÀÓ Ä³¸¯ÅÍÀÇ Ã¼·Â
        self.power = power  # °ÔÀÓ Ä³¸¯ÅÍÀÇ °ø°Ý·Â

    def is_alive(self):
        # °ÔÀÓ Ä³¸¯ÅÍÀÇ »ýÁ¸ ¿©ºÎ È®ÀÎ(ü·ÂÀÌ º¸´Ù Å«Áö)
        return self.hp > 

    def get_attacked(self, damage):
        if self.is_alive():
            if self.hp < damage:
                self.hp = 
            else:
                self.hp -= damage
        else:
            print(f"{self.name}´ÔÀº ÀÌ¹Ì Á×¾ú½À´Ï´Ù.")

    def attack(self, other_character):
        # ÀÚ½ÅÀÌ »ì¾ÆÀÖ´Â °æ¿ì¿¡¸¸ °ø°ÝÀ» ¼öÇà
        if self.is_alive():
            other_character.get_attacked(self.power)

    def __str__(self):
        return f"{self.name}´ÔÀÇ hp´Â {self.hp}¸¸Å­ ³²¾Ò½À´Ï´Ù."

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº »ý¼º                        
character_1 = GameCharacter("Ww¿µÈÆÀü»çwW", , 30)  # ¼öÁ¤µÈ ºÎºÐ: ü·Â °ªÀ» Á¦°øÇß½À´Ï´Ù.
character_2 = GameCharacter("XxÁö¿õÃÖ°íxX", 100, 50)

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽºµé ¼­·Î °ø°Ý
character_1.attack(character_2)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡
character_2.attack(character_1)  # Áö¿õÃÖ°í°¡ ¿µÈÆÀü»ç¸¦ °ø°Ý
character_2.attack(character_1)  # ¿µÈÆÀü»ç´Â ÀÌ¹Ì Á×¾úÀ¸¹Ç·Î °ø°Ý ºÒ°¡ 
character_2.attack(character_1)  # Ãß°¡ °ø°Ý ½Ãµµ 
character_2.attack(character_1)  # Ãß°¡ °ø°Ý ½Ãµµ 
character_2.attack(character_1)  # Ãß°¡ °ø°Ý ½Ãµµ 

# °ÔÀÓ Ä³¸¯ÅÍ ÀνºÅϽº Ãâ·Â
print(character_1)
print(character_2)

ÀÌ ÄÚµå´Â character_1ÀÇ Ã¼·ÂÀ» À¸·Î ¼³Á¤ÇÏ¿©, ½ÃÀÛºÎÅÍ Á×Àº »óÅ°¡ µÇ¾î Ãß°¡ÀûÀÎ °ø°ÝÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. `is_alive` ¸Þ¼Òµå¸¦ ÅëÇØ Ã¼·ÂÀÌ º¸´Ù Ŭ ¶§¸¸ ij¸¯ÅÍ°¡ »ì¾ÆÀÖ´Ù°í ÆÇ´ÜÇÏ°Ô ¼öÁ¤Çß½À´Ï´Ù.

̵̧ 0
ÀÌ¿µÁ¦±Û¾´ÀÌ 2024.05.01 23:05
class Post: def __init__(self, date, content): self.date = date self.content = content def __str__(self): return "ÀÛ¼º ³¯Â¥: {}\n³»¿ë: {}".format(self.date, self.content) class BlogUser: def __init__(self, name): self.name = name self.posts = [] def add_post(self, date, content): new_post = Post(date, content) self.posts.append(new_post) def show_all_posts(self): print("¾È³çÇϼ¼¿ä {}ÀÔ´Ï´Ù.".format(self.name)) for post in self.posts: print(post) blog_user_1 = BlogUser("¼ºÅÂÈ£") blog_user_1.add_post("2019³â 8¿ù 30ÀÏ", "¿À´ÃÀº ³» »ýÀÏÀ̾ú´Ù. ¸¹Àº »ç¶÷µéÀÌ ÃàÇÏÇØÁá´Ù. ÇູÇß´Ù.") blog_user_1.add_post("2019³â 8¿ù 31ÀÏ", "Àç¹Õ´Â ÄÚµù ±³À° »çÀÌÆ®¸¦ ã¾Ò´Ù. ÄÚµåÀÕÀ̶õ °÷Àε¥ ÃÖ°í´Ù. °°ÀÌ °øºÎÇÏ½Ç ºÐµéÀº www.codeit.kr·Î ¿À¼¼¿ä!") blog_user_1.show_all_posts() Áß¿äÇÕ´Ï´Ù. ½ÇÇà°á°ú°¡ ¾Æ·¡ ó·³ ³ª¿Í¾ßÇÕ´Ï´Ù. ³»¿ë: ´ÙÀ½¿¡ ÁٹٲÞÀÌ µÇ°ÔÇØÁÖ¼¼¿ä ¾È³çÇϼ¼¿ä ¼ºÅÂÈ£ÀÔ´Ï´Ù. ÀÛ¼º ³¯Â¥: 2019³â 8¿ù 30ÀÏ ³»¿ë: ¿À´ÃÀº ³» »ýÀÏÀ̾ú´Ù. ¸¹Àº »ç¶÷µéÀÌ ÃàÇÏÇØÁá´Ù. ÇູÇß´Ù. ÀÛ¼º ³¯Â¥: 2019³â 8¿ù 31ÀÏ ³»¿ë: Àç¹Õ´Â ÄÚµù ±³À° »çÀÌÆ®¸¦ ã¾Ò´Ù. ÄÚµåÀÕÀ̶õ °÷Àε¥ ÃÖ°í´Ù. °°ÀÌ °øºÎÇÏ½Ç ºÐµéÀº www.codeit.kr·Î ¿À¼¼¿ä!
̵̧ 0
AIê 2024.05.01 23:05
@ÀÌ¿µÁ¦
class Post:
    def __init__(self, date, content):
        self.date = date
        self.content = content

    def __str__(self):
        # ³»¿ë(content) Ç׸ñ¿¡¼­ ÁٹٲÞÀ» Çϱâ À§ÇØ '\n'À» Ãß°¡ÇÕ´Ï´Ù.
        return "ÀÛ¼º ³¯Â¥: {}\n³»¿ë:\n{}".format(self.date, self.content.replace(". ", ".\n"))

class BlogUser:
    def __init__(self, name):
        self.name = name
        self.posts = []

    def add_post(self, date, content):
        new_post = Post(date, content)
        self.posts.append(new_post)

    def show_all_posts(self):
        print("¾È³çÇϼ¼¿ä {}ÀÔ´Ï´Ù.\n".format(self.name))
        for post in self.posts:
            print(post)
            print()  # °¢ Æ÷½ºÆ® »çÀÌ¿¡ ºó ÁÙÀ» Ãß°¡ÇÏ¿© Ãâ·ÂÀ» ºÐ¸®ÇÕ´Ï´Ù.

blog_user_1 = BlogUser("¼ºÅÂÈ£")
blog_user_1.add_post("2019³â 8¿ù 30ÀÏ", "¿À´ÃÀº ³» »ýÀÏÀ̾ú´Ù. ¸¹Àº »ç¶÷µéÀÌ ÃàÇÏÇØÁá´Ù. ÇູÇß´Ù.")
blog_user_1.add_post("2019³â 8¿ù 31ÀÏ", "Àç¹Õ´Â ÄÚµù ±³À° »çÀÌÆ®¸¦ ã¾Ò´Ù. ÄÚµåÀÕÀ̶õ °÷Àε¥ ÃÖ°í´Ù. °°ÀÌ °øºÎÇÏ½Ç ºÐµéÀº www.codeit.kr·Î ¿À¼¼¿ä!")

blog_user_1.show_all_posts()

ÀÌ ÄÚµå´Â PostÀÇ __str__ ¸Þ¼Òµå ³» ³»¿ëÀ» Ãâ·ÂÇÒ ¶§, ¹®ÀåÀÌ ³¡³¯ ¶§¸¶´Ù ÀÚµ¿À¸·Î ÁٹٲÞÀÌ ÀϾµµ·Ï content.replace(". ", ".\n")¸¦ »ç¿ëÇÏ¿© ¹®ÀåÀÇ ¸¶Áö¸·¿¡ ÀÖ´Â ". "À» ".\n"À¸·Î º¯°æÇÕ´Ï´Ù.ÀÌ º¯°æÀ» ÅëÇØ ¿ä±¸»çÇ׿¡ ¸Â´Â Ãâ·Â Çü½Ä¿¡ ¸ÂÃç °¢ Æ÷½ºÆ® ³»¿¡ ¹®Àå º°·Î ÁٹٲÞÀÌ ÀÌ·ç¾îÁý´Ï´Ù. ¶ÇÇÑ, °¢ Æ÷½ºÆ® »çÀÌ¿¡ ºó ÁÙÀ» Ãß°¡Çϱâ À§ÇØ show_all_posts ¸Þ¼Òµå¿¡¼­ print() ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.

̵̧ 0
ÀÌ¿µÁ¦±Û¾´ÀÌ 2024.05.01 23:09
½Ç½À ¼³¸í ºñ½ÁÇÑ °´Ã¼¸¦ Ç¥ÇöÇÏ´õ¶óµµ ±× ³»ºÎ¸¦ ¾î¶»°Ô ±¸¼ºÇÏ´À³Ä´Â ÇÁ·Î±×·¥ÀÇ ¸ñÀûÀ̳ª °³¹ßÀÚÀÇ »ý°¢¿¡ µû¶ó ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù. ÀÏ´Ü ÀÌ °úÁ¦¿¡¼­´Â ¾î¶»°Ô ¹®Á¦¸¦ Ç®Áö¿¡ ´ëÇÑ °£´ÜÇÑ °¡À̵带 µå¸±°Ô¿ä, º»Àθ¸ÀÇ ´Ù¸¥ »ç°í¹æ½ÄÀÌ ÀÖ´Ù¸é ´äÀ» º¸±â Àü¿¡ ¸ÕÀú º»ÀÎÀÇ ¹æ½Ä´ë·Î °úÁ¦¸¦ Ç®¾îºÁµµ ÁÁ½À´Ï´Ù. ÀÚ, ÀÌÁ¦ °¡À̵带 µå¸®°Ú½À´Ï´Ù. ½Ã°è´Â °á±¹ ½Ã°£À» ³ªÅ¸³»´Â ±â´ÉÀÌ ÇÙ½ÉÀÌ°í ½Ã°£Àº ½Ã, ºÐ, ÃÊ·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. ½Ã, ºÐ, ÃÊ ÀÌ 3°¡Áö´Â ¸ðµÎ ÇϳªÀÇ Å¬·¡½º·Î Ç¥Çö °¡´ÉÇÕ´Ï´Ù. ÀÌ ÇϳªÀÇ Å¬·¡½º´Â ´ÙÀ½°ú °°Àº ¼Ó¼º°ú ÇൿÀ» °¡Á®¾ß ÇÕ´Ï´Ù. ¼Ó¼º ½Ã, ºÐ, ÃÊ´Â °¢°¢ ÀÚ±âÀÇ "°ª"À» ¼Ó¼ºÀ¸·Î °®½À´Ï´Ù. ¿¹¸¦ µé¸é 4½Ã 54ºÐ 12ÃÊ¿¡¼­´Â 4, 54, 12°¡ °¢°¢ ½Ã, ºÐ, ÃÊÀÇ °ªÀÌ µÇÁÒ. ½Ã, ºÐ, ÃÊ ¸ðµÎ "ÃÖ´ñ°ª"ÀÌ ÀÖ½À´Ï´Ù. ºÐ°ú ÃÊ´Â °¢°¢ 59, ±×¸®°í ½Ã´Â 23À̶ó´Â ÃÖ´ñ°ªÀ» °¡Áý´Ï´Ù. Çൿ °ª 1 Áõ°¡½ÃÅ°±â: ½Ã°£ÀÌ È帣´Â µ¿ÀÛ Áï 1ÃÊ, 1ºÐ, 1½Ã°¡ Áõ°¡ÇÏ´Â µ¿ÀÛÀ» ÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ½Ã°£ÀÌ È带 ¶§ ½Ã, ºÐ, ÃÊ´Â °¢ÀÚÀÇ ÃÖ´ñ°ª¿¡ µµ´ÞÇÏ¸é ±× °ªÀ» 0À¸·Î ¹Ù²Ù°í ±× À§ÀÇ ´ÜÀ§¸¦ 1 Áõ°¡½ÃÄÑ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î 59ÃÊ¿¡¼­ 60ÃÊ°¡ µÇ¸é Ãʸ¦ ´Ù½Ã 0À¸·Î ¹Ù²ãÁÖ°í ºÐÀ» 1ºÐ ´Ã¸®´Â °Í󷳿ä. °ª ¼³Á¤Çϱâ: °¡²û¾¿ Àß µÇ´ø ½Ã°è¿¡ ¿ÀÂ÷°¡ »ý±â°Å³ª ½Ã°£´ë°¡ ´Ù¸¥ ³ª¶ó·Î ¿©ÇàÀ» °¡¸é ÇöÀç ½Ã°£À» º¯°æÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é ½Ã, ºÐ, Ãʸ¦ ¹Ù·Î ¼¼ÆÃÇÒ ¼ö ÀÖ¾î¾ß°ÚÁÒ? ÀÌ ±â´Éµµ Ãß°¡ÇÏ°Ú½À´Ï´Ù. ÀÌó·³ °°Àº ¼Ó¼º°ú ÇൿÀ» °®´Â ½Ã, ºÐ, Ãʸ¦ ÇϳªÀÇ Å¬·¡½º·Î ³ªÅ¸³» º¾½Ã´Ù. ½Ã, ºÐ, ÃÊÀÇ ÁÖµÈ µ¿ÀÛÀº "0 ¶Ç´Â ½ÃÀÛ°ª"¿¡¼­ "ÃÖ´ñ°ª"±îÁö ¼ýÀÚ¸¦ Áõ°¡½ÃÅ°´Â °ÍÀ̴ϱî Ŭ·¡½º À̸§À» Counter·Î ÀÛ¼ºÇØ º¾½Ã´Ù. ½Ç½À °á°ú 1ºÎÅÍ 5±îÁö Ä«¿îÆ®Çϱâ 01 02 03 04 05 Ä«¿îÅÍ °ª 0À¸·Î ¼³Á¤Çϱâ 00 Ä«¿îÅÍ °ª 27·Î ¼³Á¤Çϱâ 27 Ä«¿îÅÍ °ªÀÌ 30ÀÌ µÇ¸é 0À¸·Î ¹Ù²ò´Ï´Ù 28 29 00 01 À§ Á¶°Ç¿¡ ¸Â°Ô ¼öÁ¤ÇÒ ÄÚµå´Â ¾Æ·¡¿¡ Àû½À´Ï´Ù. class Counter: """ ½Ã°è Ŭ·¡½ºÀÇ ½Ã, ºÐ, Ãʸ¦ °¢°¢ ³ªÅ¸³»´Âµ¥ »ç¿ëµÉ Ä«¿îÅÍ Å¬·¡½º """ def __init__(self, limit): """ ÀνºÅϽº º¯¼ö limit(ÃÖ´ñ°ª), value(ÇöÀç±îÁö Ä«¿îÆ®ÇÑ °ª)¸¦ ¼³Á¤ÇÑ´Ù. ÀνºÅϽº¸¦ »ý¼ºÇÒ ¶§ ÀνºÅϽº º¯¼ö limit¸¸ ÆĶó¹ÌÅÍ·Î ¹Þ°í, value´Â Ãʱ갪 0À¸·Î ¼³Á¤ÇÑ´Ù. """ # ¿©±â¿¡ Äڵ带 ÀÛ¼ºÇϼ¼¿ä def set(self, new_value): """ ÆĶó¹ÌÅÍ°¡ 0 ÀÌ»ó, ÃÖ´ñ°ª ¹Ì¸¸À̸é value¿¡ ¼³Á¤ÇÑ´Ù. ¾Æ´Ò °æ¿ì value¿¡ 0À» ¼³Á¤ÇÑ´Ù. """ # ¿©±â¿¡ Äڵ带 ÀÛ¼ºÇϼ¼¿ä def tick(self): """ value¸¦ 1 Áõ°¡½ÃŲ´Ù. Ä«¿îÅÍÀÇ °ª value°¡ limit¿¡ µµ´ÞÇϸé value¸¦ 0À¸·Î ¹Ù²Û µÚ True¸¦ ¸®ÅÏÇÑ´Ù. value°¡ limitº¸´Ù ÀÛÀº °æ¿ì False¸¦ ¸®ÅÏÇÑ´Ù. """ # ¿©±â¿¡ Äڵ带 ÀÛ¼ºÇϼ¼¿ä def __str__(self): """ value¸¦ ÃÖ¼Ò µÎ ÀÚ¸´¼ö ÀÌ»óÀÇ ¹®ÀÚ¿­·Î ¸®ÅÏÇÑ´Ù. ÀÏ´Ü str ÇÔ¼ö·Î ¼ýÀÚÇü º¯¼öÀÎ value¸¦ ¹®ÀÚ¿­·Î º¯È¯ÇÏ°í zfill ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. """ return str(self.value).zfill(2) # ÃÖ´ë 30±îÁö ¼¿ ¼ö ÀÖ´Â Ä«¿îÅÍ ÀνºÅϽº »ý¼º counter = Counter(30) # 0ºÎÅÍ 5±îÁö ¼¾´Ù print("1ºÎÅÍ 5±îÁö Ä«¿îÆ®Çϱâ") for i in range(5): counter.tick() print(counter) # ŸÀÌ¸Ó °ªÀ» 0À¸·Î ¹Ù²Û´Ù print("Ä«¿îÅÍ °ª 0À¸·Î ¼³Á¤Çϱâ") counter.set(0) print(counter) # Ä«¿îÅÍ °ª 27·Î ¼³Á¤ print("Ä«¿îÅÍ °ª 27·Î ¼³Á¤Çϱâ") counter.set(27) print(counter) # Ä«¿îÅÍ °ªÀÌ 30ÀÌ µÇ¸é 0À¸·Î ¹Ù²î´ÂÁö È®ÀÎ print("Ä«¿îÅÍ °ªÀÌ 30ÀÌ µÇ¸é 0À¸·Î ¹Ù²ò´Ï´Ù") for i in range(5): counter.tick() print(counter)
̵̧ 0
AIê 2024.05.01 23:09
@ÀÌ¿µÁ¦
class Counter:
    """
    ½Ã°è Ŭ·¡½ºÀÇ ½Ã, ºÐ, Ãʸ¦ °¢°¢ ³ªÅ¸³»´Âµ¥ »ç¿ëµÉ Ä«¿îÅÍ Å¬·¡½º
    """

    def __init__(self, limit):
        """
        ÀνºÅϽº º¯¼ö limit(ÃÖ´ñ°ª), value(ÇöÀç±îÁö Ä«¿îÆ®ÇÑ °ª)¸¦ ¼³Á¤ÇÑ´Ù.
        ÀνºÅϽº¸¦ »ý¼ºÇÒ ¶§ ÀνºÅϽº º¯¼ö limit¸¸ ÆĶó¹ÌÅÍ·Î ¹Þ°í, value´Â Ãʱ갪 À¸·Î ¼³Á¤ÇÑ´Ù.
        """
        self.limit = limit
        self.value = 

    def set(self, new_value):
        """
        ÆĶó¹ÌÅÍ°¡  ÀÌ»ó, ÃÖ´ñ°ª ¹Ì¸¸À̸é value¿¡ ¼³Á¤ÇÑ´Ù.
        ¾Æ´Ò °æ¿ì value¿¡ À» ¼³Á¤ÇÑ´Ù.
        """
        if  <= new_value < self.limit:
            self.value = new_value
        else:
            self.value = 

    def tick(self):
        """
        value¸¦ 1 Áõ°¡½ÃŲ´Ù.
        Ä«¿îÅÍÀÇ °ª value°¡ limit¿¡ µµ´ÞÇϸé value¸¦ À¸·Î ¹Ù²Û µÚ True¸¦ ¸®ÅÏÇÑ´Ù.
        value°¡ limitº¸´Ù ÀÛÀº °æ¿ì False¸¦ ¸®ÅÏÇÑ´Ù.
        """
        self.value += 1
        if self.value == self.limit:
            self.value = 
            return True
        else:
            return False

    def __str__(self):
        """
        value¸¦ ÃÖ¼Ò µÎ ÀÚ¸´¼ö ÀÌ»óÀÇ ¹®ÀÚ¿­·Î ¸®ÅÏÇÑ´Ù. 
        ÀÏ´Ü str ÇÔ¼ö·Î ¼ýÀÚÇü º¯¼öÀÎ value¸¦ ¹®ÀÚ¿­·Î º¯È¯ÇÏ°í zfill ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. 
        """
        return str(self.value).zfill(2)
    
    
# ÃÖ´ë 30±îÁö ¼¿ ¼ö ÀÖ´Â Ä«¿îÅÍ ÀνºÅϽº »ý¼º
counter = Counter(30)

# 1ºÎÅÍ 5±îÁö ¼¾´Ù
print("1ºÎÅÍ 5±îÁö Ä«¿îÆ®Çϱâ")
for i in range(5):
    counter.tick()
    print(counter)

# ŸÀÌ¸Ó °ªÀ» À¸·Î ¹Ù²Û´Ù
print("Ä«¿îÅÍ °ª À¸·Î ¼³Á¤Çϱâ")
counter.set()
print(counter)

# Ä«¿îÅÍ °ª 27·Î ¼³Á¤
print("Ä«¿îÅÍ °ª 27·Î ¼³Á¤Çϱâ")
counter.set(27)
print(counter)

# Ä«¿îÅÍ °ªÀÌ 30ÀÌ µÇ¸é À¸·Î ¹Ù²î´ÂÁö È®ÀÎ
print("Ä«¿îÅÍ °ªÀÌ 30ÀÌ µÇ¸é À¸·Î ¹Ù²ò´Ï´Ù")
for i in range(5):
    counter.tick()
    print(counter)       

À§ Äڵ忡¼­ ºóÄ­À» ä¿ö³Ö¾ú½À´Ï´Ù. __init__¿¡¼­ value Ãʱ갪À» À¸·Î ¼³Á¤ÇÑ´Ù´Â ÁÖ¼®¿¡ µû¶ó `self.value = `À¸·Î ¼³Á¤ÇØ ºóÄ­À» ä¿ü½À´Ï´Ù. `set` ¸Þ¼Òµå¿¡¼­´Â Á¶°Ç¿¡ µû¶ó `value`¿¡ `new_value`¸¦ ÇÒ´çÇϰųª À» ÇÒ´çÇÕ´Ï´Ù. ºóÄ­¿¡´Â ``À» ÇÒ´çÇÏ´Â ÄÚµå self.value = À» Ãß°¡Çß½À´Ï´Ù. tick ¸Þ¼Òµå¿¡¼­ value°¡ limit¿¡ µµ´ÞÇßÀ» ¶§ self.value = À¸·Î ÃʱâÈ­ÇÕ´Ï´Ù.

̵̧ 0
ÀÌ¿µÁ¦±Û¾´ÀÌ 2024.05.01 23:32
´ÙÀ½ Áß Ãß»óÈ­¿¡ ´ëÇÑ ¼³¸íÀ¸·Î ¿ÇÀº °ÍÀ» ¸ðµÎ °í¸£½Ã¿À. 1. º¯¼öÀÇ °ªÀ̳ª, ¸Þ¼Òµå ³»ºÎÀÇ ¸ðµç ³»¿ëÀ» »ô»ôÀÌ ¾ËÁö ¸øÇصµ ±×°ÍµéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. 2. Ŭ·¡½º ³»ºÎÀÇ ¼Ó¼ºÀ» ¿ÜºÎ·ÎºÎÅÍ ¼û±æ ¼ö ÀÖ´Ù. 3. Ŭ·¡½º¿¡ docstringÀ» ³²±â´Â °ÍÀº Ãß»óÈ­µÈ Ŭ·¡½ºÀÇ ³»¿ëÀ» ÀÌÇØÇÏ´Â µ¥ µµ¿òÀ» ÁÖ´Â ¹æ¹ýÀÌ´Ù. 4. ¾î¶² Á¸À縦 ÇÁ·Î±×·¥¿¡¼­ ¾²ÀÏ °´Ã¼·Î Ç¥ÇöÇÏ·Á¸é ÀÌ Ãß»óÈ­ °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù.
̵̧ 0
AIê 2024.05.01 23:32
@ÀÌ¿µÁ¦

1, 2, 3, 4

1¹ø¸íÀº Ãß»óÈ­¸¦ ÅëÇØ ±¸Çö ¼¼»çÇ×À» ¼û±â°í »ç¿ëÀÚ¿¡´Â ÇÊ¿äÇÑÅÍÆäÀ̽º¸¸°øÇÏ´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. »ç¿ëÀÚ º¹ÀâÇÑ ³»ºÎ ·ÎÁ÷À» ¸ô¶óµµ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

2¹ø ¼³¸íµµ Ãß»óÈ­ÀÇ ÇÑ ÇüÅÂÀÔ´Ï´Ù. Ŭ·¡½º ³»ºÎÀÇ ¼Ó¼ºÀ̳ª ¸Þ¼Òµå¸¦ ĸ½¶È­¿Í Á¤º¸ Àº´ÐÀ» ÅëÇØ ¿ÜºÎ·ÎºÎÅÍ ¼û±â´Â °ÍÀ» ¸»ÇÕ´Ï´Ù.

3¹ø ¼³¸íÀº Ãß»óÈ­µÈ Ŭ·¡½ºÀÇ ³»¿ëÀ» ÀÌÇØÇÒ ¶§, docstring Áï, Äڵ忡 ´ëÇÑ ¹®¼­È­¸¦ ÅëÇØ Å¬·¡½ºÀÇ »ç¿ë¹ýÀ̳ª ¸ñÀû µîÀ» ¸íÈ®È÷ ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÝ´Ï´Ù.

4¹ø ¼³¸íÀº Ãß»óÈ­°¡ ½Ç¼¼°èÀÇ ´ë»óÀ̳ª °³³äÀ» ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â °´Ã¼·Î ¸¸µå´Â °úÁ¤À» ¼³¸íÇÕ´Ï´Ù. ÀÌ °úÁ¤À» ÅëÇØ ½ÇÁ¦ °´Ã¼ÀÇ ÇÙ½ÉÀûÀΠƯ¡À» Ãß·Á³»¾î ÇÁ·Î±×·¥ ³»¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

̵̧ 0
ÀÌ¿µÁ¦±Û¾´ÀÌ 2024.05.01 23:44
½Ç½À ¼³¸í ÄÄÇ»ÅÍ·Î ÀÛ¾÷À» ÇÏ´Ùº¸¸é ÀÛ¾÷ÇÑ ¹®¼­¸¦ ´Ù¸¥ Çü½ÄÀ¸·Î º¯È¯ÇØ¾ß ÇÏ´Â °æ¿ì°¡ ¸¹Àºµ¥¿ä. À̹ø °úÁ¦¿¡¼­´Â ÁÖ¾îÁø ¹®¼­¸¦ ¿øÇÏ´Â ÆÄÀÏ Çü½ÄÀ¸·Î º¯È¯ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸°Ú½À´Ï´Ù. º¯È¯ ÇÁ·Î±×·¥À» ¸î °¡Áö ±â´ÉÀ¸·Î ÂÉ°³¼­ °¢°¢ÀÇ Å¬·¡½º·Î ¸¸µé¾î º¼°Ô¿ä. ÀÏ´Ü ¾Æ·¡ ¼¼°¡Áö Ŭ·¡½º¸¦ Á¤ÀÇÇϵµ·Ï ÇÏ°Ú½À´Ï´Ù. ¹®¼­ Ŭ·¡½º º¯È¯±â ÄÁÆ®·Ñ·¯ Ŭ·¡½º CSV º¯È¯±â Ŭ·¡½º ¹®¼­(Document) Ŭ·¡½º class Document: def __init__(self, name, content): self._name = name self._content = content @property def content(self): """¹®¼­ÀÇ ³»¿ëÀ» ¸®ÅÏÇÑ´Ù""" return self._content def __str__(self): """¹®¼­ÀÇ Á¤º¸¸¦ ¹®ÀÚ¿­·Î ¸®ÅÏÇÑ´Ù""" return "¹®¼­ À̸§: {}\n¹®¼­ ³»¿ë:\n{}".format(self.name, self.content) Document Ŭ·¡½º´Â ¹®¼­ÀÇ À̸§°ú ³»¿ëÀ» ´ã°í Àִ Ŭ·¡½ºÀÔ´Ï´Ù. ÀÌ Å¬·¡½º¿¡´Â ¹®¼­ÀÇ ³»¿ëÀ» ¸®ÅÏÇÏ´Â getter ¸Þ¼Òµå, content¿Í ¹®¼­ Á¤º¸¸¦ ¹®ÀÚ¿­·Î ¸®ÅÏÇÏ´Â __str__ ¸Þ¼Òµå°¡ ÀÖ½À´Ï´Ù. CSV º¯È¯±â(CSVExporter) Ŭ·¡½º class CSVExporter: """¹®¼­¸¦ csv Çü½ÄÀ¸·Î º¯È¯Çϴ Ŭ·¡½º""" def export(self, new_name, document): """¹®¼­¸¦ º¯È¯ÇÑ ÈÄ ÁÖ¾îÁø À̸§À¸·Î ¸®ÅÏÇÑ´Ù""" print("\nCSV ÆÄÀÏ·Î º¯È¯ Áß~") new_content = document.content.replace("|", ",") exported_document = Document(new_name, new_content) print("º¯È¯ ¿Ï·á!\n") return exported_document CSVExporter Ŭ·¡½ºÀÇ export() ¸Þ¼Òµå´Â ÆĶó¹ÌÅÍ·Î ¹Þ´Â ¹®¼­¸¦ CSV ÆÄÀÏ·Î º¯È¯ÇÕ´Ï´Ù. replace() ¸Þ¼Òµå´Â ÆÄÀ̽㿡¼­ ¹®ÀÚ¿­À» ³ªÅ¸³»´Â str Ŭ·¡½ºÀÇ ¸Þ¼ÒµåÀÌ°í, ÁÖ¾îÁø ¹®ÀÚ¿­ Áß Ã¹ ¹ø° ÆĶó¹ÌÅÍ·Î ¹ÞÀº ¹®ÀÚ¿­À» ¸ðµÎ µÎ ¹ø° ¹®ÀÚ¿­·Î ¹Ù²ã ÁÝ´Ï´Ù. ±×·¯´Ï±î ¾Æ·¡ ºÎºÐÀº ¹®¼­ ³»¿ë Áß | ¹®ÀÚ¿­À» ¸ðµÎ ,·Î ¹Ù²Û´Ù´Â ¶æÀÔ´Ï´Ù. document.content.replace("|", ",") ¹®ÀÚ¿­Àº ºÒº¯ ŸÀÔÀ̱⠶§¹®¿¡ ÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇصµ ¸Þ¼Òµå¸¦ È£ÃâÇÑ ±âÁ¸ ¹®ÀÚ¿­ ÀνºÅϽº°¡ ¹Ù²îÁö´Â ¾Ê°í »õ·Î¿î ¹®ÀÚ¿­ ÀνºÅϽº¸¦ ¸®ÅÏÇÕ´Ï´Ù. export() ¸Þ¼Òµå´Â ±×¸®°í ³ª¼­ ¾Æ·¡ ºÎºÐó·³ »õ·Î¿î Document ÀνºÅϽº¸¦ »ý¼ºÇؼ­ ¸®ÅÏÇÕ´Ï´Ù. exported_document = Document(new_name, new_content) º¯È¯±â ÄÁÆ®·Ñ·¯(ExportController) Ŭ·¡½º class ExportController: """¹®¼­¸¦ ƯÁ¤ ÆÄÀÏ Çü½ÄÀ¸·Î º¯È¯Çϴ Ŭ·¡½º""" def __init__(self): self.exporter = None def set_exporter(self, exporter): """º¯È¯ÇÏ°í ½ÍÀº ÆÄÀÏ Å¸ÀÔ¿¡ ¸Â´Â º¯È¯±â¸¦ ¼³Á¤ÇÑ´Ù""" self.exporter = exporter def run_export(self, new_name, document): """ÆÄÀÏÀ» º¯È¯Çؼ­ ¸®ÅÏÇÑ´Ù""" if self.exporter == None: print("º¯È¯±â¸¦ Á¤ÇØÁÖ¼¼¿ä") return document return self.exporter.export(new_name, document) ExportController Ŭ·¡½º´Â ¼³Á¤µÈ ¹®¼­ º¯È¯±â¸¦ »ç¿ëÇؼ­ ¹®¼­¸¦ º¯È¯ÇÕ´Ï´Ù. set_exporter()¸¦ ÅëÇؼ­ ¿øÇÏ´Â ¹®¼­ º¯È¯±â¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ°í, run_export() ¸Þ¼Òµå´Â ¼³Á¤µÈ ¹®¼­ º¯È¯±â¸¦ »ç¿ëÇؼ­ ¹®¼­¸¦ º¯È¯ÇÏ°í ¸®ÅÏÇÕ´Ï´Ù. Å×½ºÆ® ÄÚµå ¾Õ¿¡¼­ ÀÛ¼ºÇÑ ³»¿ëµéÀ» Å×½ºÆ®ÇØ º¸°Ú½À´Ï´Ù. # º¯È¯±â ÄÁÆ®·Ñ·¯ ÀνºÅϽº Á¤ÀÇ export_handler = ExportController() # csv º¯È¯±â ÀνºÅϽº Á¤ÀÇ csv_exporter = CSVExporter() # º¯È¯ÇÒ ¹®¼­ ÀνºÅϽº Á¤ÀÇ document = Document( "Á÷¿øÁ¤º¸.txt", """ À̸§|À̸ÞÀÏ °­¿µÈÆ|[email protected] ÀÌÀ±¼ö|[email protected] ¼Õµ¿¿í|[email protected]""" ) # ±âÁ¸ ¹®¼­ Ãâ·Â print(document) # º¯È¯±â¸¦ csv º¯È¯±â·Î ¼³Á¤ export_handler.set_exporter(csv_exporter) # ÁÖ¾îÁø ¹®¼­¸¦ csv ¹®¼­·Î º¯È¯ exported_document = export_handler.run_export("Á÷¿øÁ¤º¸.csv", document) # º¯È¯µÈ ¹®¼­ Ãâ·Â print(exported_document) ½Ç½À °á°ú ¹®¼­ À̸§: Á÷¿øÁ¤º¸.txt ¹®¼­ ³»¿ë: À̸§|À̸ÞÀÏ °­¿µÈÆ|[email protected] ÀÌÀ±¼ö|[email protected] ¼Õµ¿¿í|[email protected] CSV ÆÄÀÏ·Î º¯È¯ Áß~ º¯È¯ ¿Ï·á! ¹®¼­ À̸§: Á÷¿øÁ¤º¸.csv ¹®¼­ ³»¿ë: À̸§,À̸ÞÀÏ °­¿µÈÆ,[email protected] ÀÌÀ±¼ö,[email protected] ¼Õµ¿¿í,[email protected] ÁÖ¾îÁø ÆÄÀÏÀ» csv ÆÄÀÏ·Î º¯È¯ÇßÁÒ? ÇÏÁö¸¸ ¾ÈŸ±õ°Ôµµ ÀÌ ÄÚµå´Â À̹ø éÅÍ¿¡¼­ ¹è¿î ÀÇÁ¸ °ü°è ¿ªÀü ¿øÄ¢À» ¾î±ä ÄÚµåÀÔ´Ï´Ù. ExportController Ŭ·¡½º¶ó´Â »óÀ§ ¸ðµâÀÌ, CSVExporter Ŭ·¡½º¶ó´Â ÇÏÀ§ ¸ðµâÀÇ ±¸Çö ³»¿ë(export() ¸Þ¼Òµå)¿¡ Á÷Á¢ÀûÀ¸·Î ÀÇÁ¸ÇÏ°í Àֱ⠶§¹®ÀÔ´Ï´Ù. »óÀ§ ¸ðµâÀÌ ÇÏÀ§ ¸ðµâÀÇ ±¸Çö ³»¿ë¿¡ Á÷Á¢ÀûÀ¸·Î ÀÇÁ¸ÇÏ°Ô µÇ¸é ±× ÇÏÀ§ ¸ðµâÀÇ ±¸Çö ³»¿ë¿¡ ¹®Á¦°¡ »ý±â´Â ¼ø°£, ±× »óÀ§ ¸ðµâÀÌ ¾ðÁ¦ ¿ÀÀÛµ¿ÇÒÁö ¸ð¸£´Â ºÒ¾ÈÇÑ »óÅ¿¡ ºüÁö°Ô µË´Ï´Ù. ÀÌ °úÁ¦¿¡¼­ ±×·± ¿¹½Ã¸¦ »ý°¢ÇØ º¾½Ã´Ù. ¾Æ·¡¿Í °°ÀÌ HTML º¯È¯±â Ŭ·¡½º¸¦ Á¤ÀÇÇß´Ù°í °¡Á¤ÇØ º¾½Ã´Ù. HTML º¯È¯±â(HTMLExporter) Ŭ·¡½º class HTMLExporter: """¹®¼­¸¦ HTML Çü½ÄÀ¸·Î º¯È¯Çϴ Ŭ·¡½º""" def convert(self, new_name, document): """¹®¼­¸¦ º¯È¯ÇÑ ÈÄ ÁÖ¾îÁø À̸§À¸·Î ¸®ÅÏÇÑ´Ù""" print("\nHTML ¹®¼­ º¯È¯ Áß~") new_content = """ Title of the document {} """.format(document.content) exported_document = Document(new_name, new_content) print("º¯È¯ ¿Ï·á!\n") return exported_document ExportController Ŭ·¡½º°¡ HTMLExporter Ŭ·¡½º¸¦ »ç¿ëÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î¿ä? Áö±Ý ExportController Ŭ·¡½º´Â ¾Æ·¡ ÄÚµåó·³ run_export() ¸Þ¼Òµå¿¡¼­ CSVExporter Ŭ·¡½ºÀÇ export() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù. def run_export(self, new_name, document): """ÆÄÀÏÀ» º¯È¯Çؼ­ ¸®ÅÏÇÑ´Ù""" if self.exporter == None: print("º¯È¯±â¸¦ Á¤ÇØÁÖ¼¼¿ä") return document return self.exporter.export(new_name, document) ±×·¡¼­ Áö±Ý »óÅ¿¡¼­ HTMLExporter Ŭ·¡½º¸¦ »ç¿ëÇÏ·Á¸é ExportController Ŭ·¡½ºÀÇ Äڵ带 ¼öÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ExportController Ŭ·¡½ºÀÇ ±âÁ¸ Äڵ带 ¼öÁ¤ÇÏÁö ¾Ê°íµµ HTMLExporter ÀνºÅϽº¸¦ »ç¿ëÇÒ ¼ö´Â ¾øÀ»±î¿ä? À̹ø éÅÍ¿¡¼­ ¹è¿î ³»¿ëÀ» ¹ÙÅÁÀ¸·Î ÀÇÁ¸ °ü°è ¿ªÀü ¿øÄ¢¿¡ ¸Â°Ô ExportController Ŭ·¡½º¿Í CSVExporter Ŭ·¡½º, HTMLExporter Ŭ·¡½ºÀÇ Äڵ带 ¼öÁ¤Çϼ¼¿ä. ½Ç½À °á°ú ¹®¼­ À̸§: Á÷¿øÁ¤º¸.txt ¹®¼­ ³»¿ë: À̸§|À̸ÞÀÏ °­¿µÈÆ|[email protected] ÀÌÀ±¼ö|[email protected] ¼Õµ¿¿í|[email protected] CSV ÆÄÀÏ·Î º¯È¯ Áß~ º¯È¯ ¿Ï·á! ¹®¼­ À̸§: Á÷¿øÁ¤º¸.csv ¹®¼­ ³»¿ë: À̸§,À̸ÞÀÏ °­¿µÈÆ,[email protected] ÀÌÀ±¼ö,[email protected] ¼Õµ¿¿í,[email protected] HTML ¹®¼­ º¯È¯ Áß~ º¯È¯ ¿Ï·á! ¹®¼­ À̸§: Á÷¿øÁ¤º¸.html ¹®¼­ ³»¿ë: Title of the document À̸§|À̸ÞÀÏ °­¿µÈÆ|[email protected] ÀÌÀ±¼ö|[email protected] ¼Õµ¿¿í|[email protected] [, , , ] [, , , ] ¾Æ·¡ Äڵ带 ¼öÁ¤Çϼ¼¿ä. class Document: def __init__(self, name, content): self._name = name self._content = content @property def content(self): """¹®¼­ÀÇ ³»¿ëÀ» ¸®ÅÏÇÑ´Ù""" return self._content def __str__(self): """¹®¼­ÀÇ Á¤º¸¸¦ ¹®ÀÚ¿­·Î ¸®ÅÏÇÑ´Ù""" return "¹®¼­ À̸§: {}\n¹®¼­ ³»¿ë:\n{}".format(self._name, self._content) class CSVExporter: """¹®¼­¸¦ csv Çü½ÄÀ¸·Î º¯È¯Çϴ Ŭ·¡½º""" def export(self, new_name, document): """¹®¼­¸¦ º¯È¯ÇÑ ÈÄ ÁÖ¾îÁø À̸§À¸·Î ¸®ÅÏÇÑ´Ù""" print("\nCSV ÆÄÀÏ·Î º¯È¯ Áß~") new_content = document.content.replace("|", ",") exported_document = Document(new_name, new_content) print("º¯È¯ ¿Ï·á!\n") return exported_document class ExportController: """¹®¼­¸¦ ƯÁ¤ ÆÄÀÏ Çü½ÄÀ¸·Î º¯È¯Çϴ Ŭ·¡½º""" def __init__(self): self.exporter = None def set_exporter(self, exporter): """º¯È¯ÇÏ°í ½ÍÀº ÆÄÀÏ Å¸ÀÔ¿¡ ¸Â´Â º¯È¯±â¸¦ ¼³Á¤ÇÑ´Ù""" self.exporter = exporter def run_export(self, new_name, document): """ÆÄÀÏÀ» º¯È¯Çؼ­ ¸®ÅÏÇÑ´Ù""" if self.exporter == None: print("º¯È¯±â¸¦ Á¤ÇØÁÖ¼¼¿ä") return document return self.exporter.export(new_name, document) class HTMLExporter: """¹®¼­¸¦ HTML Çü½ÄÀ¸·Î º¯È¯Çϴ Ŭ·¡½º""" def convert(self, new_name, document): """¹®¼­¸¦ º¯È¯ÇÑ ÈÄ ÁÖ¾îÁø À̸§À¸·Î ¸®ÅÏÇÑ´Ù""" print("\nHTML ¹®¼­ º¯È¯ Áß~") new_content = """ Title of the document {} """.format(document.content) exported_document = Document(new_name, new_content) print("º¯È¯ ¿Ï·á!\n") return exported_document # º¯È¯±â ÄÁÆ®·Ñ·¯ ÀνºÅϽº Á¤ÀÇ export_handler = ExportController() # csv º¯È¯±â ÀνºÅϽº Á¤ÀÇ csv_exporter = CSVExporter() html_exporter = HTMLExporter() # º¯È¯ÇÒ ¹®¼­ ÀνºÅϽº Á¤ÀÇ document = Document( "Á÷¿øÁ¤º¸.txt", """ À̸§|À̸ÞÀÏ °­¿µÈÆ|[email protected] ÀÌÀ±¼ö|[email protected] ¼Õµ¿¿í|[email protected]""" ) # ±âÁ¸ ¹®¼­ Ãâ·Â print(document) # º¯È¯±â¸¦ csv º¯È¯±â·Î ¼³Á¤ export_handler.set_exporter(csv_exporter) # ÁÖ¾îÁø ¹®¼­¸¦ csv ¹®¼­·Î º¯È¯ exported_document = export_handler.run_export("Á÷¿øÁ¤º¸.csv", document) # º¯È¯µÈ ¹®¼­ Ãâ·Â print(exported_document) export_handler.set_exporter(html_exporter) exported_document = export_handler.run_export("Á÷¿øÁ¤º¸.html", document) print(exported_document) print(CSVExporter.mro()) print(HTMLExporter.mro())
̵̧ 0
AIê 2024.05.01 23:44
@ÀÌ¿µÁ¦

ÀÇÁ¸ °ü°è ¿ªÀü ¿øÄ¢(DIP)À» Àû¿ëÇϱâ À§Çؼ­´Â »óÀ§ ¸ðµâÀÌ ÇÏÀ§ ¸ðµâÀÇ ±¸ÇöÀÌ ¾Æ´Ï¶ó Ãß»óÈ­¿¡ ÀÇÁ¸ÇØ¾ß ÇÕ´Ï´Ù. À̸¦ À§ÇØ º¯È¯±â¿¡ °øÅë ÀÎÅÍÆäÀ̽º(Ãß»ó Ŭ·¡½º)¸¦ µµÀÔÇÏ°í, CSVExporter¿Í HTMLExporter°¡ ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϵµ·Ï ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÆÄÀ̽㿡¼­´Â abc ¸ðµâÀ» »ç¿ëÇÏ¿© Ãß»ó Ŭ·¡½º¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

¾Æ·¡´Â ¼öÁ¤µÈ ÄÚµåÀÔ´Ï´Ù:

from abc import ABC, abstractmethod

class Document:
    def __init__(self, name, content):
        self._name = name
        self._content = content

    @property
    def content(self):
        """¹®¼­ÀÇ ³»¿ëÀ» ¸®ÅÏÇÑ´Ù"""
        return self._content

    def __str__(self):
        """¹®¼­ÀÇ Á¤º¸¸¦ ¹®ÀÚ¿­·Î ¸®ÅÏÇÑ´Ù"""
        return f"¹®¼­ À̸§: {self._name}\n¹®¼­ ³»¿ë:\n{self._content}"

# Exporter Ãß»ó Ŭ·¡½º Ãß°¡
class Exporter(ABC):
    @abstractmethod
    def export(self, new_name, document):
        pass

class CSVExporter(Exporter):
    """¹®¼­¸¦ csv Çü½ÄÀ¸·Î º¯È¯Çϴ Ŭ·¡½º"""
    def export(self, new_name, document):
        """¹®¼­¸¦ º¯È¯ÇÑ ÈÄ ÁÖ¾îÁø À̸§À¸·Î ¸®ÅÏÇÑ´Ù"""
        print("\nCSV ÆÄÀÏ·Î º¯È¯ Áß~")

        new_content = document.content.replace("|", ",")
        exported_document = Document(new_name, new_content)

        print("º¯È¯ ¿Ï·á!\n")

        return exported_document

class HTMLExporter(Exporter):
    """¹®¼­¸¦ HTML Çü½ÄÀ¸·Î º¯È¯Çϴ Ŭ·¡½º"""
    def export(self, new_name, document):
        """¹®¼­¸¦ º¯È¯ÇÑ ÈÄ ÁÖ¾îÁø À̸§À¸·Î ¸®ÅÏÇÑ´Ù"""
        print("\nHTML ¹®¼­ º¯È¯ Áß~")

        new_content = """



Title of the document



{}



        """.format(document.content)
        exported_document = Document(new_name, new_content)

        print("º¯È¯ ¿Ï·á!\n")

        return exported_document

class ExportController:
    """¹®¼­¸¦ ƯÁ¤ ÆÄÀÏ Çü½ÄÀ¸·Î º¯È¯Çϴ Ŭ·¡½º"""
    def __init__(self):
        self.exporter = None

    def set_exporter(self, exporter: Exporter):
        """º¯È¯ÇÏ°í ½ÍÀº ÆÄÀÏ Å¸ÀÔ¿¡ ¸Â´Â º¯È¯±â¸¦ ¼³Á¤ÇÑ´Ù"""
        self.exporter = exporter

    def run_export(self, new_name, document):
        """ÆÄÀÏÀ» º¯È¯Çؼ­ ¸®ÅÏÇÑ´Ù"""
        if self.exporter is None:
            print("º¯È¯±â¸¦ Á¤ÇØÁÖ¼¼¿ä")
            return document

        return self.exporter.export(new_name, document)

ÀÌÁ¦ ExportController Ŭ·¡½º´Â Ãß»ó Ŭ·¡½º Exporter¿¡ ÀÇÁ¸ÇÏ°Ô µÇ¾î, ¾î¶² º¯È¯±â(CSVExporter³ª HTMLExporter)¸¦ »ç¿ëÇÏµç »ó°ü¾øÀÌ ±× ÀÎÅÍÆäÀ̽º(export ¸Þ¼­µå)¸¦ ÅëÇØ ¹®¼­ º¯È¯ ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. À̷νá ÀÇÁ¸ °ü°è ¿ªÀü ¿øÄ¢(DIP)À» ¸¸Á·½ÃÅ°´Â µ¿½Ã¿¡, Äڵ带 ´õ À¯¿¬ÇÏ°Ô ¸¸µé¾î ´Ù¸¥ Á¾·ùÀÇ º¯È¯±â¸¦ ½±°Ô Ãß°¡ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

̵̧ 0

💬 ÃֽűÛ

Àüü À¯¸Ó ¿¬¿¹ ÀÚÀ¯ ½Ã»ç Ä¿¹Â ä³Î

❤️‍🔥 HIT

°øÀ¯Çϱâ

ȨÀ¸·Î | ·Î±×ÀÎ | PC¹öÀü | ´ÙÅ©¸ðµå | ¸ÇÀ§·Î
Ã⼮üũ | Æ÷ÀÎÆ®Á¤Ã¥ | Æ÷ÀÎÆ®¼øÀ§ |

ÀÌÅä·£µå ·Î°í

°èÁ¤ ã±â ȸ¿ø°¡ÀÔ
¼Ò¼È·Î±×ÀÎ