일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- () (+) 차이
- 정답
- 연습문제
- 오류
- +연산자 의미
- ㅔㄴ트 안잉
- 비트마스크
- getchar()
- perpect C
- 합
- eslint
- 3장
- 티스토리 커버이미지 변경
- perpectC
- PERPECT
- 실습예제
- 원 면적
- eslint 쉼표필요 오류
- 쉼표필요
- 점프 투 파이썬 #패키지 # 비전공자
- 원 둘레
- 3강
- Chapter3
- 풀이
- 3판
- putchar()
- 평균
- c
- 백엔드 개발자 #로드맵
- JavaScript
- Today
- Total
옥수수와 식빵 그리고 코딩
5장 -5 내장함수 ~ 연습문제 본문
안덱스 값: 순서가 있는 자료형(리스트, 튜플, 문자열의 순서 번호
ex
내장 함수에 유용한 것 많음
명령 행에서 인수 전달하기 - aya.argv : 다시 보기. 어려움..
스레드 어렵다
클래스에서 __init__이란 https://engineer-mole.tistory.com/190
인스턴스란 클래스를 실체화한 것
연습문제 https://wikidocs.net/42529
1번.
클래스 상속:
class 클래스 이름(상속할 클래스 이름)
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)
value의 값은 0에서 10이 더해지고(메서드2), 7잉 빠져(메서드3) 3이 출력된다.
2번
실패함. 110이 나온다.
class Calculator:
def __init__(self):
self.value = 0
def add(self, val):
self.value += val
class MaxLimitCalculator(Calculator):
def lim(self, val):
if self.value >= 100:
return 100
cal = MaxLimitCalculator()
cal.add(50)
cal.add(60)
print(cal.value)
두 번째 클래스를 거치지 않고 나온 것 같다
class Calculator:
def __init__(self):
self.value = 0
def add(self, val):
self.value += val
class MaxLimitCalculator(Calculator):
if self.value >= 100:
return 100
cal = MaxLimitCalculator()
cal.add(50)
cal.add(60)
print(cal.value)
두번째 클래스 안의 메서드를 지웠다.
SyntaxError: 'return' outside function
함수가 없어서 오류가 떴다.
그렇다고 두번째 클래스 안에 add메서드를 그대로 적으면 상속하는 의미가 없을 것 같음..
ㄴ>이게 메서드 오버라이딩임
해답을 본다.
메서드 오버라이딩을 해서 해결한다.
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:
return 100
else:
return self.value += val #오류발생
cal = MaxLimitCalculator()
cal.add(50)
cal.add(60)
print(cal.value)
14번째 줄에서 오류가 나온다
return에는 식을 적으면 안되나??
return은 함수에 대응하여 함수값을 내놓는 것. if문을 거치지 않고 나온다(? 약간 추측임..)
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)
성공..
3번
하나.
1. all(x)는 반복 가능한 자료형 x를 입력 인수로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False
2. abs(x)는 숫자 x를 입력받았을 대, 그 숫자의 절댓값을 돌려줌
- 풀이
abs(-3) = 3이 된다
리스트 안의 값은 [1, 2, 3-3]이 된다. 3-3 = 0 은 거짓이므로 거짓이 하나 있기 때문에 False를 돌려준다.
둘.
1. chr(i)는 유니코드 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수이다.
2. ord(c)는 문자의 유니코드 값을 돌려주는 함수로 chr함수와 반대이다
->
ord('a') = 97, chr(97) = 'a'
True가 나온다.
참고 : https://wikidocs.net/32#filter
4번
filter 함수는 첫 번째 인수로 함수 이름을, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형을 받는다. 그리고 두 번째 인수인 반복 가능한 자료형 요소가 첫 번째 인수인 함수에 입력되었을 때 반환 값이 참인 것만 묶어서(걸러 내서) 돌려준다.
https://wikidocs.net/32#filter
#lambda 사용
print(list(filter(lambda x: x > 0, [1,-2,3,-5,8,-3])))
#lambda 미사용
def plus(x):
return x > 0
print(list(filter(plus, [1,-2,3,-5,8,-3])))
5번
int(x, radix)는 radix 진수로 표현된 문자열 x를 10진수로 변환하여 돌려준다.
https://wikidocs.net/32#int
ex) itn('11', 2)
2진수로 표현된 11의 10진수 값 3
int('0xea', 16)
6번
map(f, iterable)은 함수(f)와 반복 가능한(iterable) 자료형을 입력으로 받는다. map은 입력받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려주는 함수이다.
https://wikidocs.net/32#map
# map 미사용, lambda 미사용
a = [1, 2, 3, 4]
def three_times(numbers):
result = []
for number in numbers:
result.append(number * 3)
return result
result = three_times(a)
print(result)
#<map object at 0x000002AB5AA23C70> 오류 발생
a = [1, 2, 3, 4]
def three_times(numbers):
return numbers * 3
print(map(three_times, a))
list(map(함수, 리스트))
tuple(map(함수, 튜플))
형태로 사용
이 상태로는 안에 들어있는 값을 볼 수 없으므로 list를 사용해서 리스트로 출력
a = [1, 2, 3, 4]
def three_times(numbers):
return numbers * 3
print(list(map(three_times, a)))
7번
#최댓값
a = [-8, 2, 7, 5, -3, 5, 0, 1]
print(max(a))
#최솟값
a = [-8, 2, 7, 5, -3, 5, 0, 1]
print(min(a))
8번
round(number[, ndigits]) 함수는 숫자를 입력받아 반올림해 주는 함수이다.
round 함수의 두 번째 매개변수는 반올림하여 표시하고 싶은 소수점의 자릿수(ndigits)이다.
※ [, ndigits]는 ndigits가 있을 수도 있고 없을 수도 있다는 의미이다.
https://wikidocs.net/32#round
a = 17 / 3
print(round(a, 4))
9번
# myargv.py
import sys
sum(argv)
print(sys.argv)
sys는 개념 읽을 때도 잘 이해 못했던 거라 내 생각 한번 적어보고 바로 해답 봄
import sys
xs = sys.argv[1:] # [0]은 파일 이름 명, 파일 이름 명 제외한 명령행의 모든 입력
result = 0
for x in xs:
result += int(x) # 모든 결괏값은 '문자열', 정수로 바꿔준다
print(result)
10번
# idle에서 실행
import os
os.chdir("C:\doit")
f = os.popen("dir")
print(f.read())
11번
# idle에서 실행
import glob
glob.glob("c:/doit/*.py")
*.py : .py로 끝나는 모든 파일
12번
# idle에서 실행
import time
time.strftime('%c', time.localtime(time.time()))
시간에 관계된 것을 표현하는 포맷 코드
포맷코드 | 설명 | 예 |
%a | 요일 줄임말 | Mon |
%A | 요일 | Monday |
%b | 달 줄임말 | Jan |
%B | 달 | January |
%c | 날짜와 시간을 출력함 | 06/01/01 17:22:21 |
%d | 날(day) | [01,31] |
%H | 시간(hour)-24시간 출력 형태 | [00,23] |
%I | 시간(hour)-12시간 출력 형태 | [01,12] |
%j | 1년 중 누적 날짜 | [001,366] |
%m | 달 | [01,12] |
%M | 분 | [01,59] |
%p | AM or PM | AM |
%S | 초 | [00,59] |
%U | 1년 중 누적 주-일요일을 시작으로 | [00,53] |
%w | 숫자로 된 요일 | [0(일요일),6] |
%W | 1년 중 누적 주-월요일을 시작으로 | [00,53] |
%x | 현재 설정된 로케일에 기반한 날짜 출력 | 06/01/01 |
%X | 현재 설정된 로케일에 기반한 시간 출력 | 17:22:21 |
%Y | 년도 출력 | 2001 |
%Z | 시간대 출력 | 대한민국 표준시 |
%% | 문자 | % |
%y | 세기부분을 제외한 년도 출력 | 01 |
13번
import random
lotto = []
while len(lotto) < 7:
num = random.randint(1, 45)
if num not in lotto: #중복된 숫자 배제
lotto.append(num)
print(lotto)
'Python > 점프 투 파이썬' 카테고리의 다른 글
6장. 파이썬 프로그래밍, 어떻게 시작해야 할까? (0) | 2021.10.20 |
---|---|
vscode 단축키 (0) | 2021.10.18 |
5장 클래스 + baekjoon (0) | 2021.10.16 |
4장 (0) | 2021.10.16 |