방송대 파이썬 프로그래밍 기초 - 8강. 체크포인트1 (1-7강)
문제 1번
1. 파이썬 인터프리터에서 기본적으로 지원하는 함수를 무엇이라고 하는가? [4강]
① 인터프리터 함수
② 내장함수
③ 기본함수
④ 사용자 정의 함수
파이썬 내장 함수
• 파이썬 인터프리터에서 기본적으로 지원하는 함수
• 별도의 모듈이나 패키지 없이 사용 가능
ex. print, max, min, round, abs, pow 등
• 인터프리터 함수, 기본함수는 사용하지 않는 용어임.
• 사용자 정의 함수는 'def' 키워드를 사용하여 정의하고, 함수명, 매개변수, 함수 내용, 반환값 등으로 구성됨. [9강]
문제 2번
2. 구조적 프로그래밍 패러다임에서 제안된 제어구조가 아닌 것은? [5강]
① 순차 구조
② 반복 구조
③ 재귀 구조
④ 선택 구조
• 구조적 프로그래밍 패러다임
- 절차적 프로그래밍 패러다임의 하위 개념
- 네덜란드 과학자인 에츠허르 다익스트라가 처음 제안함.
- goto문을 사용하지 않고 프로그램을 3가지 제어 구조만으로 구성하는 프로그래밍 패러다임
- 프로그램 실행 흐름이 간결하고 작은 규모로 조직화하기 쉬움.
· 순차구조(sequence) 구조
· 선택구조(selection) 구조 : if-else, switch 등
· 반복(iteration) 구조 : for, while 등
• 순차 구조 → [본 강의 5강]
- 실행의 흐름을 주어지는 명령의 위치적 흐름에 따라 수행하는 구조
- 명령 라인 위에서 아래로 흐르는 가장 직관적인 구조
• 선택 구조 → [본 강의 6강]
- 특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 결정하는 구조
- 실행 여부는 조건에 따라 결정
• 반복 구조 → [본 강의 7강]
- 특정 영역의 명령문을 여러 번 재실행하는 구조
- 반복 횟수를 조건에 따라 결정
• 재귀구조는 구조적 프로그래밍 패러다임의 하위 내용이 아니고, C와 Java에서 더 자주 사용됨.
문제 3번
3. 다음 코드 실행 시 에러의 원인에 대한 설명으로 올바른 것은? [7강]
① 불필요한 들여쓰기
② count 변수 초기화
③ 무한 반복
④ 반복 구조 설계 전략 미사용
• 무한반복 : 컴퓨터, 스마트폰 앱이 오류 발생으로 중단되는 주요 원인
• 들여쓰기는 잘 되어 있음.
• count 변수는 Line3에서 count = 1로 초기화 해둠.
• count의 값을 한번도 증가시키지 않음.
• 반복구조 설계 전략은 무조건 사용할 필요 없음.
문제 4번
4. 다음은 무엇에 대한 사전적 정의인가? [1강]
1. 이론을 세우는 데 기초가 되는 사실 2. 관찰이나 실험, 조사로 얻은 사실 |
① 상상
② 명령
③ 정보
④ 데이터
데이터 (data) | - 어떤 현상이나 사실에 대한 설명 또는 설명의 집합 - 관찰이나 측정을 통해 얻은 수치, 문자 형태의 표현할 수 있는 질적(quality) 또는 양적(quantity) 값 |
정보 (information) | - 문제 또는 질문을 해결하기 위해 사용할 수 있는 데이터와 데이터의 집합 - 관찰과 측정을 통해 얻은 데이터를 처리(정렬, 합산, 군집화 등)하여 실제 문제 해결에 도움이 되는 데이터 또는 결과물 |
• 데이터는 기록된 사실이지만, 직접적으로 문제를 해결하는데 도움이 되지 않음.
• 데이터는 처리와 가공을 통해 정보로 변환됨.
문제 5번
5. 고급언어로 작성된 소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환해 주는 프로그램은? [1강]
① 인터프리터
② 프로그래밍 언어
③ 파이썬
④ 코랩
• 고급 언어로 작성된 프로그램은 기계어 밖에 인식할 수 없는 컴퓨터에 의해 실행 불가능
• 프로그램 언어를 이해하고 해석하는 방법으로 컴파일러(compiler) 또는 인터프리터(interpreter)를 사용
컴파일러(compiler) | 인터프리터(interpreter) | |
변환 방식 | 전체 소스 코드를 한 번에 변환하여 기계어 코드를 작성 | 소스 코드를 한 줄씩 읽어들여 바로 실행 |
실행 방식 | 변환된 기계어 코드를 실행 | 소스 코드를 읽어들여 즉시 실행 |
속도 | 실행 시간이 짧고 빠름 | 실행 시간이 상대적으로 느림 |
오류 검출 | 컴파일 단계에서 오류를 검출 | 실행 중 오류를 검출 |
의존성 관리 | 컴파일 시간에 라이브러리와의 의존성을 해결 | 실행 시간에 라이브러리와의 의존성을 해결 |
실행 파일 | 컴파일 단계에서 실행 파일 생성 | 실행 시간에 소스 코드를 해석하므로 별도의 실행 파일 생성 없음 |
이식성 | 변환된 기계어 코드를 실행하기 때문에 이식성이 좋음 | 소스 코드를 해석하므로 실행 환경에 따라 이식성이 다를 수 있음 |
예시 언어 | C, C++, Java 등 | Python, Ruby, Perl |
문제 6번
6. 아래 그림의 신체기관과 동일한 기능을 수행하는 컴퓨터 장치로 바르게 짝지어진 것은? [2강]
① CPU
② 플래시 메모리
③ RAM
④ HMD
1) 기억&저장장치 :
- 명령과 데이터를 기억(저장)하는 하드웨어
- ex. 주기억장치(RAM, ROM)와 보조기억장치(자기디스크, SSD 등)
2) 제어&연산장치 :
- 명령과 데이터를 읽고 연산 또는 처리하는 장치
- ex. CPU(레지스터, 제어유닛, 연산논리유닛)
3) 입력장치 :
- 명령과 데이터를 컴퓨터에 전달하는 장치
- ex. 키보드, 마우스, 스캐너, 터치스크린, 마이오, 립모션
4) 출력장치 :
- 정보처리 결과를 인식 가능한 형태의 데이터로 내보내는 장치
- ex. 모니터, 스피커, HUD, HMD
① CPU → 제어&연산장치
② 플래시 메모리 → 기억&저장장치
③ RAM → 기억&저장장치
④ HMD → 출력장치
HUD(Head-Up Display) | HMD(Head-Mounted Display) |
· 자동차, 항공기 등의 앞 유리창에 정보를 표시해주는 증강현실 장치 · 기계를 볼 때 고개를 숙여서 내려다 볼 필요 없이 사용자가 전방을 주시할 수 있도록 시야의 전면에 정보를 제공함. · 현실에 대한 정보가 가상의 정보와 같이 들어옴. → 가상정보 + 현실정보 · 증강현실(AR, Augmented Reality)을 동작하기 위한 장치 |
·안경 또는 헬멧과 같은 장치로, 사용자의 머리에 장착하여 눈 앞에 직접 영상을 제시할 수 있는 디스플레이 장치 ·현실세계에 대한 정보 없이 가상 세계 정보만을 표현해주기 위한 장치 → 가상정보 · 가상현실(VR, Virtual Reality)을 동작하기 위한 장치 |
문제 7번
7. 아래와 같은 시퀀스를 생성하는 코드로 올바른 것은? [7강]
① range(0, 9, 2) = odd
② odd = range(1, 10, 2)
③ odd = range(1, 9, 2)
④ odd = range(0, 10, 2)
• odd는 참조변수(혹은 변수)
• range(a, b, k) :
- 반복문에서 특정 범위 내에서 일정 간격으로 반복 작업을 할 수 있는 내장함수
- a부터 b-1(b보다 작은 값)까지의 범위에서 k의 간격으로 시퀀스 생성
- a, b, k는 정수형(O), 부동소수점(X)
a | 시작 범위를 나타내는 정수, 범위에 포함(O) a를 생략하는 경우 기본값으로 0부터 시작함. |
b | 종료 범위를 나타내는 정수, 범위에 포함(X) 실제로 생성되는 숫자는 b-1까지의 범위 |
k | 생성되는 숫자 간의 간격, 0이나 음수도 가능함. k를 생략하는 경우 기본값으로 1씩 증가함. |
1, 3, 5, 7, 9가 있는 시퀀스이므로 1에서 시작, 10미만, 간격은 2씩
a = 1, b = 10, k = 2라서 range(1, 10, 2)로 쓰면 됨.
문제 8번
8. 파이썬 프로그램 실행과정에서 다음 밑줄 친 (가)에 들어갈 알맞은 말은? [3강]
① 자바 코드
② 소스 코드
③ 바이트 코드
④ 드레스 코드
• 파이썬 프로그래밍 실행 과정
1) 파이썬 애플리케이션은 텍스트 파일로 작성되어 있는 소스 코드 형태로 배포됨.
2) 소스코드는 파이썬 인터프리터로 전달되어 내부에 있는 CPython이 동작함.
2) CPython은 파이썬 소스 코드를 컴파일하여 바이트코드로 변환함.
3) 바이트코드는 .pyc 파일로 저장되어 이후에 재실행될 때 빠르게 실행될 수 있도록 준비됨.
4) 파이썬 가상머신(PVM)은 바이트코드를 한 라인씩 읽어들여 실행함.
5) 소스코드가 수정되지 않은 상태로 변경없이 재실행 시, 이미 컴파일된 바이트코드로 빠르게 실행됨.
→ 파이썬 프로그램은 소스 코드를 CPython을 통해 컴파일하여 바이트코드(.pyc파일)로 변환하고, 이를 파이썬 가상머신에서 실행하는 과정을 거치며, 변경이 없는 경우 빠르게 실행될 수 있음.
• 바이트코드
- 파이썬 가상머신(PVM)에서 실행되는 중간 단계의 코드
- 파이썬 프로그램이 플랫폼 독립적(모든 운영체제에서 실행 가능)으로 실행될 수 있도록 파이썬 인터프리터가 파이썬 가상머신(PVM)을 통해 중간 언어로 만드는 것
- 기계어보다는 파이썬 인터프리터가 이해하기 쉬운 형태로 변환되어 있음.
문제 9번
9. 파이썬에 대한 설명으로 올바르지 않은 것은? [3강]
① 명령형, 절차적, 객체지향 프로그래밍 등 다양한 패러다임을 지원한다.
② 완전한 애플리케이션 단독 개발이 가능하다.
③ 실행할 수 있는 의사 코드 수준의 문법을 지향한다.
④ 많은 개발자의 의견을 수용하고 토론하며 발전한 언어이다.
• 파이썬의 장점
: 오픈소스, 인간적 & 직관적, 생산성 & 신속성, 대형 개발자 커뮤니티, 라이브러리와 프레임워크
- 오픈소스 : 많은 개발자의 의견을 수용하고 토론하며 발전한 언어 (PEP, 파이썬 관련 개선을 위한 제안)
- 인간적 & 직관적 : 실행할 수 있는 의사 코드 수준의 문법을 지향한다.
* 의사코드(Excutable pseudocode) : 특정 프로그래밍 언어의 문법에 따라 쓰인 것이 아니라, 일반적인 자연어로 코드를 흉내 내어 알고리즘을 표현하는 방법
- 생산성 & 신속성 : 문법이 간단하고 가독성이 높아 코드를 간결하게 작성할 수 있음.
- 대형 개발자 커뮤니티 : 검색을 통해 문제를 빠르게 찾아서 해결할 수 있음.
- 라이브러리와 프레임워크 : 다양한 라이브러리와 프레임워크가 풍부하게 제공됨.
• 파이썬의 단점
·C나 Java 등으로 작성된 프로그램보다 상대적으로 느린 실행속도
·완전한 애플리케이션 단독 개발이 불가능 [아래 이유는 참고]
- 인터프리터 언어라서 다른 컴파일 언어에 비해 상대적으로 느린 처리 속도, 코드 일부 노출 가능함.
- 애플리케이션 개발에 필요한 모든 기능이 파이썬 라이브러리에 있는 게 아님.
- 애플리케이션 배포나 실행을 위해서는 실행환경에 대한 고려가 필요함.
→ Rust 또는 Go 고려
문제 10번
10. 다음의 명령문에서 함수의 입력인 "Hello World!"를 무엇이라고 하는가? [4강]
print("Hello World!") |
① 연산자
② 식별자
③ 파라미터
④ 데이터
• print : 함수 이름
• "Hello World!" : 파라미터 = 매개변수
- 함수 내부에 정의된 코드에 의해 실행되는 데이터 전달하는 매개체
• 연산자(Operators) : 특정한 작업을 수행하기 위해 사용되는 기호 또는 기호의 조합
• 식별자(Identifiers) : 변수, 함수, 클래스 등의 이름을 지정하기 위해 사용되는 단어 또는 문자열
• 데이터(Data) :
- 관찰이나 측정을 통해 얻은 수치, 문자 형태의 표현할 수 있는 질적 또는 양적 값
- 프로그램에서 처리되는 정보의 단위
- 숫자, 문자열, 불리언 (True/False), 리스트, 튜플, 딕셔너리 등의 형태로 표현
문제 11번
11. 아래와 같은 명령문으로 생성된 리스트의 "black" 값을 "purple"로 수정하는 명령문은? [7강]
body = [181, 78, "dark brown", "black"] |
① body = "purple"
② body[3] = "purple"
③ body(4) = "purple"
④ body(3) = "purple"
• 대다수의 언어들은 인덱스가 0부터 시작함.
• 리스트 사용방법
- 해당 값 : ( )
- 해당 값의 위치 : [ ]
문제 12번
12. 다음 중 식별자로 사용할 수 없는 것은? [4강]
① or
② blue456
③ _24h
④ _____init_____
• or → 예약어와 겹치기 때문에 사용 불가능함.
• 식별자(IDentifier) :
- 값을 저장할 메모리 공간에 부여하는 고유한 이름
- 식별자를 통해 프로그램에서 해당 메모리 공간에 접근할 수 있음.
→ 프로그램 내부에 정의된 객체(변수, 함수 등)의 이름
·문자, 숫자, 밑줄로 구성 | O : volume, 부피 X : R+H |
·문자 또는 밑줄로만 시작 가능, 숫자로 시작 불가능 | O : graduate999 , _pythonic X : $_$ , 1-abc , 2023y |
·예약어와 동일할 수 없음 | X : class, else, in, True, return |
·길이 제한이 없음 |
문제 13번
13. 파이썬 개발 환경 중 오픈소스이며 문서화가 쉽고 전통적인 소스코드-컴파일-실행 방식에서 벗어나 클라우드 기반 대화형 개발 및 실행 환경을 제공하는 것은? [3강]
① IDLE
② VS Code
③ 주피터 노트북
④ 코랩
① IDLE : 클라우드 기반(X)
③ 주피터 노트북 : 오픈소스(O), 문서화 쉬움(O), 클라우드 기반(X)
④ 코랩 : 클라우드 기반(O)
• IDLE
- 기본으로 포함된 파이썬의 통합 개발 환경(IDE, Integrated Development Environment)
- 파이썬과 Tkinter GUI 툴킷이 합쳐져서 개발
- 구문 강조, 자동 완성, 스마트 들여쓰기 등이 포함된 단순한 IDE 지향
- stepping, breakpoint, call stack을 확인할 수 있는 통합 디버거 환경 제공
- 파이썬 공식 홈페이지에서 다운로드 가능
https://www.python.org
• 주피터 노트북
- 오픈소스 기반의 웹 플랫폼
- 파이썬을 비롯한 40여개의 프로그래밍 언어 지원
- 전통적인 소스코드-컴파일-실행 방식에서 벗어나 IPython 사용하여 웹 기반 대화형 개발 및 실행 환경
- 문서화하여 다른 사람과 공유하기가 편리
- 마크다운(Markdown)을 이용하여 코드 관련 타이틀, 설명 등 작성 가능
http://[호스트IP]:8888
• 구글 Colab
- 2017년 과학 연구와 교육을 목적으로 개발, 일부 유료 서비스
- 클라우드 기반 주피터 노트북 개발 환경
- 주피터 노트북 + 구글 드라이브를 결합한 서비스
- 데이터 분석 및 딥러닝 연산 등 고성능 컴퓨팅 리소스 활용 가능
https://colab.research.google.com/
문제 14번
14. 다음 코드의 실행결과로 올바른 것은? [4강]
들여쓰기에 진심인 파이썬 언어
이것을 C나 Java에서 실행하면 아무 문제 없음.
문제 15번
15. 다음과 같이 5개의 장치를 통해 컴퓨터를 구성하는 방식을 무엇이라고 하는가? [2강]
① 폰 노이만 구조
② 하버드 구조
③ 수정된 하버드 구조
④ 재래식 구조
• 폰 노이만 구조 (Von Neumann Architecture)
- 5개의 장치를 통해 CPU, 메모리, 프로그램 구조를 갖는 범용 컴퓨터 구조
- 컴퓨터 시스템의 메모리와 연산 장치가 같은 버스를 통해 통신하는 구조
- 데이터와 프로그램이 같은 메모리에 저장되고, 중앙 처리 장치(CPU)가 이를 번갈아가며 처리하는 구조
• 하버드 구조 (Harvard Architecture) [참고, 수업X]
- 명령과 데이터를 저장하는 주기억장치를 분할시켜 놓은 구조
- 데이터와 프로그램이 물리적으로 분리된 메모리에 저장되는 구조
- 데이터와 프로그램이 서로 다른 메모리에 저장되고, 별도의 데이터 버스와 프로그램 버스를 통해 중앙 처리 장치(CPU)가 독립적으로 데이터와 프로그램을 접근하는 구조
• 수정된 하버드 구조 (Modified Harvard Architecture) [참고, 수업X]
- 데이터와 프로그램이 물리적으로 분리된 메모리에 저장되지만, 프로그램 메모리와 데이터 메모리 사이에 캐시 메모리를 사용하여 데이터와 프로그램 간의 전송 속도를 개선한 구조
• 재래식 구조 (Classic Architecture) [참고, 수업X]
- 폰 노이만 구조와 유사하게 데이터와 프로그램이 같은 메모리에 저장되며, 중앙 처리 장치(CPU)가 데이터와 프로그램을 번갈아가며 처리하는 구조
문제 16번
16. 다음 중 실행 결과가 나머지와 다른 하나는? [5강]
프로그램 실행 순서를 머릿 속에 그릴 수 있는 문제
딱봐도 ④에서 변수 rad에 값을 할당하는 구문이 있어야 하는데 없어서 NameError 오류가 날 수밖에 없음.
그런데 재밌는 사실은 수업시간에 사용하는 구글 Colab에서는 ④대로 입력해도 오류가 나지 않음.
rad = int(rad)
rad 변수가 이전에 값이 할당되어 있지 않은 경우 :
→ 변수가 정의되어 있지 않기 때문에 NameError 오류가 발생해야함.
Colab
• 주피터 노트북 환경에서 제공되는 클라우드 기반의 개발 환경
• 파이썬 코드를 실행하는데 있어서 독자적인 동작 방식을 가지고 있음.
• 파이썬 인터프리터가 변수를 자동으로 초기화하는 기능이 있어서 해당 변수에 대한 값이 없을 경우에는 자동으로 None 값을 할당하여 오류 없이 코드가 실행되게 함.
→ int(rad) 부분이 실행되어도 None 값이 int() 함수에 전달됨.
→ rad 변수가 정수로 변환되지 않은 상태로 int(rad) 부분을 통과하게 됨.
IDLE에서 실행한 경우 NameError가 뜨는 것을 확인할 수 있음.
문제 17번
17. 여러 프로그램 실행이 요청되면 한정된 자원을 효과적으로 사용하도록 조율하는 운영체제의 기능은? [2강]
① 입출력장치 관리
② 프로세스 관리
③ 사용자 인터페이스
④ 기억장치 관리
• 운영체제의 역할 :
- 컴퓨터의 자원(하드웨어)을 효율적으로 관리하고 응용 프로그램에 자원을 할당
- 사용자 인터페이스(UI), 프로세스 관리, 네트워크 관리, 기억·저장장치 관리, 입출력장치 관리
사용자 인터페이스(UI) | 컴퓨터와 사용자를 매개하여 상호작용하는 방법을 제공 방식에 따라 CLI(텍스트 기반)와 GUI(그래픽 기반)로 분류함. |
프로세스 관리 | 요청에 따라 프로세스를 생성하여 프로그램을 실행하고, 한정된 시스템 자원(CPU 시간, 메모리, 입출력 등)을 효율적으로 사용하도록 각 프로세스에 할당하고 조율함. |
네트워크 관리 | 응용 프로그램이 통신할 수 있는 환경 제공 및 통신 장치(하드웨어) 관리 |
기억·저장장치 관리 | 파일 시스템을 조직화하여 파일들이 디스크에 효율적으로 저장되도록 관리하며, 파일의 접근 권한과 보안을 관리함. |
입출력장치 관리 | 다양한 입출력장치(키보드, 마우스, 모니터, 프린터 등)를 관리하여 컴퓨터와 사용자 간의 상호작용과 데이터의 입력 및 출력을 처리함. |
문제 18번
18. 다음은 홀짝 여부를 판별하는 프로그램의 일부이다. 빈칸에 들어갈 올바른 표현식은? [6강]
① number // 2
② number / 2 == 1
③ number % 2 == 1
④ number // 2 == 1
빈칸에 들어갈 표현식은 '2로 나눴을 때 나머지가 1입니까?'이다.·정수 나눗셈 연산자(//) : 나누기 후 몫만 가져오는 연산자 (정수형)
·모듈로 연산자(%) : 나누기 후 나머지값만 가져오는 연산자 (정수형) → 짝홀수 판별에 많이 사용됨.
문제 19번
19. 다음 코드의 실행 결과는? [7강]
외부 루프에서 i는 1에서 4까지 1씩 증가하는 것을 반복하는 동안
내부 루프에서 j는 0에서 i-1까지 1씩 증가하는 것을 반복하면서
j가 반복될 때마다 출력값의 간격을 띄우지 않고 #을 출력한다.
i | j | 출력 |
1 | 0 | # |
2 | 1 | ## |
3 | 2 | ### |
4 | 3 | #### |
중첩된 두 개의 루프를 사용하여 "#" 문자를 출력하는 간단한 형태의 삼각형을 출력함.
위 코드와 결과값이 같은 더 간단한 코드가 없는지 생각해보았다. [참고, 수업X]
join() 메서드
- 파이썬의 문자열 메서드 중 하나로, 문자열을 연결하는 역할을 함.
- 특정한 문자열을 구분자로 사용하여 리스트나 튜플 등의 요소들을 하나의 문자열로 합침.
i | ["#"] * i | "".join(["#"] * i) |
1 | ["#"] | "#" |
2 | ["#", "#"] | "##" |
3 | ["#", "#", "#"] | "###" |
4 | ["#", "#", "#", "#"] | "####" |
문제 20번
20. 아래는 가위바위보 게임 소스코드의 일부이다. 다음 물음에 따라 답하시오.
20-1. [6강]
흐름상 '그리고'를 나타내는 연산자 'and'가 들어가야 함.
내가 바위를 내고, 컴퓨터가 가위를 내야 내가 이김.
20-2. [6강]
다분 선택구조 : if-elif-else 구문
연습문제 3개
1. 파이썬에서 데이터의 데이터 타입은 다른 데이터 타입으로 변경이 불가능하다. [4강]
① O
② X
2. 파이썬은 히도 판로쉼이 주도하여 발전하고 있다. [3강]
① O
② X
히도 판로쉼이 개발한 언어인 파이썬은 많은 개발자의 의견을 수용하고 토론하며 발전하고 있다.
특정 인물이나 조직이 주도하고 있지 않다.
·파이썬 관련 개선을 위한 제안(PEP, Python Enhancement Proposal)
- 새로운 파이썬의 기능, 파이썬 프로세스, 환경에 대해 커뮤니티에 설계 문서나 정보를 제공
- 파이썬 기능의 간결한 기술적 사양과 기능을 위한 근거들을 제공
- 커뮤니티의 의견을 수집, 합의 도출, 반대의견 청취
3. print(hei_list[2])의 실행 결과값은 14이다. [7강]
① O
② X