본문 바로가기
방통대

방통대 파이썬 프로그래밍 기말시험 대비 핵심 예상 110 문제 (정재화 교수님 실습 코드 포함)

by 4.5/4.5 2024. 6. 6.
반응형

1. 다음 중 데이터와 정보의 차이점을 가장 잘 설명한 것은?

1) 데이터는 가공된 정보이며, 정보는 관찰된 데이터이다.
2) 데이터는 관찰이나 측정을 통해 얻은 값이고, 정보는 문제 해결에 도움이 되는 가공된 데이터이다.
3) 데이터는 컴퓨터가 처리하는 모든 값이며, 정보는 그 데이터의 입력 값이다.
4) 데이터는 프로그램을 구성하는 요소이고, 정보는 그 결과물이다.

정답: 2

해설: 데이터는 관찰이나 측정을 통해 얻은 변할 수 있는 값이며, 정보는 이러한 데이터를 처리 및 가공하여 실제 문제 해결에 도움이 되는 결과물을 의미한다.

 


2. 다음 중 컴퓨터의 주요 기능이 아닌 것은?

1) 입력 기능
2) 제어 기능
3) 출력 기능
4) 가공 기능

정답: 4

해설: 컴퓨터는 데이터를 받아들이는 입력 기능, 내부 장치를 조정하는 제어 기능, 데이터를 저장하는 저장/기억 기능, 계산을 수행하는 연산 기능, 그리고 데이터를 사용자에게 전달하는 출력 기능을 갖추고 있다. 가공 기능은 직접적으로 언급된 컴퓨터의 주요 기능 중 하나가 아니다.

 


3. 다음 중 알고리즘의 필수 조건이 아닌 것은?

1) 명확성
2) 유한성
3) 무한성
4) 효율성

정답: 3

해설: 알고리즘은 문제를 풀기 위한 단계별 절차를 수학적으로 기술한 것으로, 명확성, 유한성, 효율성이 보장되어야 한다. 무한성은 알고리즘의 필수 조건이 아니다.

 


4. 프로그램과 프로그래밍의 차이에 대한 설명으로 옳은 것은?

1) 프로그램은 알고리즘을 구성하는 과정이고, 프로그래밍은 그 결과물이다.
2) 프로그램은 컴퓨터에서 실행되는 소프트웨어이며, 프로그래밍은 그 소프트웨어를 작성하는 과정이다.
3) 프로그램은 문제 해결 방법을 정의한 것이며, 프로그래밍은 데이터 처리 과정을 정의한 것이다.
4) 프로그램은 컴파일러를 이용해 작성한 것이고, 프로그래밍은 인터프리터를 이용해 작성한 것이다.

정답: 2

해설: 프로그램은 컴퓨터에서 실행되는 소프트웨어를 의미하며, 프로그래밍은 그 소프트웨어를 작성하는 과정이다. 프로그래머가 프로그래밍 언어를 이용해 소스코드를 작성하고, 이를 컴파일러나 인터프리터를 통해 컴퓨터에서 실행 가능한 프로그램으로 만든다.

 

 

5. 다음 중 폰 노이만 구조에 대한 설명으로 옳은 것은?

1) 폰 노이만 구조는 입력 장치와 출력 장치를 제외한 모든 장치를 포함한다.
2) 폰 노이만 구조는 CPU, 메모리, 프로그램 구조를 갖는 범용 컴퓨터 구조를 의미한다.
3) 폰 노이만 구조는 주기억장치 없이 보조기억장치만을 사용한다.
4) 폰 노이만 구조는 하드웨어와 소프트웨어를 통합하는 구조를 말한다.

정답: 2

해설: 폰 노이만 구조는 CPU, 메모리, 프로그램 구조를 갖는 범용 컴퓨터 구조를 의미하며, 주기억장치와 보조기억장치를 모두 사용한다. 입력 장치와 출력 장치도 포함하여 컴퓨터 전체 구조를 설명한다.

 


6. 다음 중 컴퓨터의 하드웨어 구성 요소가 아닌 것은?

1) 입력 장치
2) 운영체제
3) 중앙처리장치
4) 주기억장치

정답: 2

해설: 컴퓨터의 하드웨어 구성 요소에는 입력 장치, 중앙처리장치(CPU), 주기억장치(RAM) 등이 포함된다. 운영체제는 소프트웨어로, 하드웨어가 아니다.

 


7. 다음 중 주기억장치의 역할로 옳은 것은?

1) 데이터를 영구적으로 저장하여 전원이 꺼져도 보존한다.
2) 컴퓨터가 처리할 데이터와 프로그램을 저장하고, 처리 결과를 일시적으로 저장한다.
3) 외부 데이터를 컴퓨터로 전달한다.
4) 데이터를 처리하고 그 결과를 표시한다.

정답: 2


해설: 주기억장치는 컴퓨터가 처리할 데이터와 프로그램을 저장하고, 처리 결과를 일시적으로 저장하는 역할을 한다. 데이터를 영구적으로 저장하는 역할은 보조기억장치가 담당한다.

 


8. 다음 중 시스템 소프트웨어의 종류에 해당하지 않는 것은?

1) 운영체제
2) 컴파일러
3) 유틸리티
4) 워드 프로세서

정답: 4

해설: 시스템 소프트웨어에는 운영체제, 컴파일러, 유틸리티 등이 포함된다. 워드 프로세서는 응용 소프트웨어에 해당한다.

 


9. 컴퓨터의 중앙처리장치(CPU)가 수행하는 주요 기능이 아닌 것은?

1) 연산 기능
2) 비교 기능
3) 데이터 영구 저장
4) 명령어 해석 및 실행

정답: 3

해설: 중앙처리장치(CPU)는 연산, 비교, 명령어 해석 및 실행 등의 기능을 수행한다. 데이터의 영구 저장은 보조기억장치가 담당하는 역할이다.

 

 

 

10. 다음 중 파이썬의 개발자와 개발 목적에 대한 설명으로 옳은 것은?

1) 파이썬은 제임스 고슬링에 의해 교육 목적으로 개발되었다.
2) 파이썬은 히도 판로쉼에 의해 분산 운영 체제의 시스템 관리를 위한 쉘 스크립팅 언어로 개발되었다.
3) 파이썬은 데니스 리치에 의해 운영 체제 개발을 목적으로 개발되었다.
4) 파이썬은 리누스 토르발스에 의해 웹 개발을 목적으로 개발되었다.

정답: 2

해설: 파이썬은 히도 판로쉼(Guido van Rossum)에 의해 1991년 분산 운영 체제(아메바)의 시스템 관리를 위한 쉘 스크립팅 언어로 개발되었다. 제임스 고슬링은 자바의 개발자이고, 데니스 리치는 C 언어의 개발자이며, 리누스 토르발스는 리눅스 커널의 개발자이다.

 


11. 다음 중 파이썬이 지원하지 않는 프로그래밍 패러다임은?

1) 명령형 프로그래밍
2) 절차적 프로그래밍
3) 객체지향 프로그래밍
4) 선언형 프로그래밍

정답: 4

해설: 파이썬은 명령형 프로그래밍, 절차적 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍 패러다임을 지원한다. 그러나 파이썬은 선언형 프로그래밍을 직접적으로 지원하지 않는다.

 


12. 파이썬의 새로운 기능과 환경에 대한 설계 문서나 정보를 제공하는 문서의 이름은?

1) PEP (Python Enhancement Proposal)
2) PVM (Python Virtual Machine)
3) CPython
4) IDLE

정답: 1

해설: 파이썬 확장제안(PEP)은 새로운 파이썬의 기능, 파이썬 프로세스, 환경 등에 대해 커뮤니티에 설계 문서나 정보를 제공하는 문서이다. PVM은 파이썬 가상 머신을, CPython은 파이썬 인터프리터의 한 구현체를 의미하며, IDLE는 파이썬의 기본 통합 개발 환경이다.

 


13. 파이썬 소스 코드는 어떤 과정으로 실행되는가?

1) 컴파일되어 기계어 코드로 직접 실행된다.
2) CPython에 의해 바이트 코드로 변환되고, 파이썬 가상 머신(PVM)에 의해 한 라인씩 기계어 코드로 변환되어 실행된다.
3) CPython에 의해 바로 기계어 코드로 변환되어 실행된다.
4) 소스 코드가 직접 실행된다.

정답: 2

해설: 파이썬 소스 코드는 CPython에 의해 바이트 코드로 변환되고, 파이썬 가상 머신(PVM)이 이 바이트 코드를 한 라인씩 기계어 코드로 변환하여 실행한다. 이 과정은 파이썬이 인터프리터 언어임을 나타낸다.

 


14. 다음 중 주피터 노트북과 구글 드라이브를 결합한 서비스로, 데이터 분석 및 딥러닝 연산에 고성능 컴퓨팅 리소스를 활용할 수 있는 것은?

1) IDLE
2) PEP
3) CPython
4) 구글 코랩(Colab)

정답: 4

해설: 구글 코랩(Colab)은 주피터 노트북과 구글 드라이브를 결합한 서비스로, 데이터 분석 및 딥러닝 연산에 고성능 컴퓨팅 리소스를 활용할 수 있다. IDLE는 파이썬의 기본 통합 개발 환경이고, PEP는 파이썬 확장제안, CPython은 파이썬 인터프리터의 한 구현체이다.

 

 

 

15. 다음 중 파이썬에서 변수에 대한 설명으로 옳은 것은?

1) 변수는 코드의 특정 작업을 수행하는 함수의 이름이다.
2) 변수는 파이썬 인터프리터에 의해 기본적으로 제공되는 함수이다.
3) 변수는 처리할 데이터와 처리된 결과를 임시적으로 저장하는 공간이다.
4) 변수는 연산자 우선순위를 결정하는 요소이다.

정답: 3

해설: 변수는 처리할 데이터와 처리된 결과를 임시적으로 저장하는 공간이다. 함수의 이름은 특정 작업을 수행하는 코드 집합을 실행하는 단위이고, 파이썬 인터프리터에 의해 제공되는 기본 함수는 내장함수이다. 연산자 우선순위는 표현식에 사용된 여러 연산자의 연산 순서를 결정하는 것이다.

 


16. 파이썬에서 산술 연산자에 대한 설명으로 옳지 않은 것은?

