from itertools import permutations
def getPermutations(ns, r):
    plist = list(permutations(ns, r))
    print(f'{len(ns)}P{r} 개수: {len(plist)}')
    for n in permutations(ns, r):
        print(n, end='')
import permutation as pt
listVar = [1, 2, 3, 4, 5, 6, 7, 8]
rVar = 3
pt.getPermutations(listVar, rVar)
-> 바로 순열 구해주는 모듈을 가져와 사용(순열 리스트를 뽑을 수 있음)
def getPermutationCnt(n, r):
    result = 1
    for n in range(n, n-r, -1):     
        print('n: {}'.format(n))
        result = result * n
    return result
import permutation as pt
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))
print(f'{numN}P{numR}: {pt.getPermutationCnt(numN, numR)}')
-> 순열 구하는 공식을 써서 모듈 만들어 사용하기
def getCombinationCnt(n, r):
    for n in range(n, (n-r), -1):
        resultP = resultP * n
    for n in range(r, 0, -1):
        resultR = resultR * n
    resultC = int(resultP / resultR)
    return resultC
class NormalTv:
    def __init__(self, i=32, c='black', r='full-HD'):
        self.inch = i
        self.color = c
        self.resolution = r
        self.smartTv = 'off'
        self.aiTv = 'off'
    def turnOn(self):
        print('TV power on!!')
    def turnOff(self):
        print('TV power off!!')
    def printTvInfo(self):
        print(f'inch: {self.inch}inch')
        print(f'color: {self.color}')
        print(f'resolution: {self.resolution}')
        print(f'smartTV: {self.smartTv}')
        print(f'aiTV: {self.aiTv}')
class Tv4K(NormalTv):
    def __init__(self, i, c, r='4k'):
        super().__init__(i, c, r)
    def setSmartTv(self, s):
        self.smartTv = s
class Tv8K(NormalTv):
    def __init__(self, i, c, r='8k'):
        super().__init__(i, c, r)
    def setSmartTv(self, s):
        self.smartTv = s
    def setAiTv(self, a):
        self.aiTv = a
from abc import ABCMeta
from abc import abstractmethod
class AbsDictionary(metaclass=ABCMeta):
    def __init__(self):
        self.wordDic = {}
    @abstractmethod
    def registWord(self, w1, w2):
        pass
    @abstractmethod
    def removeWord(self, w1):
        pass
    @abstractmethod
    def updateWord(self, w1, w2):
        pass
    @abstractmethod
    def searchWord(self, w1):
        pass
class KorToEng(AbsDictionary):
    def __init__(self):
        super().__init__()
    def registWord(self, w1, w2):
        print(f'[KorToEng] registWord() : {w1} to {w2}')
        self.wordDic[w1] = w2
    def removeWord(self, w1):
        print(f'[KorToEng] removeWord() : {w1}')
        del self.wordDic[w1]
    def updateWord(self, w1, w2):
        print(f'[KorToEng] updateWord() : {w1} to {w2}')
        self.wordDic[w1] = w2
    def searchWord(self, w1):
        print(f'[KorToEng] searchWord() : {w1}')
        return self.wordDic[w1]
    def printWords(self):
        for k in self.wordDic.keys():
            print(f'{k} : {self.wordDic[k]}')
-> 책 등록, 삭제, 수정, 검색, 출력 가능
-> 추상메소드를 쓰는 이유 : 이 메소드를 쓰라고 강제하기 위함
from time import sleep
import random
class Song:
    def __init__(self, t, s, pt):
        self.title = t
        self.singer = s
        self.play_time = pt
    def printSongInfo(self):
        print(f'title: {self.title}, singer: {self.singer}, play_time: {self.play_time}')
class Player:
    def __init__(self):
        self.songList = []
        self.isLoop = False
    def addSong(self, s):
        self.songList.append(s)
    def play(self):
        if self.isLoop:
            for s in self.songList:
                print(f'Title: {s.title}, Singer: {s.singer}, Play_time: {s.play_time}sec')
                sleep(s.play_time)
        else:
            for s in self.songList:
                print(f'Title: {s.title}, Singer: {s.singer}, Play_time: {s.play_time}sec')
                sleep(s.play_time)
    def shuffle(self):
        random.shuffle(self.songList)
    def setIsLoop(self, flag):
        self.isLoop = flag
       
import mp3player as mp3
s1 = mp3.Song('신호등', '이무진', 3)
s2 = mp3.Song('Permission to Dance', 'BTS', 4)
s3 = mp3.Song('Butter', 'BTS', 2)
s4 = mp3.Song('Weekend', '태연', 3)
s5 = mp3.Song('좋아좋아', '조정석', 3)
player = mp3.Player()
player.addSong(s1)
player.addSong(s2)
player.addSong(s3)
player.addSong(s4)
player.addSong(s5)
player.setIsLoop(False)
player.shuffle()
player.play()
<제로베이스 데이터 취업 스쿨>