Language/Python

[점프투파이썬]5장 연습문제

림밤빵 2021. 1. 7. 15:39
728x90

Q1.

Calculator를 상속한 클래스인 UpgradeCalculator(Calulator)를 작성하였다.

minus(self, val)매서드를 작성하였다.

객체 변수인 value의 값에서 minus의 매개변수인 val 만큼 뺀다.

main에서 객체 cal을 만들고 10을 더하고 7을 뺀 다음 출력하였다.

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

if __name__ == '__main__':
    cal = UpgradeCalculator()
    cal.add(10)
    cal.minus(7)

    print(cal.value)

Q1 출력 결과

 

Q2.

Calculator클래스의 add메서드에는 100이상을 제한하는 부분이 없으므로 매서드 오버 라이딩을 하였다.

Calculator를 상속하는 MaxLimitCalculator(Calculator) 클래스를 작성하였다.

매서드 오버 라이딩을 위하여 add(self, val)매서드를 작성해주었다.

self.value에 val을 더한 값이 100보다 크면 100으로 다시 지정해주고 그렇지 않다면 넘어가도록 하였다.

main에서 50과 60을 차례로 더했을 때, 100으로 지정된 값이 나오는 것을 확인할 수 있다.

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
        else:
            pass

if __name__ == '__main__':
    cal = MaxLimitCalculator()
    cal.add(50) 
    cal.add(60) 

    print(cal.value) 

Q2 출력 결과

 

Q3.

all([1, 2, abs(-3)-3])

all(x)은 모든 값이 참이면 True를 반환하는 함수이다. 

abs(x)는 절댓값을 반환하는 함수이다.

abs(-3)-3 = 3-3 = 0 이므로 거짓이다.

따라서 False를 반환할 것이다.

 

chr(ord('a')) == 'a'

chr(i)는 아스키(ASCII) 코드 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수이다.

ord(c)는 문자의 아스키코드 값을 돌려주는 함수이다.

a의 아스키 코드 값을 chr(i)에 매개변수로 입력했으므로 a가 반환될 것이다.

따라서 True를 반환할 것이다.

 

 

Q4.

filter(f, iterable)을 사용하면 원하는 값을 거를 수 있다.

lambda x: x >=0 은 0보다 작은 수는 거른다는 뜻이다.

print를 해보면 음수는 모두 제거되고 1, 3, 8만 출력하는 것을 확인할 수 있다.

print(list(filter(lambda x: x >= 0, [1, -2, 3, -5, 8, -3])))

Q4 출력 결과

 

Q5.

int(x) 내장 함수를 이용하면 10진수를 구할 수 있다.

print(int(0xea))

Q5 출력 결과

 

 

Q6.

내장 함수 map(f, iterable)을 이용하여 한 줄로 코드를 작성하였다.

map(lambda x : 3*x, [])는 현재 리스트 요소들에 3을 곱해준다는 의미이다.

print() 함수를 이용하여 출력하였다.

print(list(map(lambda x: 3*x, [1, 2, 3, 4])))

Q6 출력 결과

 

Q7.

내장 함수 max(iterable), min(iterable)을 이용하여 간단하게 구현하였다.

max는 최댓값, min은 최솟값을 반환해주는 매서드이다.

최댓값인 7, 최솟값인 -8의 합 -1이 출력되는 것을 확인할 수 있다.

print(max([-8, 2, 7, 5, -3, 5, 0, 1])+min([-8, 2, 7, 5, -3, 5, 0, 1]))

Q7 출력 결과

 

Q8.

내장 함수 round(number [, ndigits])를 이용하여 간단하게 구현하였다.

round(17 / 3, 4)은 17/3을 소수점 5번째 자리에서 반올림하여 표현한다는 의미이다.

print(round(17 / 3, 4))

Q8 출력 결과

 

Q9.

인터프리터가 제공하는 변수를 이용하기 위해 sys라이브러리를 import 해주었다.

파일 이름을 제외한 요소들을 list에 저장해준다.

for문에서 list의 요소들을 다 더해주고, print(result)로 출력해준다.

import sys

result = 0
list = sys.argv[1:]

for i in list:
    result += int(i)

print(result)

Q9 실행 cmd창

 

Q12.

time을 import 하여 시간 관련 함수를 이용한다.

%c를 입력하면 원하는 형태로 출력될 것 같았으나, 영문 날짜로 나와 %x, %X를 이용하였다.

import time

print(time.strftime('%x', time.localtime(time.time()))+" " + time.strftime('%X', time.localtime(time.time())))

Q12 출력 결과

 

Q13.

random모듈을 import 하여 난수를 생성할 수 있도록 한다.

리스트 변수 list를 만든 후 list의 길이가 6이 될 때까지 while문을 반복한다.

1부터 45까지의 난수를 생성하여 num에 저장한다.

if문을 통하여 num이 list에 없을 경우 list.append(num)으로 추가한다.

print(list)로 결과를 확인한다.

import random

list = []

while len(list) < 6:
    num = random.randint(1,45)
    if num not in list:
        list.append(num)

print(list)

Q13 출력 결과

728x90