1) ** 연산자는 거듭제곱을 의미한다.
2) % 연산자는 나머지를 구하는 연산자이다.
3) // 연산자는 정수 나눗셈 연산자이다.
4) + 연산자는 문자열을 나누는 연산자이다.

정답: 4

해설: + 연산자는 산술 연산자로, 주로 숫자 값을 더하는 데 사용되며, 문자열을 연결하는 데에도 사용된다. 문자열을 나누는 연산자는 없다. **는 거듭제곱을, %는 나머지를, //는 정수 나눗셈을 의미한다.

 


17. 파이썬에서 내장함수에 대한 설명으로 옳은 것은?

1) 내장함수는 사용자 정의 함수와 동일하게 동작한다.
2) 내장함수는 별도의 라이브러리 없이 파이썬 인터프리터에서 기본적으로 지원하는 함수이다.
3) 내장함수는 파이썬 표준 라이브러리에 포함된 함수이다.
4) 내장함수는 특정 작업을 수행하는 코드의 집합으로, 반드시 모듈을 임포트해야 사용할 수 있다.

정답: 2

해설: 내장함수는 파이썬 인터프리터에서 기본적으로 제공하는 함수로, 별도의 라이브러리나 모듈을 임포트하지 않아도 사용할 수 있다. 예를 들어, `print()`, `len()`, `range()` 등이 있다. 사용자 정의 함수는 프로그래머가 정의한 함수이고, 표준 라이브러리와는 별개이다.

 


18. 다음 중 파이썬에서 주석을 작성하는 방법으로 옳은 것은?

1) // 주석 내용
2) /* 주석 내용 */
3) # 주석 내용
4) <!-- 주석 내용 -->

정답: 3

해설: 파이썬에서는 주석을 작성할 때 `#` 기호를 사용한다. 여러 줄 주석은 `"""` 또는 `'''`를 사용할 수 있다. `//`, `/* */`, `<!-- -->`는 각각 다른 프로그래밍 언어에서 주석을 작성하는 방법이다.

 


19. 파이썬 코드에서 들여쓰기에 대한 설명으로 옳은 것은?

1) 파이썬은 들여쓰기를 무시하는 언어이다.
2) 파이썬에서 들여쓰기는 선택사항이다.
3) 파이썬에서 들여쓰기는 코드 블록을 구분하는 데 사용된다.
4) 파이썬에서 들여쓰기는 변수의 범위를 제한하는 데 사용된다.

정답: 3

해설: 파이썬은 들여쓰기에 의존적인 언어로, 들여쓰기를 통해 코드 블록을 구분한다. 이는 코드의 가독성을 높이고 구조를 명확히 하는 데 중요한 역할을 한다. 들여쓰기는 선택사항이 아니며, 잘못된 들여쓰기는 구문 오류를 발생시킨다.

 

 

 

20. 다음 중 파이썬에서 순차 구조에 대한 설명으로 옳은 것은?

1) 특정 조건에 따라 명령문을 여러 번 재실행하는 구조이다.
2) 프로그램의 실행 흐름을 결정하는 구조로, 명령의 위치적 흐름에 따라 수행된다.
3) 특정 조건에 따라 명령문의 실행 여부를 결정하는 구조이다.
4) 프로그램의 설계 미숙이나 문법 오류로 인해 발생하는 문제 상황이다.

정답: 2

해설: 순차 구조는 프로그램의 실행 흐름을 명령의 위치적 흐름에 따라 수행하는 구조이다. 특정 조건에 따라 명령문을 여러 번 재실행하는 구조는 반복 구조이고, 특정 조건에 따라 명령문의 실행 여부를 결정하는 구조는 선택 구조이다. 프로그램의 설계 미숙이나 문법 오류로 인해 발생하는 문제 상황은 프로그래밍 에러이다.



21. 다음 중 파이썬에서 선택 구조에 대한 설명으로 옳은 것은?

1) 프로그램의 실행 흐름을 결정하는 구조로, 명령의 위치적 흐름에 따라 수행된다.
2) 특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 조건에 따라 결정하는 구조이다.
3) 특정 영역의 명령문을 조건에 따라 여러 번 재실행하는 구조이다.
4) 프로그램의 설계 미숙이나 문법 오류로 인해 발생하는 문제 상황이다.

정답: 2

해설: 선택 구조는 특정 영역 내의 명령문에 대한 실행 여부를 프로그램 실행 과정 중 조건에 따라 결정하는 구조이다. 명령의 위치적 흐름에 따라 수행되는 구조는 순차 구조이고, 특정 영역의 명령문을 조건에 따라 여러 번 재실행하는 구조는 반복 구조이다. 프로그램의 설계 미숙이나 문법 오류로 인해 발생하는 문제 상황은 프로그래밍 에러이다.

 


22. 다음 중 파이썬의 input 함수에 대한 설명으로 옳은 것은?

1) 사용자로부터 데이터를 입력 받아, 정수 데이터 타입으로 반환한다.
2) 사용자로부터 데이터를 입력 받아, 부동 소수점 데이터 타입으로 반환한다.
3) 사용자로부터 데이터를 입력 받아, 문자 데이터 타입으로 반환한다.
4) 사용자로부터 데이터를 입력 받아, 리스트 데이터 타입으로 반환한다.

정답: 3

해설: 파이썬의 input 함수는 사용자로부터 데이터를 입력 받아, 문자 데이터 타입으로 반환한다. 입력받은 데이터를 다른 데이터 타입으로 변환하려면 int, float 등의 함수를 사용해야 한다.

 


23. 다음 중 파이썬에서 데이터 타입 변환에 사용되는 함수가 아닌 것은?

1) str
2) int
3) float
4) input

정답: 4

해설: str, int, float 함수는 각각 데이터를 문자열, 정수, 부동 소수점 데이터 타입으로 변환하는 함수이다. input 함수는 사용자로부터 데이터를 입력받는 함수로, 데이터 타입 변환 함수가 아니다.



24. 파이썬의 print 함수에 대한 설명으로 옳은 것은?

1) 여러 개의 데이터를 단일 print 함수로 출력할 수 없으며, 각 데이터는 별도로 출력해야 한다.
2) 여러 개의 데이터를 단일 print 함수로 출력할 수 있으며, 콤마(,)로 파라미터를 구분하여 입력한다.
3) 여러 개의 데이터를 단일 print 함수로 출력할 수 있으며, 세미콜론(;)으로 파라미터를 구분하여 입력한다.
4) print 함수는 하나의 데이터만 출력할 수 있다.

정답: 2

해설: 파이썬의 print 함수는 여러 개의 데이터를 단일 print 함수로 출력할 수 있으며, 콤마(,)로 파라미터를 구분하여 입력한다. 예를 들어, print("Hello", "World")는 "Hello World"를 출력한다.

 

 

25. 다음 중 선택 구조에 대한 설명으로 옳은 것은?

1) 선택 구조는 명령의 위치적 흐름에 따라 순차적으로 실행되는 구조이다.
2) 선택 구조는 특정 영역 내의 명령문에 대한 실행 여부를 조건에 따라 판단하여 결정하는 구조이다.
3) 선택 구조는 특정 영역의 명령문을 조건에 따라 여러 번 재실행하는 구조이다.
4) 선택 구조는 프로그램의 설계 미숙이나 문법 오류로 인해 발생하는 문제 상황이다.

정답: 2

해설: 선택 구조는 특정 영역 내의 명령문에 대한 실행 여부를 조건에 따라 판단하여 결정하는 구조이다. 명령의 위치적 흐름에 따라 순차적으로 실행되는 구조는 순차 구조이고, 특정 영역의 명령문을 조건에 따라 여러 번 재실행하는 구조는 반복 구조이다. 프로그램의 설계 미숙이나 문법 오류로 인해 발생하는 문제 상황은 프로그래밍 에러이다.

 


26. 다음 중 불리언 타입에 대한 설명으로 옳은 것은?

1) 불리언 타입은 정수와 부동 소수점 값을 포함하는 데이터 타입이다.
2) 불리언 타입은 참(True)과 거짓(False)의 논리값만 표현할 수 있는 데이터 타입이다.
3) 불리언 타입은 문자열 값을 포함하는 데이터 타입이다.
4) 불리언 타입은 리스트와 튜플 값을 포함하는 데이터 타입이다.

정답: 2

해설: 불리언 타입은 논리값인 참(True)과 거짓(False) 값만 표현할 수 있는 데이터 타입이다. 정수, 부동 소수점, 문자열, 리스트, 튜플은 각각 별도의 데이터 타입이다.

 


27. 다음 중 불리언식을 생성하는 데 사용되는 연산자는?

1) 산술 연산자
2) 대입 연산자
3) 비교 연산자
4) 비트 연산자

정답: 3

해설: 불리언식은 비교 연산자를 사용하여 결과가 불리언 타입으로 생성되는 표현식이다. 산술 연산자는 덧셈, 뺄셈 등을 수행하고, 대입 연산자는 값을 변수에 할당하며, 비트 연산자는 비트 단위로 연산을 수행한다.

 


28. 다음 중 논리연산자에 대한 설명으로 옳은 것은?

1) 논리연산자는 두 개의 숫자 값을 연산하여 결과를 얻는 연산자이다.
2) 논리연산자는 두 개의 문자열 값을 연산하여 결과를 얻는 연산자이다.
3) 논리연산자는 두 개의 불리언 값을 연산하여 참 또는 거짓을 결과로 얻는 연산자이다.
4) 논리연산자는 두 개의 리스트 값을 연산하여 결과를 얻는 연산자이다.

정답: 3

해설: 논리연산자는 두 개의 논리값(불리언 값)을 연산하여 참 또는 거짓을 결과로 얻는 연산자이다. 숫자 값, 문자열 값, 리스트 값을 연산하는 연산자는 각각 산술 연산자, 문자열 연산자, 리스트 연산자이다.

 


29. 다음 중 단락평가에 대한 설명으로 옳은 것은?

1) 단락평가는 모든 논리값을 평가하여 결과를 얻는 기법이다.
2) 단락평가는 첫 번째 논리값만으로 전체 연산 결과가 판별 가능할 때 두 번째 논리값은 평가하지 않는 기법이다.
3) 단락평가는 첫 번째 논리값을 무시하고 두 번째 논리값을 평가하는 기법이다.
4) 단락평가는 두 개의 논리값을 모두 무시하고 결과를 추정하는 기법이다.

