티스토리 뷰
"""
20200821
파이썬 공부 22일차
"""
우와 챕터 5를 거의 무슨 2주동안 해서 그런가 문제 푸는데 하나도 몰라
꾸역꾸역 풀었당..^^
1. 다음은 Calculator 클래스다.
class Calculator:
def __init__(self):
self.value = 0
def add(self, val):
self.value += val
위 클래스를 상속하는 UpgradeCalculator를 만들고 값을 뺄 수 있는 minus 메서드를 추가해보자.
즉 다음과 같이 동작하는 클래스를 만들어야 한다.
class UpgradeCalculator(Calculator):
def __init__(self):
self.value = 0
def minus(self, val):
self.value -= val
cal = UpgradeCalculator()
cal.add(10)
cal.minus(7)
print(cal.value) # 10에서 7을 뺀 3을 출력
Calculator 클래스를 상속하는 UpgradeCalculator 클래스를 만들고 minus 메서드를 추가해서 빼기 기능을 추가하면 완성
2. 개체변수 value가 100 이상의 값은 가질 수 없도록 제한하는 MaxLimitCalculator 클래스를 만들어보자.
즉 다음과 같이 동작해야 한다.
cal = MaxLimitCalculator()
cal.add(50) # 50 더하기
cal.add(60) # 60 더하기
print(cal.value) # 100 출력
단 반드시 다음과 같은 Calculator 클래스를 상속해서 만들어야 한다.
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) # 50 더하기
cal.add(60) # 60 더하기
Calculator 클래스를 상속하고, add 메서드를 오버라이딩 한다.
만약 더한 값이 100을 넘을 경우엔 value의 값이 100으로 설정하게끔 해두면 끝
print(cal.value)
>>> 100
3. 다음 결과를 예측해 보자
1.
print(all([1, 2, abs(-3)-3]))
>>> False
abs(-3)은 -3의 절댓값을 출력한다. So, 3
3에서 3을 빼면 0이 나온다. 숫자형에서 0은 거짓값이다.
all은 모든 값이 참이여야 True를 출력하지만 0이 거짓이므로 False가 출력된다.
2.
print(chr(ord('a')) == 'a')
>>> True
chr은 아스키 코드 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수고, ord는 chr과 반대로 문자의 아스키 코드 값을 돌려주는 함수다. ord('a')는 a에 해당하는 아스키 코드 값을 돌려주고, 다시 chr('a')는 a에 해당하는 코드값을 다시 a로 돌려주므로 해당 구문은 참이 된다.
4. filter와 lambda를 사용하여 리스트 [1, -2, 3, -5, 8, -3]에서 음수를 모두 제거해 보자.
print(list(filter(lambda x: x > 0, [1, -2, 3, -5, 8, -3])))
>>> [1, 3, 8]
5. 234라는 10진수의 16진수는 다음과 같이 구할 수 있다.
hex(234)
이번에는 반대로 16진수 문자열 0xea를 10진수로 변경해보자.
print(int('0xea', 16))
>>> 234
6. map과 lambda를 사용하여 [1, 2, 3, 4] 리스트의 각 요솟값에 3이 곱해진 리스트 [3, 6, 9, 12]를 만들어 보자.
print(list(map(lambda a: a * 3, [1, 2, 3, 4])))
>>> [3, 6, 9, 12]
7. 다음 리스트의 최댓값과 최솟값의 합을 구해보자.
[-8, 2, 7, 5, -3, 5, 0, 1]
GivenList = [-8, 2, 7, 5, -3, 5, 0, 1]
print(min(GivenList) + max(GivenList))
>>> -1
8. 17 / 3의 결과는 다음과 같다.
5.6666666666666667
5.6666666666666667
위와 같은 결괏값 5.666666666666666676을 소숫점 4자리까지만 반올림하여 표시해 보자.
print(round(17/3, 4))
>>> 5.6667
9. 다음과 같이 실행할 때 입력값을 모두 더하여 출력하는 스크립트를 작성해보자.
import sys
numbers = sys.argv[1:] # 파일 이름을 제외한 명령 행의 모든 입력
result = 0
for number in numbers:
result += int(number)
print(result)
10. os 모듈을 사용하여 다음과 같이 동작하도록 코드를 작성해보자.
- C:\doit 디렉터리로 이동한다.
- dir 명령을 실행하고 그 결과를 변수에 담는다.
- dir 명령의 결과를 출력한다.
import os
os.chdir('C:\doit')
result = os.popen('dir')
print(result.read())
os 모듈의 chdir을 사용하여 해당 디렉터리도 이동한다.
그리고 os 모듈의 popen을 사용하여 시스템 명령어인 dir을 수행한다.
popen의 결과를 확인하기 위해 print 하면 끝
11. glob 모듈을 사용하여 c:\doit 디렉터리의 파일 중 확장자가 .py인 파일만 출력하는 프로그램을 작성해 보자.
import glob
glob.glob("C:/doit/*.py")
12. time 모듈을 사용하여 현재 날짜와 시간을 다음과 같은 형식으로 출력해 보자.
2018/04/03 17:20:32
import time
print(time.strftime("%Y/%m/%d %H:%M:%S"))
>>> 2020/08/21 16:57:54
13. 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)
>>> [5, 34, 27, 38, 44, 41]
아 피곤해
낮잠 자러 가야징
끝
'🐍파이썬 > 📕점프 투 파이썬' 카테고리의 다른 글
21. 외장 함수 2 (0) | 2020.12.24 |
---|---|
20. 외장함수 1 (0) | 2020.12.23 |
19. 내장함수 2 (0) | 2020.12.23 |
18. 내장함수1 (0) | 2020.12.23 |
17. 예외처리 (0) | 2020.12.16 |