일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개발자취업
- HTML
- SQL
- Git
- 99클럽
- 유노코딩
- 프로그래머스
- 데이터베이스시스템
- node.js
- 방송대컴퓨터과학과
- aws
- Cookie
- CSS
- 방송대
- 엘리스sw트랙
- 코딩테스트준비
- JavaScript
- 코딩테스트
- 파이썬
- 중간이들
- MySQL
- 항해99
- Python
- presignedurl
- 코드잇
- nestjs
- 꿀단집
- TiL
- 파이썬프로그래밍기초
- redis
- Today
- Total
배꼽파지 않도록 잘 개발해요
방송대 파이썬 프로그래밍 기초 - 15강. 체크포인트2 (9-14강) 본문
문제 1번
유사한 유형의 문제를 해결할 수 있도록 특정 작업을 수행하는 명령문의 집합을 단일 식별자로 구성한 개념은? [9강]
① 함수
② 인터프리터
③ 파일
④ 명령 블럭
• 함수
- 특정 작업을 수행하는 명령문의 집합을 단일 식별자로 구성한 개념
- 특정 작업을 함수의 이름으로 대체
- 유사한 유형의 문제를 해결할 수 있도록 고려
(전체적인 흐름은 같으나, 값은 다름)
• 반환값에 따른 함수의 종류
- 반환값이 없는 함수 : print (모니터에 값을 출력만 함)
- 반환값이 있는 함수 : input, format, int 등
인터프리터 | 소스 코드를 한 줄씩 읽어들여 해당 코드를 실행하는 프로그램 또는 시스템 |
파일 | 컴퓨터 시스템에서 데이터를 저장하고 관리하기 위해 사용되는 단위 |
명령 블럭 | 프로그래밍에서 명령어들을 하나의 논리적인 단위로 묶는 데 사용되는 구조 명령 블럭은 보통 중괄호 {}로 표시되며, 코드의 실행 흐름을 제어하거나 반복 작업을 수행하는 등의 역할을 함. |
문제 2번
line 클래스의 인스턴스 m의 멤버 __len을 10으로 수정하기 위한 올바른 표현은? [10강]
① m.__len = 10
② m.len = 10
③ m.set_length(10)
④ m.set_length( ) = 10
'__'로 시작하는 private 데이터 필드는 외부에서 접근 불가
→ 세터 또는 변경자라 불리는 메소드를 통해 수정해 주어야 함.
문제 3번
math 모듈 사용을 위한 빈칸의 올바른 표현은? [11강]
① import math
② import math.sin, math.radians
③ from sin, radians import math
④ from math import sin, radians
sin(radians(60))을 보면 함수를 정의하지 않아도 사용되는 걸 알 수 있음.
'from math import sin, radians' 을 쓰면 (math 모듈에서 sin과 radians를 import해라)
→ sin함수에 'math.'를 붙이지 않아도 사용할 수 있음.
문제 4번
특정 목적 또는 분야에서 사용되는 함수, 상수 및 클래스를 모아 놓은 집합체는? [11강]
① 모듈
② 패키지
③ 라이브러리
④ 프레임워크
모듈 | 패키지 | 라이브러리 |
· 클래스, 함수, 상수의 집합 · 하나의 파이썬 파일로 되어 있음. |
· 하위 패키지 및 모듈의 집합 · 하나의 폴더 단위 |
· 패키지 및 모듈의 집합 · 한 분야의 일을 할 수 있는 모듈과 패키지를 묶어 놓은 단위 |
프레임워크 : 애플리케이션의 개발과 실행을 도와주는 도구와 라이브러리의 모음
※ 프레임워크와 라이브러리의 차이점 [수업X, 참고O]
라이브러리 (Library) | 프레임워크 (Framework) | |
정의 | 독립적으로 동작하는 코드의 모음 | 개발을 위한 구조와 규칙을 갖춘 코드의 집합 |
사용 방식 | 개발자가 필요할 때 선택적으로 사용 | 개발자가 제공된 규칙에 따라 개발 |
제어 흐름 | 개발자가 직접 제어 | 프레임워크가 제어 |
개발자의 역할 | 개발자가 코드를 호출하여 사용 | 개발자가 프레임워크에 코드를 작성하여 제어 |
유연성 | 높은 유연성, 개발자가 자유롭게 선택 및 조합 가능 | 일정한 구조와 규칙에 따라 개발 |
특징 | 특정 기능을 수행하기 위한 도구 모음 | 개발 프로세스를 단순화하고 일관성 있는 코드 작성을 도와주는 구조와 규칙을 제공 |
예시 | NumPy, pandas, matplotlib | Flask, Django, React |
• 라이브러리 : 개발자가 필요할 때 선택적으로 사용할 수 있는 도구 모음
• 프레임워크 : 개발을 위한 구조와 규칙을 갖춘 코드의 집합
문제 5번
특정한 배열 순서나 규칙적인 의미가 없는, 임의의 수는? [11강]
① 복소수
② 시드
③ 난수
④ 정수
• 난수(random number) : 특정한 배열 순서나 규칙적인 의미가 없는, 임의의 수를 의미
• RNG (난수 발생기) : 번호들 사이에는 규칙이 없으나 프로그램을 실행할 때마다 동일한 값들이 도출되는 난수 발생
→ 같은 번호가 계속 나오면 시드(시작점)을 바꿔주면 됨.
• 시드(seed) : 난수 생성기에 사용되는 초기값
- 난수 생성기는 시드 값을 입력으로 받아서 매번 다른 값을 생성함.
→ 동일한 시드 값을 사용하면 항상 동일한 난수 시퀀스가 생성됨.
문제 6번
대규모 소프트웨어 개발에 자원을 투입하여 초기에 예상한 결과물 구현을 목적으로 소프트웨어 전체 개발 과정을 하나의 프로세스로 정의한 것은? [13강]
① 프로그램 빌드 과정
② 소프트웨어 모델링
③ 소프트웨어 개발 라이프사이클
④ DevOps
소프트웨어 개발 라이프사이클
대규모 소프트웨어 개발에 자원을 투입하여 초기에 예상한 결과물 구현을 목적으로 소프트웨어 전체 개발 과정을 하나의 프로세스로 정의한 것
1) Planning : 비용, 기간, 자원 계획 수립
2) Analysis : SW 기능/비기능 요구 정의 및 자료수집
3) Design : 구조, 데이터, 인터페이스, UI 정의
4) Implementation : 언어 선택, 코딩 규칙 정의, 프로그램 작성
5) Testing & Integration : 예상 결과 유사 검증 및 오류 파악
6) Maintenance : 프로그램 오류 수정, 새로운 요구 추가, 사용환경 변화 반영
DevOps
- "Development"와 "Operations"의 합성어
- 소프트웨어 개발과 운영을 통합하고 개선하기 위한 문화, 철학, 방법론
- 기존의 소프트웨어 개발 및 운영 프로세스에서의 갈등과 협업의 한계를 극복하고, 소프트웨어를 빠르게 제공하고 안정적으로 운영하기 위한 방법을 제시함.
문제 7번
매개변수 값의 합을 반환하는 summation 함수에 대해 빈칸에 알맞은 표현은? [9강]
(단, 빈칸 뒤에 'sum = 0'이 있다고 가정한다.)
① i = numbers
② for i in numbers
③ i = i + 1
④ if i in numbers
매개변수 'numbers'가 다음 코드에 나와야 하므로 ③은 답에서 제외됨.
① i에 numbers를 대입하면, 다음 줄에서 sum은 매개변수로 들어오는 numbers 한 가지만 더해지고 끝남.
④ numbers에 i가 있다면 sum에 sum과 i를 더함. → i가 뭔지 모르는데?
매개변수 앞에 '*'가 있으면 가변매개변수 (ex. *numbers)
문제 8번
딕셔너리의 구성요소와 용어가 올바르게 짝지어진 것은? [12강]
① 값(value)
② 항목(item)
③ 딕셔너리(dictionary)
④ 키(key)
· 딕셔너리(dictionary) : 키와 값의 쌍(pair)을 저장하는 시퀀스 (④)
· 키(key) : 딕셔너리 내에서 고유한 식별자 역할, 값에 접근하기 위한 인덱스 (①)
· 값(value) : 키와 연결된 데이터 (③)
· 항목(item) : 딕셔너리에서 키와 값의 쌍 (②)
문제 9번
매개변수로 전달된 숫자를 역순으로 출력하는 함수이다. 빈칸에 알맞은 연산자는? [9강]
① ==
② /
③ %
④ //
• % (모듈로 연산자): 나눗셈의 나머지를 계산
• // (정수 나누기 연산자): 나눗셈의 몫을 계산
num = 1234
def reverse_number(num) : # 매개변수 역할의 num
while num !=0 : # 0이 아닐 때까지 반복해라
digit = num % 10 # 10으로 나눴을 때 나머지 (123.4에서 4)
num = num // 10 # 10으로 나눴을 때 몫 (123)
print(digit, end="") (4가 출력됨)
reverse_number(num) # 1번 줄에서 정의한 변수 num
문제 10번
객체와 객체 사이의 상호작용으로 프로그램을 구성하는 프로그래밍 패러다임은? [10강]
① 명령형 프로그래밍
② 객체지향 프로그래밍
③ 구조적 프로그래밍
④ 객체관계 프로그래밍
객체지향
- 객체와 객체 사이의 상호작용으로 프로그램을 구성하는 프로그래밍 패러다임
- 프로그램을 유연하고 변경을 쉽게 만들어 대규모 소프트웨어 개발에 사용
객체지향 패러다임의 특징
- 명령형 프로그래밍, 절차적 프로그래밍의 특징을 계승하면서 코드의 재활용률을 높이고, 객체 사이사이의 상호작용 관점을 제공하는 객체지향 프로그래밍 → 추상화, 캡슐화, 상속, 다형성
- 추상화 : 공통의 속성이나 기능을 도출
- 캡슐화 : 데이터 구조와 데이터의 연산을 결합
- 상속 : 상위 개념의 특징이 하위 개념에 전달
- 다형성 : 유사 객체의 사용성을 그대로 유지
문제 11번
아래는 'khan.txt' 파일을 읽고 처리하는 프로그램이다. 다음 물음에 따라 답하시오. [12강]
11-1.
파일 전체의 내용이 리스트로 저장되도록 (가)에 들어갈 알맞은 표현은?
① readlines(khan_fp)
② readlines( )
③ readlines(khan_mottos)
④ khan_fp.readlines( )
11-2.
파일 처리 후 프로그램이 종료되기 전 파일에 대한 마무리 작업으로 (나)에 들어갈 올바른 표현은?
① khan_fp.close()
② khan_fp.write("close")
③ close(khan_fp)
④ 없음
• '객체.메서드'의 형식으로 적어야 함.
ex. file.read(10), file.close()
①처럼 적어야 하고, ③처럼 적을 수 없음.
• 파일을 사용한 후에는 close()를 호출하여 메모리 누수를 방지
문제 12번
함수의 처리 결과 반환 시 사용하는 키워드는? [9강]
① break
② result
③ return
④ continue
① break : 반복문(for 또는 while)을 종료하고 반복문 바로 다음의 코드로 이동
for i in range(1, 6): # 1 ~ 5까지 반복
if i == 3: # i가 3일 때 멈추기
break
print(i) # 2, 3이 출력됨.
위의 코드는 1부터 5까지의 숫자를 반복하여 출력하며, i가 3일 때 break 문을 만나 반복문이 종료됨.
→ 1과 2까지만 출력됨.
② result : 일반적으로 변수 이름으로 사용되며, 결과값을 저장하는 변수를 의미함.
③ return : 함수에서 값을 반환하고 함수의 실행을 종료하는 역할을 함.
def add(a, b): # 매개변수 a와 b를 입력받음
return a + b # a, b를 더한 값을 반환
result = add(3, 4)
print(result)
④ continue : 반복문에서 해당 반복 회차를 건너뛰고 다음 반복 회차로 진행함.
for i in range(1, 6): # 1부터 5까지 반복
if i == 3: # i가 3이면
continue # 건너뛰기
print(i) # 1, 2, 4, 5
위의 코드는 1부터 5까지의 숫자를 반복하여 출력하며, i가 3일 때 continue 문을 만나 다음 반복 회차로 건너뜀.
→ 3은 출력되지 않고, 1, 2, 4, 5가 출력됨.
문제 13번
다음은 EDP 구동 구조이다. 이벤트 루프의 역할에 대한 올바른 설명은? [13강]
① 이벤트 생성 여부 확인 및 전달
② 이벤트 유형에 따른 이벤트 생성
③ 이벤트 저장
④ 이벤트 발생에 따른 코드 실행
· 이벤트 루프 : 이벤트 생성 여부 확인 및 전달
· 이벤트 발생 장치 : 이벤트 유형에 따른 이벤트 생성
· 이벤트 큐 : 이벤트 저장 구조
· 이벤트 핸들러 : 이벤트 발생에 따른 실행코드
문제 14번
소프트웨어 개발 라이프사이클에서 요구 반영, 예상 결과 유사 검증 및 오류 파악이 진행되는 단계는? [13강]
① 계획
② 분석
③ 구현
④ 테스트
1) Planning (계획) : 비용, 기간, 자원 계획 수립
2) Analysis (분석) : SW 기능/비기능 요구 정의 및 자료수집
3) Design (설계) : 구조, 데이터, 인터페이스, UI 정의
4) Implementation (구현) : 언어 선택, 코딩 규칙 정의, 프로그램 작성
5) Testing & Integration (테스트) : 예상 결과 유사 검증 및 오류 파악
6) Maintenance (보수) : 프로그램 오류 수정, 새로운 요구 추가, 사용환경 변화 반영
문제 15번
다음 클래스의 인스턴스를 생성하는 표현은? [10강]
① r1 = robot("android1")
② r1 = __init__("android1", , "cook")
③ r1 = create_skill("cook")
④ r1 = info( )
생성자_이름 = 클래스_이름("인자")
r1 = robot("안드로이드1")
인스턴스 r1의 이름을 출력하고 싶으면 'r1.info()'
→ 제 이름은 android1 입니다!
__init__(self, name) | · 클래스의 인스턴스를 초기화 · 인스턴스 생성 시 호출되며, 인자로 이름(name)을 받아 인스턴스의 속성으로 설정 · 빈 리스트로 초기화된 "skill" 속성도 설정 |
create_skill(self, skill) | · 인자로 스킬을 받아 해당 스킬을 "skill" 속성의 리스트에 추가 |
info(self) | · 인스턴스의 이름(name)을 출력 |
class robot:
def __init__(self, name):
self.name = name
self.skill = [ ]
def create_skill(self, skill) :
self.skill.append(skill)
def info(self):
print('제 이름은', self.name, '입니다!')
# robot 클래스의 인스턴스 생성
my_robot = robot("노밧")
# create_skill 메서드 호출하여 스킬 추가
my_robot.create_skill("공격")
my_robot.create_skill("방어")
my_robot.create_skill("회복")
# robot name 확인
my_robot.info()
# skill 속성 출력하여 스킬 확인
print(my_robot.skill)
문제 16번
객체지향 프로그래밍에서 객체의 구성요소가 아닌 것은? [10강]
① 메소드
② 초기자
③ 데이터 필드
④ 내장 함수
객체지향 프로그래밍에서 객체의 구성요소로는 메소드, 초기자, 데이터 필드가 포함됨.
메소드 | 객체가 수행할 수 있는 동작이나 기능을 정의한 함수 객체의 특정 동작을 구현하고 해당 객체에 대한 행위를 수행 |
초기자 | 객체가 생성될 때 호출되는 특별한 메소드 주로 객체의 초기 상태를 설정하는 데 사용됨. |
데이터 필드 | 객체의 상태를 저장하는 변수로서, 객체의 속성이나 정보를 나타냄. |
내장 함수는 파이썬에서 기본적으로 제공되는 함수로, 특정 객체에 속하지 않고 독립적으로 사용됨.
ex. print(), len() 등
문제 17번
아래는 구구단 게임 소스코드이다. 다음 물음에 따라 답하시오.
a,b가 1~9의 임의의 정수가 되도록 (가), (나)에 공통적으로 사용되는 표현은? [11강]
① random.randrange(1, 9, 3)
② random.randint(1, 9)
③ random.choice(2, 9)
④ random.random( )
① random.randrange(1, 9, 3):
1부터 9 사이의 숫자 중에서 3의 배수만을 고려하여 임의의 정수를 반환함.
→ 1, 4, 7 중 하나의 숫자를 반환할 수 있음.
③ random.choice(2, 9):
random.choice() 함수는 리스트나 튜플 등의 시퀀스에서 임의의 요소를 선택함.
→ random.choice([2, 9])와 같이 시퀀스를 전달해야 함.
④ random.random():
random.random() 함수는 0 이상 1 미만의 부동소수점 숫자를 반환함.
문제 18번
아래는 2차원 리스트 board에 포함된 모든 항목을 출력하는 함수이다. 다음 물음에 답하시오.
행마다 원소의 값이 새로운 라인에서 출력되도록 (가)에 print() 앞에 삽입되는 들여쓰기의 칸 수는? [12강]
(단, 들여쓰기 단위는 3칸이라고 가정한다.)
① 0
② 3
③ 6
④ 9
행마다 새로운 라인
→ 'for item in row:'의 반복문에서 라인을 나누어야 함.
→ 두 번째 반복문 끝나고 실행되므로 6칸 띄어쓰기임.
·3칸 : 첫 번째 반복문 끝나고 실행
·6칸 : 두 번째 반복문 끝나고 실행
·9칸 : 두 번째 반복문과 같이 실행
for row in board: for item in row: print(item, end=" ") print(" ") |
for row in board: for item in row: print(item, end=" ") print(" ") |
row(행)의 각 숫자들이 반복될 때마다 한 줄씩 띄어씀. 1 2 3 4 5 6 |
한 row(행)의 각 숫자들이 반복된 후, 한 줄씩 띄어씀. 1 2 3 4 5 6 7 8 9 |
board = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
def show_board():
for row in board:
for item in row:
print(item, end=" ")
# show_board() 함수 호출하여 board 출력
show_board()
문제 19번
아래는 파일에 포함된 단어의 출현 횟수를 세는 프로그램이다. 다음 물음에 따라 답하시오.
19-1.
wdict 딕셔너리에 word에 대한 항목 생성 여부를 확인하기 위한 표현으로 (가)에 들어갈 올바른 것은? [12강]
① wdict.keys( )
② wdict.pop(word)
③ wdict.popitem( )
④ wdict.get(word)
① wdict.keys( )
wdict = {
"apple": "사과",
"banana": "바나나",
"cherry": "체리"}
# wdict.keys()를 사용하여 모든 키(key)를 확인
keys = wdict.keys()
print(keys)
# < 출력 결과 >
# dict_keys(['apple', 'banana', 'cherry'])
② wdict.pop(word)
wdict = {
"apple": "사과",
"banana": "바나나",
"cherry": "체리"}
word = "apple"
# wdict.pop(word)를 사용하여 word 키에 해당하는 항목 제거
value = wdict.pop(word)
print("제거된 항목의 값:", value)
print("수정된 딕셔너리:", wdict)
# < 출력 결과 >
# 제거된 항목의 값: 사과
# 수정된 딕셔너리: {'banana': '바나나', 'cherry': '체리'}
③ wdict.popitem( )
wdict = {
"apple": "사과",
"banana": "바나나",
"cherry": "체리"}
# wdict.popitem()을 사용하여 임의의 항목 제거
item = wdict.popitem()
print("제거된 항목:", item)
print("수정된 딕셔너리:", wdict)
# < 출력 결과 >
# 제거된 항목: ('cherry', '체리')
# 수정된 딕셔너리: {'apple': '사과', 'banana': '바나나'}
④ wdict.get(word)
wdict = {
"apple": "사과",
"banana": "바나나",
"cherry": "체리"}
word = "orange"
# wdict.get(word)를 사용하여 word에 대한 값을 확인
if wdict.get(word) is not None:
print("'{0}'에 대한 항목이 이미 존재합니다.".format(word))
else:
print("'{0}'에 대한 항목이 존재하지 않습니다.".format(word))
# < 출력 결과 >
# 'orange'에 대한 항목이 존재하지 않습니다.
19-2.
wdict에서 word 항목의 값을 가져오거나 저장하기 위해 (나)와 (다)에 공통으로 들어갈 올바른 표현은?
① wdict[word]
② wdict.get(word)
③ wdict.pop(word)
④ wdict.values( )
딕셔너리 wdict에서 word 키에 해당하는 값을 가져오는 방법
① wdict[word]
wdict[word] = "사과" (값을 저장)
value = wdict[word] (값을 가져오기)
② wdict.get(word)
word 키에 대한 값을 반환하고, 해당 키가 존재하지 않는 경우에는 None을 반환함.
value = wdict.get(word) (값을 가져오기)
문제 20번
아래는 3X3 2 차원 리스트 board 의 대각선 항목이 모두 X 기호로 채워져 있는지 검사하는 함수이다 .
다음 물음에 따라 답하시오. [14강]
아래와 같은 방향에 위치한 항목이 X로 채워졌을 때 True 가 반환되도록 각각 들어갈 (가)와 (나)의 표현은?
① i, i
② 3, 3 - i
③ i, 3 - 1 - i
④ 3 - i, i
행의 값은 0에서 1씩 증가
열의 값은 2에서 1씩 감소
연습문제 1.
다음과 같은 형식으로 실수를 출력할 때, 숫자 앞에 삽입된 공백(스페이스)의 개수는? [9강]
> | 오른쪽 정렬 |
20 | 필드 폭 |
.3 | 소수점 이하 3자리까지 소수 |
연습문제 2.
private 데이터 필드에 값을 설정하는 메소드를 접근자(accessor)라고 한다. [10강]
private 데이터 필드에 접근하는 메소드
· 접근자(accessor) : 데이터 필드 반환
· 변경자(mutator) : 데이터 필드 설정
연습문제 3.
다음은 객체의 생성 과정을 도식화한 것이다. 빈칸에 들어갈 알맞은 말은?
ⓙ 초기자 호출
② private 데이터 필드 생성
③ self 매개변수 전달
④ 객체 참조 변수 생성
• 클래스의 생성자는 클래스의 이름과 동일
• 클래스의 이름과 초기자의 매개변수를 사용하여 생성자를 호출
(생성자를 호출할 때 사용하는 파라미터가 초기자의 파라미터와 동일할 뿐임)
class Myclass:
def __init__(self):
self.__private_field = 10
# private 데이터 필드를 10으로 초기화
def get_private_field(self):
return self.__private_field
# 접근자 메소드
def set_private_field(self, value):
self.__private_field = value
# 변경자 메소드
# 클래스 인스턴스 생성
my_object = Myclass()
# private 데이터 필드에 접근하여 값 얻기
value = my_object.get_private_field()
print(value)
# 출력: 10
# private 데이터 필드에 값을 설정하기
my_object.set_private_field(100)
# 변경된 값을 확인하기 위해 다시 접근
value = my_object.get_private_field()
print(value)
# 출력 : 100
'방송대 컴퓨터과학과 > 파이썬 프로그래밍 기초' 카테고리의 다른 글
방송대 파이썬 프로그래밍 기초 - 14강. 실전 프로그래밍 2 (0) | 2023.05.23 |
---|---|
방송대 파이썬 프로그래밍 기초 - 13강. 실전 프로그래밍 1 (0) | 2023.05.23 |
방송대 파이썬 프로그래밍 기초 - 12강. 파일 (1) | 2023.05.22 |
방송대 파이썬 프로그래밍 기초 - 11강. 모듈 (0) | 2023.05.22 |
방송대 파이썬 프로그래밍 기초 - 10강. 객체지향 (1) | 2023.04.22 |