정답: 2

해설: 단락평가는 첫 번째 논리값만으로 전체 연산 결과가 판별 가능할 때 두 번째 논리값은 평가하지 않는 기법이다. 이는 불필요한 평가를 피하여 프로그램의 효율성을 높이는 방법이다.



30. 다음 중 if, elif, else 명령어를 사용하는 구조에 대한 설명으로 옳은 것은?

1) if, elif, else 명령어는 반복 구조를 구현하는 데 사용된다.
2) if, elif, else 명령어는 순차 구조를 구현하는 데 사용된다.
3) if, elif, else 명령어는 선택 구조를 구현하는 데 사용된다.
4) if, elif, else 명령어는 프로그래밍 에러를 처리하는 데 사용된다.

정답: 3

해설: if, elif, else 명령어는 선택 구조를 구현하는 데 사용된다. 이를 통해 프로그램이 조건에 따라 다른 경로로 실행되도록 할 수 있다. 반복 구조는 while, for 명령어를 사용하여 구현하며, 프로그래밍 에러는 예외 처리 구조를 통해 처리할 수 있다.

 

 

 

31. 다음 코드에서 A, B, C 중 가장 큰 수를 출력하기 위해 사용된 논리 구조는?

# A, B, C 사용자 입력
a = int(input("A: "))
b = int(input("B: "))
c = int(input("C: "))

# A, B, C 중 가장 큰 수 출력
if a > b:
    if b > c:
        print(a)
    else:
        if a > c:
            print(a)
        else:
            print(c)
else:
    if b > c:
        print(b)
    else:
        print(c)




1) 순차 구조
2) 반복 구조
3) 선택 구조
4) 예외 처리 구조

정답: 3
해설: 주어진 코드는 A, B, C 중 가장 큰 수를 출력하기 위해 if, elif, else 명령어를 사용한 선택 구조를 사용하고 있다.

 


32. 다음 코드의 실행 결과로 옳지 않은 것은?

# A, B, C 사용자 입력
a = int(input("A: "))
b = int(input("B: "))
c = int(input("C: "))

# A, B, C 중 가장 큰 수 출력
if a > b:
    if b > c:
        print(a)
    else:
        if a > c:
            print(a)
        else:
            print(c)
else:
    if b > c:
        print(b)
    else:
        print(c)



1) A: 5, B: 3, C: 2 -> 출력: 5
2) A: 2, B: 4, C: 6 -> 출력: 6
3) A: 3, B: 7, C: 5 -> 출력: 7
4) A: 9, B: 9, C: 1 -> 출력: 1

정답: 4
해설: 코드에서 A, B, C의 값을 입력받아 가장 큰 수를 출력한다. A가 9, B가 9, C가 1일 때 가장 큰 수는 9이므로 출력은 1이 아니라 9가 되어야 한다. 



33. 다음 중 주어진 코드에서 사용된 데이터 타입 변환 함수는?

# 반지름 사용자 입력
rad = int(input("반지름을 입력하세요:"))
# 높이 사용자 입력
hei = int(input("높이를 입력하세요:"))



1) str
2) float
3) int
4) bool

정답: 3
해설: 주어진 코드에서 input 함수로 입력받은 값을 int 함수로 정수형 데이터 타입으로 변환하고 있다.

 

 

34. 다음 코드에서 빈칸에 들어갈 올바른 연산자는?

 

a = int(input("A: "))
b = int(input("B: "))
c = int(input("C: "))

# A, B, C 중 가장 큰 수 출력
if a _____ b:
    if b _____ c:
        print(a)
    else:
        if a _____ c:
            print(a)
        else:
            print(c)
else:
    if b _____ c:
        print(b)
    else:
        print(c)




1) >=
2) ==
3) <
4) >

정답: 4

해설: 주어진 코드에서 가장 큰 수를 찾기 위해 비교 연산자로 `>`를 사용한다. 다른 연산자인 `>=`, `==`, `<`는 각각 크거나 같음, 같음, 작음을 비교할 때 사용된다.

 


35. 다음 코드의 빈칸에 들어갈 적절한 변수는?

a = int(input("A: "))
b = int(input("B: "))
c = int(input("C: "))

# A, B, C 중 가장 큰 수 출력
if a > b:
    if b > c:
        print(_____)
    else:
        if a > c:
            print(_____)
        else:
            print(c)
else:
    if b > c:
        print(_____)
    else:
        print(c)


1) a
2) b
3) c
4) d

정답: 1

해설: 주어진 코드에서 가장 큰 수를 출력하는 부분에서는 `a`, `b`, `c` 변수를 사용하여 비교한다. 따라서 빈칸에 들어갈 변수는 `a`가 된다.

 

 

 


36. 다음 코드에서 틀린 부분을 찾아 수정하세요.

 

a = int(input("A: "))
b = int(input("B: "))
c = int(input("C: "))

# A, B, C 중 가장 큰 수 출력
if a > b:
    if b > c:
        print(a)
    else:
        if a > c:
            print(b)
        else:
            print(c)
else:
    if b > c:
        print(b)
    else:
        print(a)



1) `if a > b:`는 `if a < b:`로 수정해야 한다.
2) 첫번째 `print(a)`는 `print(b)`로 수정해야 한다.
3) `if b > c:`는 `if b < c:`로 수정해야 한다.
4) 두번째 `print(b)`는 `print(a)`로 수정해야 한다.

정답: 4

해설: 코드에서 `else` 블록 안에 있는 `print(a)` 부분이 틀렸다. A, B, C 중 가장 큰 수를 출력하려면 마지막 줄의 `print(a)`를 `print(c)`로 수정해야 한다.

 

 

 

 

37. 다음 중 조건 제어 반복 구조에 해당하는 것은?

1) for 문
2) while 문
3) 리스트
4) 인덱스 연산자

정답: 2

해설: 조건 제어 반복 구조는 조건이 참(True)인 동안 반복문을 실행하는 구조로, 파이썬에서 while 문이 이에 해당한다. for 문은 계수 제어 반복 구조로, 시퀀스의 첫 번째 요소부터 마지막 요소까지 반복한다. 리스트는 시퀀스 데이터 타입의 일종이며, 인덱스 연산자는 시퀀스 타입의 원소에 접근하는 연산자이다.

 


38. 다음 중 파이썬에서 계수 제어 반복 구조에 해당하는 것은?

1) while 문
2) if 문
3) for 문
4) break 문

정답: 3

해설: 계수 제어 반복 구조는 특정 계수만큼 반복 횟수가 정해진 반복 구조로, 파이썬에서 for 문이 이에 해당한다. while 문은 조건 제어 반복 구조이고, if 문은 조건문이며, break 문은 반복문을 중단하는 데 사용된다.

39. 다음 중 중첩 반복 구조에 대한 설명으로 옳은 것은?

1) 반복 구조 내에 다른 반복 구조를 포함하지 않는 구조이다.

2) 조건이 참일 때만 반복되는 구조이다.

3) 하나의 외부 반복 구조에 여러 개의 내부 반복 구조가 중첩되어 사용되는 구조이다.

4) 특정 계수만큼 반복되는 구조이다.

정답: 3

해설: 중첩 반복 구조는 하나의 외부 반복 구조에 여러 개의 내부 반복 구조가 중첩되어 사용되는 구조를 말하며, 외부 반복 구조가 매 반복될 때마다 내부 반복 구조에 재진입하여 새롭게 실행된다.

40. 다음 중 for 문의 기능에 대한 설명으로 옳은 것은?

1) 조건이 참인 동안 반복문을 수행한다.

2) 시퀀스의 첫 번째 요소부터 마지막 요소까지 하나씩 변수에 대입하여 블록의 명령문을 수행한다.

3) 반복문을 즉시 종료하고 다음 명령문으로 넘어간다.

4) 블록 내부의 명령문을 한 번만 실행한다.

정답: 2

해설: for 문은 시퀀스의 첫 번째 요소부터 마지막 요소까지 하나씩 변수에 대입하여 블록의 명령문을 수행하며, 마지막 요소까지 수행한 후 종료하는 계수 제어 반복 구조이다. 조건이 참인 동안 반복문을 수행하는 것은 while 문이다. 반복문을 즉시 종료하는 것은 break 문이며, 블록 내부의 명령문을 한 번만 실행하는 것은 반복 구조에 해당하지 않는다.

41. 다음 중 파이썬에서 리스트에 대한 설명으로 옳은 것은?

1) 리스트는 순서화되지 않은 값의 집합체를 저장할 수 있는 데이터 타입이다.

2) 리스트는 고정된 크기를 가지며, 요소를 추가하거나 삭제할 수 없다.

3) 리스트는 순서화된 값의 집합체를 저장할 수 있는 시퀀스 데이터 타입의 일종이다.

4) 리스트는 반복문에서 사용할 수 없다.

정답: 3

해설: 리스트는 순서화된 값의 집합체를 저장할 수 있는 시퀀스 데이터 타입의 일종이다. 리스트는 가변적이며, 요소를 추가하거나 삭제할 수 있다. 또한, 리스트는 for 문과 같은 반복문에서 사용할 수 있다.

 

 

 

 

 

42. 다음 중 구구단 출력 문제에서 올바르게 구구단을 출력하는 코드는?

1) 

base = int(input("출력할 단을 입력하세요: "))
for i in range(1, 10):
    print(base * i)



2) 

base = int(input("출력할 단을 입력하세요: "))
for i in range(1, 10):
    print(base + i)



3) 

base = int(input("출력할 단을 입력하세요: "))
for i in range(1, 10):
    print(i * i)



4) 

base = int(input("출력할 단을 입력하세요: "))
for i in range(1, 10):
    print(base, "*", i, "=", base * i)



정답: 4
해설: 구구단을 출력하려면 사용자가 입력한 단(base)와 1부터 9까지의 숫자를 곱한 결과를 출력해야 한다. 4번 코드가 이를 올바르게 수행한다.

 



43. 다음 중 구구단 표를 출력하는 코드에서 누락된 부분을 채우세요.

print(format("구구단표",">20s"))

# 표 머리 출력
print("  |", end = "")
for j in range(1, 10):
    print("  ", j, end = "")
# 새로운 행 삽입
print() 
print("-----------------------------------------")

