오늘은 그동안 살펴본 클래스, 모듈, 패키지, 라이브러리에 대한 연습문제를 풀어보고자 합니다. 금방 풀어버릴 수 있을 것 같았는데 바로 저의 오만방자함을 일깨우듯 에러투성이더군요. 구글링(파이썬 공식 홈페이지)+오픈북^^ 하며 풀어갔습니다. 시간이 다소 걸리더라도 한번 풀어보시길 권장합니다. 직접 책을 찾고 구글링하며 얻어지는 게 있더군요.
그동안 봐 왔던 내용들도 조금 정리되기도 하고. 분명 맞는데…맞는데…하며 코딩을 했음에도 역시나 제가 잘못 생각한 뭔가가 막 나오더군요. 그래서 오늘도 조금씩 배워갑니다. 파이썬!
(제 파이썬 학습교재로 사용중인 #점프투파이썬의 연습문제를 사용했습니다.)
Q1. 클래스 상속 문제입니다.
class Calculator:
def __init__(self):
self.value = 0
def add(self, val):
self.value += val
위 클래스 상속하는 UpgradeCalculator를 만들고 값을 뺄 수 있는 minus 메서드를 추가해 봅니다.
다음과 같이 동작하는 클래스를 만들어야 합니다.
cal = UpgradeCalculator()
cal.add(10)
cal.minus(7)
print (cal.value)
간단하게 풀렸습니다.
Q2. 객체 변수 value가 100 이상 값을 가질 수 없도록 제한하는 MaxLimitCalculator 클래스를 만들어 봅니다. 단, Q1의 Calculator를 상속해서 만들어야 합니다.
여기까지도 뭐! 그리 어렵지 않습니다.
Q3. 아래 2개의 결과를 예측해 봅니다.
>>> all([1,2, abs(-3)-3])
>>> chr(ord('a')) == 'a'
하나는 False, 또 하나는 True입니다. 저는 하나는 맞고, 하나는 틀렸습니다.
Q4. filter와 lambda를 사용하여 리스트[1, -2,3, -5,8, -3]에서 음수를 제거해 봅니다.
a = [1, -2,3, -5,8, -3]
print(list(filter(lambda a : a>0, a)))
깨끗하게 결괏값을 보여 줍니다.
[1, 3, 8]
Q5. 234라는 10진수의 16진수는 다음과 같습니다. 그 문자열을 다시 10진수로 바꿔봅니다.
>>>hex(234)
‘0xea’
print (hex(234))
print (int(hex(234),16))
실행 결과
0xea
234
Q6. map, lambda를 사용하여 [1,2,3,4] 리스트의 각 요소에 3이 곱해진 리스트[3,6,9,12]를 만들어 봅니다.
a = [1,2,3,4]
print(list(map(lambda x: x*3, a)))
실행 결과
[3, 6, 9, 12]
Q7. [-8,2,7,5, -3,5,0,1] 리스트 최댓값과 최솟값의 합을 구해봅니다.
a = [-8,2,7,5, -3,5,0,1]
print('MAX + min = ',max(a)+min(a))
실행 결과
MAX + min = -1
Q8. 17/3의 결과를 소수점 4자리까지만 반올림하여 표시해 봅니다.
>>> 17/3
5.666666666666667
>>> round(17/3,4)
5.6667
너무 간단합니다. 엑셀 함수 생각하며 혹시 했는데 바로 풀리더군요.
Q9. 다음과 같이 실행할 때 입력값 모두 더하여 출력하도록 코딩해 봅니다.(한참 보고, 또 보고 ㅠㅠ)
파일명까지 리스트에 들어있는지 모르고 생쑈를 하다 혹시나 싶어 sys.argv를 출력 후에 해결 가능했답니다. ㅎ 당황스럽더군요.
Q10. OS 모듈을 사용하여 디렉터리 이동, dir 실행 후 결과를 변수에 담고, 그 결과를 출력해 봅니다.
바로 어제 살펴봤지만 오픈북!^^
Q11. glob 모듈로 *.py 파일만 출력해 봅니다.
>>> import glob
>>> glob.glob('*.py')
['test_Q1.py', 'test_Q10.py', 'test_Q11.py',(중간 생략) 'test_Q12.py', 'test_Q13.py'
Q12. time 모듈로 2018/04/03 17:20:23 형태로 출력해 봅니다.
>>> import time
>>> time.strftime('%Y/%m/%d %H:%M:%S',time.localtime(time.time()))
'2021/05/04 20:11:10'
대소문자에 따라 결과가 달라집니다. (%Y : 2021, %y : 21)
Q13. random 모듈로 로또번호 추출해 봅니다. 중복 숫자는 제외해야 합니다.
(어제 잠시 언급했는데 바로 연습문제로 나오는군요... 사람들 생각 다 비슷한가 봅니다.^^)
lambda로 더 간단하게 할 수 있을 것 같은 데…지금은 피곤해서 그런가 아무 생각이 떠오르지 않네요. 좋은 꿈 꾸게 되면 3,9,18,20,23,32로 인생역전 한번 도전해 봅니다. ㅋ
'코딩 이야기 > 파이썬(Python)' 카테고리의 다른 글
단도직입 파이썬(Python) – 정규식(Regular Expression) 1/2 (0) | 2021.12.17 |
---|---|
단도직입 파이썬(Python) – 좌충우돌 실전 코딩 (0) | 2021.12.16 |
단도직입 파이썬(Python) – 라이브러리(Library) (0) | 2021.12.16 |
단도직입 파이썬(Python) – 내장 함수(Built in Function) (0) | 2021.12.16 |
단도직입 파이썬(Python) – 예외 처리(Exception Handling) (0) | 2021.12.16 |
댓글