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())
반응형