# 구구단 표 출력 
for i in range(1, 10):
    print(i, "|", end=" ")
    for j in range(1, 10):
        print(i * j, end="   ")
    print()



1) for i in range(1, 10):
2) for i in range(10):
3) for i in range(0, 9):
4) for i in range(1, 9):

정답: 1

해설: 구구단 표를 출력하려면 1부터 9까지의 범위를 반복하는 것이 맞다. 1번 선택지가 이를 올바르게 구현한다. 2번과 3번 선택지는 0부터 시작하거나 10을 포함하는 범위로 부적절하며, 4번 선택지는 9를 포함하지 않아 부적절하다.

 


44. 다음 중 파이썬 코드에서 while 문을 사용하여 1부터 10까지의 합을 구하는 코드는?

1)

sum = 0
i = 1
while i <= 10:
    sum += i
    i += 1
print(sum)



2)

sum = 0
i = 1
while i < 10:
    sum += i
    i += 1
print(sum)



3)

sum = 0
i = 1
while i <= 10:
    sum = sum + i
    i = i + 2
print(sum)



4)

sum = 0
i = 1
while i <= 10:
    sum += i
    i += 1
print(i)



정답: 1

해설: 1번 코드는 1부터 10까지의 합을 구하는 올바른 코드이다. 2번 코드는 10을 포함하지 않아서 틀리다. 3번 코드는 i를 2씩 증가시키므로 합이 잘못 계산된다. 4번 코드는 sum이 아니라 i를 출력하므로 틀리다.

 

 

 

45. 다음 중 파이썬에서 동시 할당에 대한 설명으로 옳은 것은?

1) 두 개의 변수를 한 번에 삭제하는 연산이다.
2) 복수의 변수에 값을 동시에 할당하는 연산이다.
3) 함수 내에서 변수 값을 변경할 수 없도록 하는 연산이다.
4) 함수의 매개변수에 기본값을 할당하는 연산이다.

정답: 2

해설: 동시 할당은 파이썬에서 복수의 변수에 값을 동시에 할당하는 연산이다. 예를 들어, `a, b = 1, 2`와 같이 한 줄의 명령문으로 여러 변수에 값을 할당할 수 있다.

 


46. 다음 중 파이썬 함수의 스코프에 대한 설명으로 옳은 것은?

1) 모든 변수는 전역변수로 선언된다.
2) 함수 내부에서 선언된 변수는 지역변수로서 함수 외부에서는 참조할 수 없다.
3) 함수 외부에서 선언된 변수는 지역변수로서 함수 내부에서 참조할 수 있다.
4) 변수의 스코프는 함수의 호출 횟수에 의해 결정된다.

정답: 2

해설: 함수 내부에서 선언된 변수는 지역변수로서 함수 외부에서는 참조할 수 없다. 반면, 함수 외부에서 선언된 변수는 전역변수로서 함수 내부에서 참조할 수 있다. 변수의 스코프는 함수의 호출 횟수와는 무관하다.

 



47. 다음 중 기본 매개변수에 대한 설명으로 옳은 것은?

1) 함수 호출 시 반드시 값을 전달해야 하는 매개변수이다.
2) 함수 호출 시 매개변수가 전달되지 않을 경우 기본값이 전달되는 매개변수이다.
3) 함수 호출 시 값의 개수에 제한이 없는 매개변수이다.
4) 함수 내부에서만 사용 가능한 매개변수이다.

정답: 2

해설: 기본 매개변수는 함수 호출 시 매개변수가 전달되지 않을 경우 기본값이 전달되는 매개변수이다. 이를 통해 함수 호출 시 일부 매개변수를 생략할 수 있다.

 



48. 다음 중 가변 매개변수에 대한 설명으로 옳은 것은?

1) 함수 호출 시 매개변수를 생략할 수 없는 매개변수이다.
2) 함수 내부에서 변수를 선언할 때 사용하는 매개변수이다.
3) 함수 호출 시 매개변수를 사용자가 원하는 개수만큼 지정할 수 있는 매개변수이다.
4) 함수의 반환값을 지정하는 매개변수이다.

정답: 3

해설: 가변 매개변수는 함수 호출 시 매개변수를 사용자가 원하는 개수만큼 지정할 수 있는 매개변수이다. 함수 정의 시 매개변수 이름 앞에 `*`를 사용하여 정의한다. 예를 들어, `def func(*args):`와 같이 사용한다.

 



49. 다음 중 반환값이 있는 함수에 대한 설명으로 옳은 것은?

1) 함수 내부에서 `return` 명령어를 사용하여 값을 반환한다.
2) 함수가 실행되면 항상 `None`을 반환한다.
3) 함수 내부에서 선언된 변수의 값을 자동으로 반환한다.
4) 함수가 종료될 때까지 값을 반환하지 않는다.

정답: 1

해설: 반환값이 있는 함수는 함수 내부에서 `return` 명령어를 사용하여 값을 반환한다. 이를 통해 함수 호출 결과를 함수 외부로 전달할 수 있다. 반환값이 없는 함수는 `return` 명령어를 사용하지 않으며, 기본적으로 `None`을 반환한다.

 

 

 

50. 다음은 원뿔의 부피를 계산하는 함수이다. 주어진 조건을 만족하도록 코드를 작성하세요. 조건: 반지름과 높이가 양수일 때 부피를 계산하여 출력하고, 그렇지 않으면 경고 메시지를 출력해야 합니다.

if rad > 0 and hei > 0 :
    # r, h 모두 양수일 때
    vol = 1/3 * 3.14 * rad ** 2 * hei
    print("원뿔의 부피는", vol, "입니다.")
else :
  # r, h가 음수일 때
  print("반지름과 높이 값에 양수를 입력하세요")



1) rad = 3, hei = 5일 때
2) rad = -3, hei = 5일 때
3) rad = 3, hei = -5일 때
4) rad = 0, hei = 5일 때

정답: 1

해설: 주어진 조건에 따라 함수는 반지름과 높이가 양수일 때 부피를 계산하고, 그렇지 않을 경우 경고 메시지를 출력해야 한다. 따라서 rad = 3, hei = 5일 때만 부피를 출력하게 된다.



51. 다음은 원뿔의 부피와 겉넓이를 계산하여 반환하는 함수입니다. 올바른 반환값을 선택하세요.

def prt_cone_vol_surf(r, h) :
    if r > 0 and h > 0 :
        # r, h 모두 양수일 때
        vol = 1/3 * 3.14 * r ** 2 * h
        suf = 3.14 * r ** 2 + 3.14 * r * h
        return vol, suf
    else :
        # r, h가 음수일 때
        return None, None



1) prt_cone_vol_surf(3, 5) -> (47.1, 75.36)
2) prt_cone_vol_surf(-3, 5) -> (47.1, 75.36)
3) prt_cone_vol_surf(3, -5) -> (47.1, 75.36)
4) prt_cone_vol_surf(3, 0) -> (47.1, 75.36)

정답: 1

해설: 반지름과 높이가 모두 양수일 때만 올바른 부피와 겉넓이를 계산하여 반환한다. 따라서 prt_cone_vol_surf(3, 5) -> (47.1, 75.36)이다.

 

 

 

 

52. 다음 중 주어진 숫자를 역순으로 출력하는 함수 `reverse_number`의 코드에서 빈칸에 들어갈 알맞은 내용은?

def reverse_number(num):
    while num > 0:
        빈칸
        num = num // 10
        print(digit, end="")

num = int(input("숫자? "))
reverse_number(num)



1) digit = num // 10
2) digit = num * 10
3) digit = num % 100
4) digit = num % 10

정답: 4

해설: 주어진 숫자를 역순으로 출력하기 위해서는 `digit = num % 10`을 사용하여 숫자의 가장 오른쪽 자릿수를 추출해야 한다.

 


53. 다음 코드에서 원뿔의 부피를 계산하고 올바르게 반환하는 함수 `rtn_cone_vol`의 빈칸에 들어갈 알맞은 내용은?

def rtn_cone_vol(rad, hei):
  if rad > 0 and hei > 0 :
      vol = 1/3 * 3.14 * rad ** 2 * hei
      빈칸
  else :
    print("반지름과 높이 값에 양수를 입력하세요")

print(format(rtn_cone_vol(10, 20), "20.3f"), "입니다.")



1) return rad
2) return hei
3) return vol
4) return 0

정답: 3

해설: 원뿔의 부피를 계산한 후 이를 반환하기 위해서는 `return vol`을 사용해야 한다.

 


54. 다음 코드는 원뿔의 부피와 겉넓이를 계산하는 함수이다. 이 코드에서 틀린 부분을 찾고 수정하시오.

def rtn_cone_vol_surf(r = 20, h = 30) :
    if r > 0 and h > 0 :
        vol = 1/3 * 3.14 * r ** 2 * h
        suf = 3.14 * r ** 2 + 3.14 * r * h
        return vol, surf
    else :
        print("반지름과 높이 값에 양수를 입력하세요")

print(rtn_cone_vol_surf(10, 20))
print(rtn_cone_vol_surf())



1) 함수 이름을 변경해야 한다.
2) `surf`를 `suf`로 변경해야 한다.
3) `suf`를 `surf`로 변경해야 한다.
4) `vol`을 `volu`로 변경해야 한다.

정답: 3

해설: 함수 내부에서 계산된 변수 이름과 반환하는 변수 이름이 일치해야 한다. 따라서 `suf`를 `surf`로 변경해야 한다.

 


55. 다음 코드에서 세 개의 숫자를 오름차순으로 정렬하는 함수 `sort3`의 출력 결과가 올바르지 않은 이유는 무엇인가?

 

a = int(input("첫번째 숫자를 입력하세요: "))
b = int(input("두번째 숫자를 입력하세요: "))
c = int(input("세번째 숫자를 입력하세요: "))

def sort3(a, b, c):
    if a > b:
        a, b = b, a
    if a > c:
        a, c = c, a
    if b > c:
        b, c = c, b
    
    print(a, b, c)

sort3(a, b, c)
print("출력이후", a, b, c)



1) sort3 함수에서 변수 값을 교환하지 않기 때문이다.
2) sort3 함수는 변수 값을 반환하지 않기 때문이다.
3) sort3 함수에서 매개변수를 사용하지 않기 때문이다.
4) sort3 함수에서 변수를 정렬하지 않기 때문이다.

정답: 2

