본문 바로가기
카테고리 없음

2026년 프로그래밍 기능사 기출 예상문제 30선 모음 - 파이썬(Python)

by 고인턴님 2026. 2. 13.

🐍 Part 2. 파이썬(Python) 핵심 문법 및 출력 함수 정복

네트워크 지식만큼이나 코딩 테스트와 정보처리기사 실기에서 비중이 높아진 것이 바로 파이썬(Python)입니다. 파이썬은 문법이 간결해 보이지만, print() 함수 하나에서도 sep, end와 같은 옵션을 어떻게 활용하느냐에 따라 출력 결과가 완전히 달라집니다. 특히 프로그래밍 기초 시험에서 점수를 깎아먹는 '단골 함정'이 바로 이런 세세한 출력 옵션들입니다. 눈으로만 보는 것과 직접 결과를 예측해 보는 것은 천지 차이입니다! 아래 문제들을 통해 파이썬의 기초를 얼마나 탄탄하게 잡고 있는지 스스로 테스트해 보세요. 사소해 보이는 옵션 하나가 여러분의 합격 점수를 결정할 수 있습니다.

Q1. 다음 파이썬 코드의 실행 결과로 옳은 것은?

a = [1, 2, 3]
b = a
b[0] = 10
print(a[0])
정답 및 해설 확인하기

정답: ②번 10

[해설] 파이썬에서 리스트는 가변(Mutable) 객체이며, b = a는 주소값을 복사하는 얕은 복사입니다. 따라서 b를 수정하면 원본 a도 함께 변경됩니다.

Q2. 다음 파이썬 코드의 실행 결과로 옳은 것은?

def func():
    global x
    x = 20

x = 10
func()
print(x)
정답 및 해설 확인하기

정답: ②번 20

[해설] global 키워드를 사용하면 함수 내부에서 전역 변수를 직접 수정할 수 있습니다. 따라서 함수 실행 후 x의 값은 20으로 변경됩니다.

Q3. 다음 중 파이썬의 예외 처리 구문에서 에러 발생 여부와 상관없이 항상 실행되는 블록은?

정답 및 해설 확인하기

정답: ④번 finally

[해설] finally 블록은 예외 발생 여부와 관계없이 코드의 마지막에 무조건 실행됩니다. 보통 파일 닫기나 DB 연결 해제 등에 사용됩니다.

Q4. 다음 파이썬 코드의 실행 결과로 옳은 것은?

try:
    n = 10 / 0
except ZeroDivisionError:
    print("A", end="")
except:
    print("B", end="")
finally:
    print("C", end="")
정답 및 해설 확인하기

정답: ①번 AC

[해설] 0으로 나누기 에러가 발생하여 첫 번째 except ZeroDivisionError 블록이 실행되어 'A'가 출력되고, 마지막에 finally 블록인 'C'가 출력됩니다.

Q5. 다음 파이썬 코드의 실행 결과로 옳은 것은?

x = [1, 2]
y = [1, 2]
print(x == y, x is y)
정답 및 해설 확인하기

정답: ②번 True False

[해설] ==는 값이 같은지 비교(True)하고, is는 메모리 주소(객체 자체)가 같은지 비교합니다. 리스트는 새로 생성될 때마다 다른 주소를 가지므로 is는 False입니다.

Q6. 다음 파이썬 코드의 실행 결과로 옳은 것은?

def update_val(n):
    n += 10

a = 5
update_val(a)
print(a)
정답 및 해설 확인하기

정답: ①번 5

[해설] 정수(int)는 불변(Immutable) 객체입니다. 함수에 인자로 전달될 때 값이 복사되어 전달되며, 함수 내에서의 변경은 전역 변수 a에 영향을 주지 않습니다.

Q7. 다음 파이썬 코드의 실행 결과로 옳은 것은?

a = [0, 10, 20, 30, 40, 50]
print(a[1:4:2])
정답 및 해설 확인하기

정답: ②번 [10, 30]

