PYTHON/파이썬 코딩 도장

파이썬 코딩 도장 UNIT 38, 39, 40, 41, 42 심사문제

GaeGim 2022. 8. 3. 16:15
반응형

38.7 심사문제: 회문이 아니면 예외 발생시키기

class NotPalindromeError(Exception):
    def __init__(self):
        super().__init__('회문이 아닙니다.')

def palindrome(word):
       if word != word[::-1]:
           raise NotPalindromeError()
       print(word)

try:
    word = input()
    palindrome(word)
except NotPalindromeError as e:
    print(e)

 

 

 

 

39.7 심사문제: 시간 이터레이터 만들기

class TimeIterator:
    def __init__(self, strt, stp):
        self.strt=strt
        self.stp=stp
    def __getitem__(self, idx):
        if idx < self.stp-self.strt:
            sec = (self.strt+idx)%60
            min = (self.strt+idx)//60%60
            hour = (self.strt)//60//60%24
            return '{0:02d}:{1:02d}:{2:02}'.format(hour,min,sec)
        else: raise IndexError

strt, stp, idx = map(int, input().split())

for i in TimeIterator(strt, stp):
    print(i)

print('\n',TimeIterator(strt, stp)[idx], sep='')

※ time 함수를 활용할 수도 있다

 

 

 

 

40.6 심사문제: 소수 제너레이터 만들기

def prime_number_generator(start, stop):
  for n in range(strt, stop):
    primeTF = True
    for i in range(2, n):
      if n % i == 0:
        primeTF = False
    if primeTF:
      yield n

strt, stp= map(int, input().split())
g = prime_number_generator(strt, stp)
print(type(g))
for i in g:
    print(i, end=' ')

 

 

 

 

41.7 심사문제: 사칙연산 코루틴 만들기

def calc():
  result = 0
  while True:
    exp = (yield result)
    a, op, b = exp.split()
    if operator == '+':
      result = int(a) + int(b)
    elif op == '-':
      result = int(a) - int(b)
    elif op == '*':
      result = int(a) * int(b)
    elif op == '/':
      result = int(a) / int(b)

expressions = input().split(', ')
c = calc()
next(c)
for e in expressions:
    print(c.send(e))
c.close()

 

 

 

 

42.8 심사문제: HTML 태그 데코레이터 만들기

class html_tag:
  def __init__(self, tag_name):
    self.tag_name = tag_name

  def __call__(self, func):
    def wrapper():
      return '<{0}>{1}</{0}>'.format(self.tag_name, func())
    return wrapper
    
a, b = input().split()
@html_tag(a)
@html_tag(b)
def hello():
    return 'Hello, world!'
print(hello())

 

반응형