해설: sort3 함수는 변수 값을 교환한 후 반환하지 않기 때문에 함수 호출 후 변수 값이 변경되지 않는다. 함수를 수정하여 정렬된 값을 반환하거나 외부 변수를 직접 수정해야 한다.

 



56. 다음 중 가변 매개변수를 사용하여 여러 개의 수의 합과 평균을 계산하는 함수 var_sum_avg의 코드를 올바르게 작성한 것은?

def var_sum_avg(*numbers):
    sum, count = 0, 0
    for i in numbers:
        sum = sum + i
        count = count + 1
    return sum, sum/count

print(var_sum_avg(20, 25, 10, 85, 100, 150))



1) 함수 정의 시 매개변수 이름 앞에 `*`를 사용하지 않도록 수정해야 한다.
2) 합과 평균을 계산한 후 이를 출력해야 한다.
3) 함수 내부에서 매개변수 개수를 제한해야 한다.
4) 코드가 올바르게 작성되었으며 수정할 필요가 없다.

정답: 4

해설: 가변 매개변수를 사용하여 여러 개의 수의 합과 평균을 계산하는 함수 var_sum_avg의 코드는 올바르게 작성되었으며 수정할 필요가 없다.

 

 

 

 

57. 다음 중 객체지향 프로그래밍 패러다임의 특징으로 옳지 않은 것은?

1) 추상화
2) 캡슐화
3) 상속
4) 선형성

정답: 4

해설: 객체지향 프로그래밍 패러다임의 주요 특징에는 추상화, 캡슐화, 상속, 다형성이 있다. 선형성은 객체지향 프로그래밍의 특징이 아니다.

 



58. 다음 중 파이썬 클래스의 초기자 메소드의 역할로 옳은 것은?

1) 객체의 데이터 필드를 출력한다.
2) 객체의 상태를 초기화한다.
3) 객체의 메소드를 호출한다.
4) 객체의 멤버 접근 연산자를 정의한다.

정답: 2

해설: 초기자 메소드는 객체의 상태를 초기화하는 특수 메소드로, 파이썬에서는 `__init__` 메소드가 이에 해당한다. 이 메소드는 객체가 생성될 때 자동으로 호출되어 객체의 초기 상태를 설정한다.



59. 다음 중 파이썬에서 클래스의 인스턴스를 생성하는 방법으로 옳은 것은?

1) instance = 클래스이름()
2) instance = 클래스이름.init()
3) instance = 클래스이름.__init__()
4) instance = 클래스이름.new()

정답: 1

해설: 파이썬에서 클래스의 인스턴스를 생성하려면 클래스 이름 뒤에 괄호를 붙여서 호출한다. 예를 들어, `instance = 클래스이름()` 형태로 작성한다.



60. 파이썬 클래스에서 모든 메소드의 첫 번째 매개변수로 사용되는 것은?

1) this
2) self
3) cls
4) obj

정답: 2

해설: 파이썬 클래스의 모든 메소드는 첫 번째 매개변수로 `self`를 사용한다. `self`는 인스턴스 객체를 가리키며, 이를 통해 객체의 데이터 필드와 메소드에 접근할 수 있다.



61. 파이썬에서 객체의 데이터 필드 접근 및 메소드 호출에 사용하는 연산자는?

1) ::
2) ->
3) .
4) :

정답: 3

해설: 파이썬에서 객체의 데이터 필드 접근 및 메소드 호출에는 점(.) 연산자를 사용한다. 예를 들어, `object.field`나 `object.method()` 형태로 사용한다.

 



62. 다음 중 데이터 은닉을 통해 객체의 데이터 필드에 직접 접근을 방지하는 방법으로 옳은 것은?

1) 데이터 필드 앞에 밑줄 한 개(_)를 붙인다.
2) 데이터 필드 앞에 밑줄 두 개(__)를 붙인다.
3) 데이터 필드 이름을 대문자로 작성한다.
4) 데이터 필드를 전역 변수로 선언한다.

정답: 2

해설: 데이터 은닉을 위해 객체의 데이터 필드 앞에 밑줄 두 개(__)를 붙인다. 이렇게 하면 해당 필드는 클래스 내부에서만 접근 가능하게 되어 외부에서 직접 접근을 방지할 수 있다.

 



63. 파이썬에서 private 데이터 필드에 접근하기 위해 정의해야 하는 메소드는?

1) 접근자와 변경자 메소드
2) 초기자와 생성자 메소드
3) 출력자와 설정자 메소드
4) 연산자와 변환자 메소드

정답: 1

해설: private 데이터 필드에 접근하기 위해 접근자(getter)와 변경자(setter) 메소드를 정의해야 한다. 접근자는 필드의 값을 반환하고, 변경자는 필드의 값을 변경하는 역할을 한다.

 

 


64. 다음은 원뿔 클래스를 작성하는 코드이다. 빈칸에 알맞은 코드를 작성하시오.

class Cone:
    def __init__(self, radius=20, height=30):
        self.r = radius
        self.h = height

    def get_vol(self):
        return 1/3 * 3.14 * self.r ** 2 * self.h
    
    def get_surf(self):
        return 빈칸

myCone = Cone(100, 20)
print(myCone.get_surf())



1) 3.14 * self.r ** 2 + 3.14 * self.r * self.h
2) 1/3 * 3.14 * self.r ** 2 * self.h
3) Cone(100, 20)
4) print(myCone.get_surf())

정답: 1

해설: get_surf 메소드는 원뿔의 겉넓이를 계산하는 함수로, 3.14 * self.r ** 2 + 3.14 * self.r * self.h를 사용하여 계산한다.


65. 다음 코드는 BMI 클래스를 정의하고 BMI 객체를 생성하는 예제이다. 잘못된 부분을 찾아 올바르게 고치시오.

class BMI:
    def __init__(self, name, age, weight, height):
        self.name = name
        self.age = age
        self.weight = weight
        self.height = height

    def get_BMI(self):
        return self.weight / (self.height / 100) ** 2
    
    def get_status(self):
        BMI = self.get_BMI()
        if BMI >= 25:
            return '비만'
        elif BMI >= 23 and BMI < 25:
            return '과체중'
        elif BMI >= 18.5 and BMI < 23:
            return '정상'
        else:
            return '저체중'

person1 = BMI("홍길동", 40, 78, 182)
print(person1.name + "님(" + str(person1.age) + "세)의 BMI 수치는", person1.get_BMI(), "결과는", person1.get_status(), "입니다.")



1) self.name = name 부분을 self.__name = name으로 수정한다.
2) return self.weight / (self.height / 100) ** 2 부분을 return self.__weight / (self.__height / 100) ** 2로 수정한다.
3) if BMI >= 25: 부분을 if BMI < 25:로 수정한다.
4) print(person1.name + "님(" + str(person1.age) + "세)의 BMI 수치는", person1.get_BMI(), "결과는", person1.get_status(), "입니다.") 부분을 print(person1.__name + "님(" + str(person1.__age) + "세)의 BMI 수치는", person1.get_BMI(), "결과는", person1.get_status(), "입니다.")로 수정한다.

정답: 2

해설: self.weight와 self.height는 private 변수이므로, self.__weight와 self.__height로 수정해야 한다.

 




66. 다음 코드는 멤버 __r과 __h에 대한 접근자와 변경자를 갖는 원뿔 클래스를 작성하고 있다. 코드의 빈칸에 들어갈 알맞은 내용을 고르시오.

 

class pCone:
    def __init__(self, radius=20, height=30):
        if radius > 0 and height > 0:
            빈칸 = radius
            빈칸 = height

    def get_vol(self):
        return 1/3 * 3.14 * self.__r ** 2 * self.__h
    
    def get_surf(self):
        return 3.14 * self.__r ** 2 + 3.14 * self.__r * self.__h
    
    def get_radius(self):
        return self.__r
    
    def set_radius(self, radius):
        if radius > 0:
            self.__r = radius
    
perfect_cone = pCone(100, 20)
perfect_cone.__r = -50
print(perfect_cone.get_surf())
perfect_cone._pCone__r = -50
print(perfect_cone.get_surf())



1) self.__r와 self.__h
2) 1/3 * 3.14 * self.__r ** 2 * self.__h
3) self.__r = radius
4) perfect_cone._pCone__r = -50

정답: 1

해설: 멤버 __r과 __h에 접근하고자 할 때 self.__r와 self.__h를 사용해야 한다.

 

 

67. 다음 중 파이썬의 모듈에 대한 설명으로 옳은 것은?

1) 모듈은 함수와 변수를 모아 놓은 집합체이다.
2) 모듈은 함수, 상수 또는 클래스를 모아 놓은 집합체이다.
3) 모듈은 파이썬의 기본 내장 함수들을 모아 놓은 집합체이다.
4) 모듈은 변수와 객체를 모아 놓은 집합체이다.

정답: 2

해설: 모듈은 함수, 상수 또는 클래스를 모아 놓은 집합체이다. 모듈은 특정 기능을 수행하는 코드의 모음으로, 코드의 재사용성을 높이고 유지보수를 용이하게 한다.

 



68. 파이썬에서 모듈을 등록할 때 사용하는 구문이 아닌 것은?

1) import 구문
2) from import 구문
3) include 구문
4) as 구문

정답: 3

해설: 파이썬에서 모듈을 등록할 때 사용하는 구문은 import 구문과 from import 구문이다. as 구문은 모듈에 별칭을 부여할 때 사용한다. include 구문은 파이썬이 아닌 다른 프로그래밍 언어(C/C++)에서 사용된다.

 


69. 특정 모듈의 모든 이름을 리스트로 반환하는 함수는 무엇인가?

1) help 함수
2) list 함수
3) dir 함수
4) get 함수

정답: 3

해설: dir 함수는 네임스페이스에 등록되어 있는 모든 이름을 리스트로 반환한다. help 함수는 대화형 도움말 시스템을 호출하거나 클래스나 메소드의 사용 방법을 반환한다.



70. 파이썬에서 네임스페이스에 대한 설명으로 옳은 것은?

1) 네임스페이스는 특정 객체를 이름에 따라 구분할 수 있는 범위를 나타낸다.
2) 네임스페이스는 함수 내에서만 사용되는 변수들을 구분하는 범위를 나타낸다.
3) 네임스페이스는 오직 전역 변수들을 구분하는 범위이다.
4) 네임스페이스는 클래스 내에서만 사용되는 변수들을 구분하는 범위이다.