[해설] 슬라이싱 [시작:끝:증감] 공식에 따라, 인덱스 1부터 4 미만(1, 2, 3)까지 중에서 2씩 건너뛰며 추출하므로 10(인덱스 1)과 30(인덱스 3)이 출력됩니다.

Q8. 다음 파이썬 코드의 실행 결과로 옳은 것은?

s = "python is fun"
a = s.split()
print("-".join(a))
정답 및 해설 확인하기

정답: ②번 python-is-fun

[해설] split()은 공백을 기준으로 문자열을 리스트로 나누고, "-".join(a)은 리스트 요소들 사이에 "-"를 넣어 하나의 문자열로 합칩니다.

Q9. 다음 파이썬 코드의 실행 결과로 옳은 것은?

sum = 0
for i in range(1, 10, 3):
    sum += i
print(sum)
정답 및 해설 확인하기

정답: ②번 12

[해설] range(1, 10, 3)은 1부터 시작하여 10 미만까지 3씩 증가하는 숫자 리스트 [1, 4, 7]을 생성합니다. 따라서 1+4+7 = 12가 됩니다.

Q10. 다음 파이썬 코드의 실행 결과로 옳은 것은?

info = {"name": "Kim", "age": 20}
print(info.get("score", 100))
정답 및 해설 확인하기

정답: ②번 100

[해설] get(key, default) 메서드는 딕셔너리에 해당 키가 없을 경우 두 번째 인자로 전달된 기본값을 반환합니다. "score" 키가 없으므로 100이 출력됩니다.

Q11. 다음 파이썬 코드의 실행 결과로 옳은 것은?

list_a = [1, 2]
list_b = [3]
print(list_a * 2 + list_b)
정답 및 해설 확인하기

정답: ②번 [1, 2, 1, 2, 3]

[해설] 리스트에 숫자를 곱하면 해당 리스트가 반복([1, 2, 1, 2])되고, 리스트끼리 더하면 두 리스트가 하나로 연결됩니다.

Q12. 다음 파이썬 코드의 실행 결과로 옳은 것은?

a = [i for i in range(5) if i % 2 == 0]
print(a)
정답 및 해설 확인하기

정답: ①번 [0, 2, 4]

[해설] range(5)는 0, 1, 2, 3, 4를 생성합니다. 이 중 i % 2 == 0(짝수) 조건에 맞는 0, 2, 4만 리스트의 요소가 됩니다.

Q13. 다음 파이썬 코드의 실행 결과로 옳은 것은?

a = {1, 2, 2, 3, 3, 3}
print(len(a))
정답 및 해설 확인하기

정답: ②번 3

[해설] 파이썬의 set(세트) 자료형은 중복된 요소를 허용하지 않습니다. 따라서 {1, 2, 3}만 남게 되어 길이는 3이 됩니다.

Q14. 다음 파이썬 코드의 실행 결과로 옳은 것은?

s = "ABCDE"
print(s[::-1])
정답 및 해설 확인하기

정답: ②번 EDCBA

[해설] 슬라이싱 [시작:끝:증감]에서 증감값이 -1이면 문자열을 역순으로 뒤집어서 출력하라는 의미입니다.

Q15. 다음 파이썬 코드의 실행 결과로 옳은 것은?

print(3 > 5 or 10 == 10)
정답 및 해설 확인하기

정답: ①번 True

[해설] or 연산은 둘 중 하나만 참이면 결과가 참이 됩니다. 3 > 5는 False이지만, 10 == 10이 True이므로 최종 결과는 True입니다.

Q16. 다음 파이썬 코드의 실행 결과로 옳은 것은?

a = [[1, 2], [3, 4, 5]]
print(a[1][1])
정답 및 해설 확인하기

정답: ③번 4

[해설] a[1]은 두 번째 리스트인 [3, 4, 5]를 의미하고, a[1][1]은 그 리스트의 두 번째 요소인 4를 추출합니다.

Q17. 다음 파이썬 코드의 실행 결과로 옳은 것은?

t = (1, 2, 3)
try:
    t[0] = 10
    print(t[0])
