미누에요
<점프 투 파이썬> :: 05. 파이썬 날개 달기 문제풀이 본문
Q1. 다음은 Calculator 클래스이다.
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)
정답)
class Calculator:
def __init__(self):
self.value = 0
def add(self, val):
self.value += val
class UpgradeCalculator(Calculator):
def minus(self, val):
self.value -= val
cal = UpgradeCalculator()
cal.add(10)
cal.minus(7)
print(cal.value)
실행 결과
Q2. 객체변수 value가 100 이상의 값은 가질 수 없도록 제한하는 MaxLimitCalculator 클래스를 만들어 보자. 즉 다음과 같이 동작해야 한다.
cal = MaxLimitCalculator()
cal.add(50)
cal.add(60)
print(cal.value)
단 반드시 다음과 같은 Calculator 클래스를 상속해서 만들어야 한다.
class Calculator:
def __init__(self):
self.value = 0
def add(self, val):
self.value += val
정답)
class Calculator:
def __init__(self):
self.value = 0
def add(self, val):
self.value += val
class MaxLimitCalculator(Calculator):
def add(self, val):
self.value += val
if self.value>=100:
self.value = 100
cal = MaxLimitCalculator()
cal.add(50)
cal.add(60)
print(cal.value)
Q3. 다음 결과를 예측해보자.
1.
>>> all([1,2,abs(-3)-3])
결과) abs(-3)-3 은 0 이므로 False, 튜플 속에 False가 있으므로 결과는 False.
2.
>>> chr(ord('a')) == 'a'
결과) True. 문자열 a를 정수로 변환하는 ord('a')의 결과 97, 그 97을 다시 아스키코드 상에서 문자열로 바꾸면 a.
Q4. filter와 lambda를 사용하여 리스트 [1,-2,3,-5,8,-3]에서 음수를 모두 제거해보자.
정답)
a = list(filter(lambda n : True if n>0 else False,[1,-2,3,-5,8,-3]))
print(a)
Q5. 234라는 10진수의 16진수는 다음과 같이 구할 수 있다.
>>> hex(234)
'0xea'
이번에는 반대로 16진수 문자열 0xea를 10진수로 변경해 보자.
정답)
int('0xea',16)
Q6. map과 lambda를 사용하여 [1,2,3,4] 리스트의 각 요솟값에 3이 곱해진 리스트 [3,6,9,12] 를 만들어보자.
정답)
a = [1,2,3,4]
ax3 = list(map(lambda x:x*3,a))
print(ax3)
Q7. 다음 리스트의 최댓값과 최솟값의 합을 구해보자.
[-8,2,7,5,-3,5,0,1]
정답)
a = [-8,2,7,5,-3,5,0,1]
result = max(a) + min(a)
print(result)
Q8. 17/3의 결과는 다음과 같다.
>>> 17/3
5.666666666666667
위와 같은 결과값 5.666666666666667 을 소수점 4자리까지만 반올림하여 표시해 보자.
정답)
print("%.4f"%(17/3))
Q9. 다음과 같이 실행할 때 입력값을 모두 더하여 출력하는 스크립트(C:\doit\myargv.py)를 작성해 보자.
C:\> cd doit
C:\doit> python myargv.py 1 2 3 4 5 6 7 8 9 10
55
정답)
import sys
numbers = sys.argv[1:]
result = 0
for number in numbers:
result += int(number)
print(result)
Q10. os 모듈을 사용하여 다음과 같이 동작하도록 코드를 작성해 보자.
1. C:\coding\python 디렉터리로 이동한다.
2. dir 명령을 실행하고 그 결과를 변수에 담는다.
3. dir 명령의 결과를 출력한다.
정답)
>>> import os
>>> os.chdir("c:\coding\python")
c:\coding\python 이라는 디렉터리로 이동
>>> result = os.popen("dir")
os 모듈의 popen을 사용하여 시스템 명령어인 dir을 수행
>>> print(result.read())
popen의 결과를 출력하기 위해 다음과 같이 수행한다.
Q11. glob 모듈을 사용하여 C:\doit 디렉터리의 파일 중 확장자가 .py인 파일만 출력하는 프로그램을 작성해보자.
정답)
>>> import glob
>>> glob.glob("c:\doit\*.py")
['c:\doit\doit01.py' 'c:\doit\test.py']
Q12. time 모듈을 사용하여 현재 날짜와 시간을 다음과 같은 형식으로 출력해 보자.
2018/04/03 17:20:32
정답)
>>> import time
>>> time.strftime("%Y/%,/%d %H:%M:%S") # %Y:년, %m:월, %d:일, %H:시, %M:분, %S:초
Q13. random 모듈을 사용하여 로또 번호(1~45 사이의 숫자 6개)를 생성해 보자. (단, 중복된 숫자가 있으면 안됨.)
정답)
import random
result = []
while len(result) < 6:
num = random.randint(1,45)
if num not in result:
result.append(num)
print(result)
'Python' 카테고리의 다른 글
<점프 투 파이썬> :: 파이썬 초보탈출 코딩 면허시험 20제 문제풀이 (2) | 2023.10.19 |
---|---|
<점프 투 파이썬> :: 06. 파이썬 프로그래밍, 어떻게 시작해야 할까? (0) | 2023.10.12 |
<점프 투 파이썬> :: 04.프로그램의 입력과 출력은 어떻게 해야할까? 문제풀이 (1) | 2023.10.08 |
<점프 투 파이썬> :: 03. 프로그램의 구조를 쌓는다! 제어문 문제풀이 (1) | 2023.10.08 |
<점프 투 파이썬> :: 02. 파이썬 프로그래밍의 기초, 자료형 문제풀이 (0) | 2023.10.03 |