정답: 1

해설: 네임스페이스는 특정 객체를 이름에 따라 구분할 수 있는 범위를 나타낸다. 파이썬의 네임스페이스는 전역, 지역, 내장 네임스페이스로 구분된다.

 


71. 난수를 생성할 때 사용하는 파이썬 모듈은 무엇인가?

1) math
2) random
3) time
4) os

정답: 2

해설: random 모듈은 난수를 생성하는 기능을 제공하는 모듈이다. math 모듈은 수학적 계산을 위한 함수와 상수를 제공하며, time 모듈은 시간과 관련된 기능을 제공하고, os 모듈은 운영 체제와 상호작용하는 기능을 제공한다.

 

 

 

 

 

72. 다음 코드에서 빈칸에 들어갈 적절한 함수는 무엇인가?

import math
빈칸()    # modules in runtime
dir(math)
help(math.gamma)
help("python".upper)



1) help
2) import
3) dir
4) from

정답: 3

해설: dir() 함수는 현재 네임스페이스에 있는 모든 이름들을 리스트로 반환한다. 따라서, 빈칸에 들어갈 함수는 dir이다.

 

 



73. 다음 코드에서 로또 당첨 번호를 무작위로 생성하기 위해 빈칸에 들어갈 적절한 함수는 무엇인가?

import random

guess_str = input("1~45 번호 6개를 쉼표로 분리하여 입력하세요: ").split(", ")
guess_list = list()

for i in guess_str:
    guess_list.append(int(i))

lotto_list = 빈칸(range(1, 46, 1), 6)
print("예상 번호는", guess_list, "입니다.")
print("추첨 번호는", lotto_list, "입니다.")

hit_count = 0
for guess in guess_list:
    if guess in lotto_list:
        hit_count = hit_count + 1

print("축하합니다" + str(hit_count) + "개 맞혔습니다")


1) randint
2) choice
3) sample
4) uniform

정답: 3

해설: random.sample 함수는 주어진 범위에서 중복 없이 임의의 숫자를 추출할 때 사용된다. 따라서, 로또 번호를 무작위로 생성하기 위해 sample 함수를 사용한다.

 

 

 

74. 다음 소스 코드에서 빈칸에 들어갈 적절한 코드는 무엇인가?

 

import time

start_time = time.time()

def is_prime(x):
    for i in range(2, x):
        if x % i == 0:
            return False
        
    return True

prime_count = 0
for i in range(2, 1000):
    if is_prime(i):
        prime_count = prime_count + 1
        print(i, end=빈칸)
print()

end_time = time.time()
print(end_time - start_time, "초 실행했습니다.")



1) "\t"
2) ", "
3) ". "
4) "; "

정답: 2

해설: prime_count 값을 구할 때, 소수들을 쉼표로 구분하여 출력하기 위해 end=", "을 사용한다.

 



75. 다음 코드의 출력 결과로 옳은 것은?

print("Hello", "World", sep="-")

1) Hello-World
2) Hello World
3) Hello- World
4) Hello, World

정답: 1

해설: print 함수의 sep 인자는 여러 인수 사이에 삽입할 문자열을 지정하는데 사용된다. 여기서는 "Hello"와 "World" 사이에 하이픈이 삽입되어 "Hello-World"가 출력된다.



76. 다음 코드에서 빈칸에 들어갈 적절한 인자는 무엇인가?

words = ["apple", "banana", "cherry"]
print(*words, sep=빈칸)

1) " "
2) ", "
3) "\n"
4) "\t"

정답: 2

해설: print 함수의 sep 인자는 여러 인수 사이에 삽입할 문자열을 지정하는데 사용된다. 여기서는 리스트의 각 요소 사이에 쉼표와 공백을 추가하기 위해 sep=", "을 사용한다.



77. 다음 코드의 출력 결과로 옳은 것은?

for i in range(3):
    print(i, end=" ")

print("\nHello", "World", sep=", ")

1) 0 1 2 Hello World
2) 0 1 2, Hello, World
3) 0 1 2 Hello, World
4) 0 1 2, Hello World

정답: 3

해설: 첫 번째 print 문에서 각 숫자 뒤에 공백이 추가되어 "0 1 2 "가 출력되고, 두 번째 print 문에서 "Hello"와 "World" 사이에 쉼표와 공백이 추가되어 "Hello, World"가 출력된다.

 

 

 

78. 다음 코드를 실행할 때, 사용자가 1부터 1000 사이의 숫자를 맞히는 프로그램에서 빈칸에 들어갈 알맞은 값은 무엇인가?

 

import random

hit_number = random.randint(1, 빈칸)
#print(hit_number)

guess_count_list = range(1, 21, 1)

passfail = False
for guess_count in guess_count_list:
    guess = int(input("숫자를 맞혀보세요(" + str(guess_count) + "번째 시도): "))

    if hit_number == guess:
        passfail = True
        break
    elif hit_number > guess:
        print(str(guess) + "보다 큽니다")
    else:
        print(str(guess) + "보다 작습니다.")

if passfail == True:
    print("맞혔습니다. 축하합니다.")
else:
    print("모든 기회를 다 사용하셨습니다. 다음에 다시 도전하세요.")



1) 1000
2) 1001
3) 999
4) 1002

정답: 2

해설: random.randint(1, 1001)은 1부터 1000까지의 임의의 정수를 생성한다. 범위의 상한값인 1001은 포함되지 않으므로, 빈칸에는 1001이 들어가야 한다.

 

 

 

 

79. 다음 중 파이썬에서 파일 포인터에 대한 설명으로 옳은 것은?

1) 파일의 고유 식별자로 파일 경로를 포함하는 포인터이다.
2) 파일 내부에서 현재 작업 위치를 나타내는 포인터이다.
3) 파일의 끝(EoF)을 나타내는 포인터이다.
4) 파일을 삭제하는 포인터이다.

정답: 2

해설: 파일 포인터는 파일 내부에서 현재 작업 위치를 나타내는 포인터이다. 파일의 고유 식별자는 파일 이름이며, 파일의 끝(EoF)은 파일의 끝을 나타내는 특별한 위치를 의미하고, 파일을 삭제하는 포인터는 존재하지 않는다.

 



80. 파이썬에서 파일을 처리하는 순서로 옳은 것은?

1) 파일 객체 생성 -> 읽기/쓰기/추가하기 작업 -> 파일 객체 삭제
2) 파일 객체 생성 -> 파일 객체 삭제 -> 읽기/쓰기/추가하기 작업
3) 읽기/쓰기/추가하기 작업 -> 파일 객체 생성 -> 파일 객체 삭제
4) 파일 객체 삭제 -> 파일 객체 생성 -> 읽기/쓰기/추가하기 작업

정답: 1

해설: 파일을 처리하는 올바른 순서는 먼저 파일 객체를 생성하고, 그 다음으로 읽기, 쓰기, 추가하기 작업을 수행한 후, 마지막으로 파일 객체를 삭제하는 것이다.

 


81. 파이썬에서 텍스트 파일과 바이너리 파일의 차이에 대한 설명으로 옳지 않은 것은?

1) 텍스트 파일은 사람이 읽을 수 있는 형식으로 데이터를 저장한다.
2) 바이너리 파일은 특정 형식의 데이터(예: 이미지, 비디오)를 저장한다.
3) 텍스트 파일은 연속된 바이트로 구성되어 있다.
4) 바이너리 파일은 텍스트 파일보다 크기가 항상 크다.

정답: 4

해설: 텍스트 파일은 사람이 읽을 수 있는 형식으로 데이터를 저장하고, 바이너리 파일은 특정 형식의 데이터(예: 이미지, 비디오)를 저장한다. 텍스트 파일과 바이너리 파일 모두 연속된 바이트로 구성되어 있다. 그러나 파일 크기는 저장된 데이터의 종류와 양에 따라 달라지므로, 바이너리 파일이 텍스트 파일보다 항상 크다고 할 수는 없다.

 



82. 파이썬에서 딕셔너리에 대한 설명으로 옳은 것은?

1) 딕셔너리는 순서가 있는 시퀀스이다.
2) 딕셔너리는 키와 값의 쌍으로 데이터를 저장한다.
3) 딕셔너리는 인덱스를 사용하여 값을 접근한다.
4) 딕셔너리는 중복된 키를 허용한다.

정답: 2

해설: 딕셔너리는 키와 값의 쌍으로 데이터를 저장하는 시퀀스이다. 딕셔너리는 순서가 없는 컬렉션이며, 인덱스 대신 키를 사용하여 값을 접근한다. 딕셔너리는 중복된 키를 허용하지 않는다.

 



83. 파이썬에서 파일을 읽기 위한 함수로 옳지 않은 것은?

1) open()
2) read()
3) readline()
4) write()

정답: 4

해설: 파일을 읽기 위한 함수로는 open(), read(), readline() 등이 있다. write() 함수는 파일에 데이터를 쓰기 위한 함수로, 파일 읽기와는 관련이 없다.

 

 

 

84. 다음 코드에서 파일 "Khan.txt"를 읽기 위해 사용하는 함수로 올바른 것은?

1) khan_fp = open("Khan.txt", "a")
2) khan_fp = open("Khan.txt", "w")
3) khan_fp = open("Khan.txt", "r")
4) khan_fp = open("Khan.txt", "rw")

정답: 3

해설: 파일을 읽기 모드로 열기 위해서는 "r" 모드를 사용해야 한다. "a"는 추가 모드, "w"는 쓰기 모드, "rw"는 파이썬에서 사용하지 않는 모드이다.

 




85. 다음 코드에서 파일 "Khan.txt"에 새로운 내용을 추가하기 위해 사용하는 함수로 올바른 것은?

1) khan_fp.write("\n")
2) khan_fp.write("\t")
3) khan_fp.write("\a")
4) khan_fp.write("\b")

정답: 1

해설: "\n"은 새 줄을 추가하는 문자열이다. "\t"는 탭, "\a"는 벨소리, "\b"는 백스페이스를 나타낸다.

 



86. 다음 코드에서 단어의 출현 횟수를 세기 위한 딕셔너리를 초기화하는 올바른 방법은?

1) word_dict = list()
2) word_dict = set()
3) word_dict = dict()
4) word_dict = tuple()

정답: 3