except TypeError:
    print("Error")
정답 및 해설 확인하기

정답: ③번 Error

[해설] tuple(튜플)은 한 번 생성되면 값을 변경할 수 없는 불변(Immutable) 자료형입니다. 따라서 요소를 수정하려 하면 TypeError가 발생합니다.

Q18. 다음 파이썬 코드의 실행 결과로 옳은 것은?

a = [1, 2]
a.extend([3, 4])
print(len(a))
정답 및 해설 확인하기

정답: ③번 4

[해설] append는 리스트 자체를 하나의 요소로 추가하지만, extend는 인자로 받은 순회 가능한 객체의 모든 요소를 각각 추가하여 리스트를 확장합니다. 결과는 [1, 2, 3, 4]이므로 길이는 4입니다.

Q19. 다음 파이썬 코드의 실행 결과로 옳은 것은?

name = "Quiz"
print(f"{name:*^10}")
정답 및 해설 확인하기

정답: ②번 ***Quiz***

[해설] f-string 포맷 {변수:채움문자 정렬방식 전체길이}에서 ^는 가운데 정렬을 의미합니다. 전체 10자 중 "Quiz"(4자)를 가운데 두고 남은 공간을 *로 채웁니다.

Q20. 다음 파이썬 코드의 실행 결과로 옳은 것은?

nums = [1, 2, 3]
result = list(map(lambda x: x * x, nums))
print(result)
정답 및 해설 확인하기

정답: ③번 [1, 4, 9]

[해설] map은 리스트의 각 요소에 함수(여기서는 람다 함수 x*x)를 적용합니다. 따라서 1*1, 2*2, 3*3의 결과가 리스트로 반환됩니다.

Q21. 다음 파이썬 코드의 실행 결과로 옳은 것은?

keys = ['a', 'b']
vals = [1, 2, 3]
print(list(zip(keys, vals)))
정답 및 해설 확인하기

정답: ②번 [('a', 1), ('b', 2)]

[해설] zip 함수는 여러 개의 순회 가능한 객체를 짝지어 튜플로 반환합니다. 이때 인자들의 길이가 다르면 가장 짧은 인자를 기준으로 결합하고 나머지는 무시됩니다.

Q27. 다음 파이썬 코드의 실행 결과로 옳은 것은?

class A:
    def __init__(self): print("A", end="")
class B(A):
    def __init__(self):
        super().__init__()
        print("B", end="")
obj = B()
정답 및 해설 확인하기

정답: ③번 AB

[해설] 자식 클래스 B의 생성자에서 super().__init__()를 호출하면 부모 클래스 A의 생성자가 먼저 실행되어 "A"가 출력되고, 그 다음 B의 출력문이 실행되어 "B"가 출력됩니다.

Q28. 다음 파이썬 코드의 실행 결과로 옳은 것은?

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b, a is b)
정답 및 해설 확인하기

정답: ③번 True False

[해설] ==는 값이 같은지 비교하므로 True입니다. 하지만 is는 객체의 메모리 주소가 같은지 비교하며, 두 리스트는 별개로 생성된 객체이므로 False가 됩니다.

Q29. 다음 파이썬 코드의 실행 결과로 옳은 것은?

def gen():
    yield 1
    yield 2
g = gen()
print(next(g) + next(g))
정답 및 해설 확인하기

정답: ②번 3

[해설] 제너레이터의 next() 호출 시마다 yield된 값이 반환됩니다. 첫 호출에서 1, 두 번째 호출에서 2가 반환되어 1+2=3이 됩니다.

Q30. 다음 파이썬 코드의 실행 결과로 옳은 것은?

words = ["apple", "bat", "cherry"]
words.sort(key=len)
print(words[0])
정답 및 해설 확인하기

정답: ②번 bat

[해설] sort(key=len)은 문자열의 길이를 기준으로 오름차순 정렬합니다. 가장 짧은 "bat"(3자)이 첫 번째 인덱스(0)로 오게 됩니다.