해설: 단어와 출현 횟수를 키-값 쌍으로 저장하기 위해 딕셔너리를 사용해야 한다. list, set, tuple은 순서가 있는 시퀀스이며, 키-값 쌍을 저장할 수 없다.

 



87. 다음 코드에서 단어를 처리하여 소문자로 변환하고 구두점을 제거하는 올바른 방법은?

1) word = word.strip(" .,;?[]\"\':-!").lower()
2) word = word.upper().strip(" .,;?[]\"\':-!")
3) word = word.lower().replace(" .,;?[]\"\':-!")
4) word = word.strip().replace(" .,;?[]\"\':-!")

정답: 1해설: 단어를 소문자로 변환하고, 지정된 구두점을 제거하기 위해서는 `word.strip(" .,;?[]\"\':-!").lower()`를 사용해야 한다. upper()는 대문자로 변환하고, replace()는 지정된 문자를 다른 문자로 대체한다.

 



88. 다음 코드에서 파일을 읽고 닫기 위한 올바른 순서는?

1) h_fp.close()
   h_fp = open("Hamlet_by_Shakespeare.txt", "r")

2) h_fp = open("Hamlet_by_Shakespeare.txt", "r")
   h_fp.close()

3) h_fp = open("Hamlet_by_Shakespeare.txt", "w")
   h_fp.close()

4) h_fp.close()
   h_fp = open("Hamlet_by_Shakespeare.txt", "w")

정답: 2

해설: 파일을 먼저 열고(read 모드로), 파일에서 작업을 수행한 후 파일을 닫아야 한다. 다른 옵션들은 파일을 잘못된 순서로 열고 닫고 있다.

 

89. 다음 코드를 실행할 때 텍스트 파일에서 단어의 출현 횟수를 세기 위해 사용된 변수를 빈칸에 채우시오.


h_fp = open("Hamlet_by_Shakespeare.txt", "r")

word_dict = dict()

for line in h_fp.readlines():
    for word in line.strip().split():
        word = word.strip(" .,;?[]\"':-!").lower()
        
        if word_dict.get(word) is not None:
            count = word_dict[word]
        else:
            count = 0
        word_dict[word] = count + 1

for key in word_dict:
    print("[" + key + "]", str(word_dict[빈칸]) + "회")

h_fp.close()



정답: key

해설: word_dict의 각 키(key)에 대해 출현 횟수를 출력하기 위해서는 word_dict[key]를 사용해야 한다.


90. 다음 파이썬 코드에서 빈칸에 들어갈 알맞은 코드를 채우세요.


h_fp = open("Hamlet_by_Shakespeare.txt", "r")

word_dict = dict()

for line in h_fp.readlines():
    for word in line.strip().split():
        word = 빈칸.lower()
        
        if word_dict.get(word) is not None:
            count = word_dict[word]
        else:
            count = 0
        word_dict[word] = count + 1

for key in word_dict:
    print("[" + key + "]", str(word_dict[key]) + "회")

h_fp.close()



빈칸에 들어갈 알맞은 코드는 무엇인가?

1) word.strip(" .,;?[]\\\"':-!")
2) word.strip(" .,;?[]\"':-!").upper()
3) word.lower()
4) word.upper()

정답: 1

해설: 코드는 텍스트 파일을 읽어 각 단어의 빈도수를 계산하는 프로그램이다. 단어를 처리할 때 구두점과 특수문자를 제거하기 위해 `word.strip(" .,;?[]\"':-!")`을 사용한다. 따라서 빈칸에 들어갈 알맞은 코드는 1번이다.

 

 


91. 소프트웨어 개발 라이프 사이클의 주요 단계를 올바른 순서로 나열한 것은?

1) 설계, 계획, 분석, 구현, 테스트, 유지보수
2) 계획, 분석, 설계, 구현, 테스트, 유지보수
3) 분석, 계획, 설계, 구현, 테스트, 유지보수
4) 계획, 설계, 분석, 구현, 유지보수, 테스트

정답: 2

해설: 소프트웨어 개발 라이프 사이클은 계획, 분석, 설계, 구현, 테스트, 유지보수의 순으로 진행된다. 이 순서에 따라 체계적으로 진행해야 고품질의 소프트웨어를 개발할 수 있다.


92. 다음 중 배치 프로세스에 대한 설명으로 옳은 것은?

1) 사용자가 실시간으로 입력하는 데이터를 처리하는 과정이다.
2) 대량의 데이터를 일괄 처리하는 과정이나 프로그램이다.
3) 프로그램 실행 중 발생하는 이벤트를 처리하는 과정이다.
4) 소프트웨어 개발 라이프 사이클의 초기 단계이다.

정답: 2

해설: 배치 프로세스는 일괄적으로 모아놓은 대량의 데이터를 특정 시간에 지정한 처리 방법에 따라 처리하는 과정이나 프로그램을 말한다. 실시간 데이터 처리나 이벤트 처리와는 다르다.


93. 이벤트 기반 프로그램의 예로 적합한 것은?

1) 데이터베이스 백업 프로그램
2) 텍스트 파일을 읽고 쓰는 프로그램
3) 사용자 입력에 반응하는 게임 프로그램
4) 이미지 파일을 일괄 변환하는 프로그램

정답: 3

해설: 이벤트 기반 프로그램은 프로그램에 의해 감지되고 처리될 수 있는 동작이나 사건을 처리하는 프로그램을 말한다. 게임 프로그램은 입력 장치나 타이머 등에서 발생하는 이벤트를 처리하는 전형적인 이벤트 기반 프로그램이다.


94. 틱택토 게임의 특징으로 옳지 않은 것은?

1) 2명의 플레이어가 참여한다.
2) 3x3 크기의 판을 사용한다.
3) O와 X를 사용하여 가로, 세로, 대각선의 일직선을 먼저 만드는 것이 목표이다.
4) 4x4 크기의 판을 사용한다.

정답: 4

해설: 틱택토 게임은 2명의 플레이어가 참여하며, 3x3 크기의 판을 사용하여 O와 X를 번갈아 가며 놓아 가로, 세로, 대각선의 일직선을 먼저 만드는 것이 목표이다. 4x4 크기의 판은 틱택토 게임의 규격이 아니다.

 

 

 

95. 다음 중 2차원 리스트에 대한 설명으로 옳지 않은 것은?

1) 2차원 리스트는 1차원 리스트의 리스트로 구성된다.
2) 2차원 리스트의 각 원소는 또 다른 1차원 리스트이다.
3) 2차원 리스트는 단일 인덱스만으로 접근할 수 있다.
4) 2차원 리스트의 순회는 이중 반복문을 사용하여 진행된다.

정답: 3

해설: 2차원 리스트는 행과 열의 두 가지 인덱스를 사용하여 접근한다. 단일 인덱스로는 2차원 리스트의 특정 원소에 접근할 수 없다.

 


96. 다음 코드에 대한 설명으로 옳은 것을 고르시오.

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

for row in matrix:
    for element in row:
        print(element, end=' ')



1) 이 코드는 2차원 리스트를 순회하여 각 원소를 출력한다.
2) 이 코드는 1차원 리스트를 순회하여 각 원소를 출력한다.
3) 이 코드는 리스트의 각 행을 출력한다.
4) 이 코드는 리스트의 각 열을 출력한다.

정답: 1

해설: 이 코드는 2차원 리스트의 각 원소를 순회하여 출력하는 코드로, 이중 반복문을 사용하여 행과 열을 모두 순회한다.

 



97. 2차원 리스트에 접근하기 위해 사용되는 인덱스의 조합으로 옳은 것은?

1) 리스트 이름과 단일 인덱스
2) 리스트 이름과 행 인덱스, 열 인덱스
3) 리스트 이름과 열 인덱스만
4) 리스트 이름과 인덱스 없이

정답: 2

 


98. 2차원 리스트의 특징에 관한 설명으로 옳지 않은 것은?

1) 2차원 리스트는 1차원 리스트의 행 인덱스와 내포된 1차원 리스트의 열 인덱스로 구성된다.
2) 2차원 리스트는 단일 식별자로 순서화된 값의 집합체를 저장할 수 있는 데이터 타입이다.
3) 2차원 리스트의 순회는 각 차원을 순차적으로 순회하기 위해 2개의 반복 구조가 중첩된 구조로 이루어진다.
4) 2차원 리스트는 항상 3x3 구조로 생성된다.

정답: 4

해설: 2차원 리스트는 1차원 리스트의 행 인덱스와 내포된 1차원 리스트의 열 인덱스로 구성되며, 단일 식별자로 순서화된 값의 집합체를 저장할 수 있는 데이터 타입이다. 2차원 리스트의 순회는 각 차원을 순차적으로 순회하기 위해 2개의 반복 구조가 중첩된 구조로 이루어지지만, 2차원 리스트는 반드시 3x3 구조로 생성될 필요는 없다.


99. 다음 코드에서 Tic_Tac_Toe 클래스의 기능에 대한 설명으로 옳은 것은?

1) create_board() 메소드는 게임판을 초기화하여 '*'로 채운다.
2) mark_spot() 메소드는 주어진 위치에 무작위로 'X' 또는 'O'를 표시한다.
3) is_win() 메소드는 게임판이 가득 찼는지 여부를 확인한다.
4) next_player() 메소드는 현재 플레이어를 동일하게 유지한다.

정답: 1

해설: create_board() 메소드는 게임판을 초기화하여 각 칸을 '*'로 채운다. mark_spot() 메소드는 주어진 위치에 특정 플레이어의 기호('X' 또는 'O')를 표시하며, is_win() 메소드는 특정 플레이어가 승리했는지 여부를 확인한다. next_player() 메소드는 현재 플레이어를 변경한다.



100. Tic_Tac_Toe 클래스에서 컴퓨터의 차례일 때, 컴퓨터가 선택할 위치를 결정하는 방법은?

1) 고정된 위치를 선택한다.
2) 사용자로부터 입력을 받는다.
3) 무작위로 빈칸을 선택한다.
4) 이전 게임에서 사용된 위치를 선택한다.

정답: 3

해설: Tic_Tac_Toe 클래스에서 컴퓨터의 차례일 때, 컴퓨터는 random.randint() 함수를 사용하여 무작위로 빈칸을 선택한다. 컴퓨터는 고정된 위치나 사용자 입력, 이전 게임의 위치를 선택하지 않는다.


101. 다음 코드에서 Tic_Tac_Toe 클래스의 게임판을 초기화하는 메소드는?

1) __init__()
2) create_board()
3) mark_spot()
4) show_board()

정답: 2

해설: create_board() 메소드는 게임판을 초기화하여 각 칸을 '*'로 채운다. __init__() 메소드는 클래스의 생성자이며, mark_spot() 메소드는 특정 위치에 플레이어의 기호를 표시하고, show_board() 메소드는 현재 게임판 상태를 출력한다.

 

 


102. 아래는 Tic_Tac_Toe 클래스의 일부 코드이다. 빈칸에 들어갈 적절한 코드를 고르시오.

 

def mark_spot(self, row, col, player):
    빈칸



다음 중 빈칸에 들어갈 올바른 코드는?

1) self.board[row][col] = 'O'
2) self.board[row][col] = 'X'
3) self.board[row][col] = player
4) self.board[row][col] = '*'

정답: 3

해설: mark_spot 메소드는 주어진 위치에 특정 플레이어의 기호('X' 또는 'O')를 표시해야 한다. 이때, player 변수는 현재 플레이어의 기호를 나타내므로 self.board[row][col] = player가 올바른 코드이다.

 



103. 아래는 Tic_Tac_Toe 클래스의 일부 코드이다. 잘못된 부분을 찾아 올바르게 고치시오.

def select_first_player(self):
    if random.randint(0, 1) == 0:
        return 'X'
    else:
        return 'O'



1) random.randint(0, 1) == 0 부분을 random.randint(0, 1) == 1으로 수정한다.
2) return 'X' 부분을 return 'O'로 수정한다.
3) return 'O' 부분을 return 'X'로 수정한다.
4) select_first_player 메소드의 코드는 수정할 필요가 없다.

정답: 4

해설: select_first_player 메소드는 첫 번째 플레이어를 무작위로 선택하기 위해 random.randint(0, 1)을 사용하고 있으며, 0일 경우 'X', 1일 경우 'O'를 반환한다. 이는 올바른 로직이므로 수정할 필요가 없다.

 



104. 아래는 Tic_Tac_Toe 클래스의 일부 코드이다. 잘못된 부분을 찾아 올바르게 고치시오.

def is_win(self, player):
    n = len(self.board)

    for i in range(n):
        win = True
        for j in range(n):
            if self.board[i][j] != player:
                win = False
                break
        if win == True:
            return win

    for i in range(n):
        win = True
        for j in range(n):
            if self.board[j][i] != player:
                win = False
                break
        if win == True:
            return win
            
    win = True
    for i in range(n):
        if self.board[i][i] != player:
            win = False
            break
    if win == True:
        return win

    win = True
    for i in range(n):
        if self.board[i][n-i-1] != player:
            win = False
            break
    if win == True:
        return win

    return False



1) if self.board[j][i] != player 부분을 if self.board[i][i] != player로 수정한다.
2) return win 부분을 return False로 수정한다.
3) win = True 부분을 win = False로 수정한다.
4) 수정할 필요가 없다.

정답: 4

해설: is_win 메소드는 특정 플레이어가 승리했는지 확인하기 위해 행, 열, 대각선을 검사한다. 주어진 코드는 올바르게 작성되어 있으며, 수정할 필요가 없다.

 




105. 다음 코드는 Tic_Tac_Toe 클래스의 일부이다. 빈칸에 들어갈 적절한 코드를 고르시오.

def is_board_full(self):
    for row in self.board:
        for item in row:
            if item == '*':
                빈칸
    return True



다음 중 빈칸에 들어갈 올바른 코드는?

1) return True
2) return False
3) if item == '*': return True
4) if item != '*': return True

정답: 2

해설: is_board_full 메소드는 게임판에 빈칸('*')이 남아있는지 확인하여, 빈칸이 없으면 게임이 무승부로 끝났음을 확인한다. 모든 칸을 확인한 후 빈칸이 없을 경우 return True를 반환해야 한다. 따라서 빈칸이 발견되면 return False가 올바르다.




106. 다음은 Tic_Tac_Toe 클래스의 일부 코드이다. 잘못된 부분을 찾아 올바르게 고치시오.

def next_player(self, player):
    return 'X' if player == 'O' else 'O'



다음 중 틀린 부분을 올바르게 수정한 것은?

1) return 'X' if player == 'O' else 'X'로 수정한다.
2) return 'O' if player == 'X' else 'O'로 수정한다.
3) return 'O' if player == 'X' else 'X'로 수정한다.
4) next_player 메소드의 코드는 수정할 필요가 없다.

정답: 4

해설: next_player 메소드는 현재 플레이어를 변경하기 위해 사용된다. 주어진 코드는 'O' 플레이어일 경우 'X'로 변경하고, 'X' 플레이어일 경우 'O'로 변경하는 올바른 로직을 가지고 있으므로 수정할 필요가 없다.

 

 

 

 


107. 다음 코드에서 Tic_Tac_Toe 클래스의 게임 시작 부분에 해당하는 def start 메소드의 주요 알고리즘 중 빈칸에 들어갈 적절한 코드를 맞추시오.

 

def start(self):
    # 새 게임판 생성
    self.create_board()
    self.show_board()

    # 첫 플레이어 선택
    player = self.select_first_player()

    # 게임 루프 시작
    while True:
        # 다음 플레이어 안내
        if player == 'X':
            print("컴퓨터 차례입니다")
        else:
            print("사용자 차례입니다.")
        
        # 현재 게임판 상태 출력
        self.show_board()

        # 사용자 입력 대기, 컴퓨터일 경우 랜덤 위치 반환
        if player == 'X':
            while True:
                row, col = random.randint(1, 3), random.randint(1, 3)
                if self.board[row-1][col-1] == '*':
                    break
            print("컴퓨터가 행 " + str(row) + ", 열 " + str(col) + "을/를 선택했습니다.")
            print()
        else:
            row, col = list(map(int, input("선택할 빈칸의 위치를 입력하세요: ").split()))
            print("사용자가 행 " + str(row) + ", 열 " +  str(col) + "을/를 선택했습니다.")
            print()

        # row, col 입력값이 0, 0인 경우 게임 종료
        if row == 0 and col == 0:
            break

        # 입력된 위치 표시
        빈칸

        # 현재 플레이어가 이겼는지 확인
        if self.is_win(player):
            if player == 'X':
                print("컴퓨터가 이겼습니다. 다시 도전하세요.")
            else:
                print("사용자가 이겼습니다. 축하합니다.")
            break

        # 게임판 가득참 확인
        if self.is_board_full():
            print("무승부입니다. 다시 도전하세요")
            break

        # 플레이어 변경
        player = self.next_player(player)

    # 최종 게임판 출력
    print()
    self.show_board()



1) 

self.mark_spot(row-1, col-1, player)
self.show_board()



2) 

self.show_board()
self.mark_spot(row-1, col-1, player)



3)

self.is_board_full()
self.show_board()



4) 

self.show_board()
self.is_win(player)



정답: 1

해설: 플레이어가 선택한 위치에 기호를 표시한 후(self.mark_spot(row-1, col-1, player)), 현재 게임판 상태를 출력(self.show_board())하는 것이 올바른 순서이다. 다른 선택지들은 올바른 순서가 아니다.

 




108. 다음 코드에서 틱택토 게임의 게임판이 초기화되는 부분에서 잘못된 부분을 고르시오.

def create_board(self):
    for i in range(3):
        row = []
        for j in range(3):
            row.append('O')
        self.board.append(row)



1) 행과 열의 반복 구조가 올바르지 않다.
2) 각 칸이 'O'로 초기화되고 있다.
3) self.board에 새로운 행을 추가하는 방식이 잘못되었다.
4) 게임판의 크기가 잘못되었다.

정답: 2

해설: create_board 메소드에서 게임판의 각 칸을 '*'가 아닌 'O'로 초기화하고 있다. 올바른 초기화 값은 '*'이다. 나머지 선택지들은 잘못된 부분이 없다.

 



109. 다음 Tic_Tac_Toe 클래스의 코드에서 컴퓨터의 차례일 때, 컴퓨터가 선택할 위치를 결정하는 부분에서 잘못된 부분을 고르시오.

if player == 'X':
    while True:
        row, col = random.randint(1, 3), random.randint(1, 3)
        if self.board[row][col] == '*':
            break
    print("컴퓨터가 행 " + str(row) + ", 열 " + str(col) + "을/를 선택했습니다.")
    print()


1) 무작위로 선택한 위치의 행과 열의 범위가 잘못되었다.
2) 선택한 위치가 빈 칸인지 확인하는 조건이 잘못되었다.
3) 행과 열의 인덱스를 0이 아닌 1부터 시작하는 것이 잘못되었다.
4) 컴퓨터의 선택을 출력하는 방식이 잘못되었다.

정답: 2

해설: 선택한 위치가 빈 칸인지 확인하는 조건에서, self.board[row][col] 대신 self.board[row-1][col-1]로 확인해야 한다. 




110. 다음 코드에서 Tic_Tac_Toe 클래스의 승리 상태를 확인하는 메소드 is_win(player)의 알고리즘에 빈칸에 들어갈 적절한 코드를 맞추시오.

def is_win(self, player):
    n = len(self.board)

    # 행 확인
    for i in range(n):
        win = True
        for j in range(n):
            if self.board[i][j] != player:
                win = False
                break
        if win == True:
            return win

    # 열 확인
    for i in range(n):
        win = True
        for j in range(n):
            if self.board[j][i] != player:
                win = False
                break
        if win == True:
            return win
        
    # 대각선 확인(우하향)
    win = True
    for i in range(n):
        if self.board[i][i] != player:
            win = False
            break
    if win == True:
        return win

    # 대각선 확인(우상향)
    win = True
    for i in range(n):
        빈칸 != player:
            win = False
            break
    if win == True:
        return win

    return False



1)

if self.board[i][j] != player:



2) 

if self.board[j][i] != player:



3) 

if self.board[i][i] != player:



4) 

if self.board[i][n-i-1] != player:



정답: 4

해설: 우상향 대각선을 확인할 때, self.board[i][n-i-1]로 확인하여야 한다. 다른 선택지들은 각각 행, 열, 우하향 대각선을 확인하는 조건이다.

 

 

 

반응형