본문 바로가기

카테고리 없음

[정보처리기사 실기] 파이썬

주로 나오는 문제는 파이썬의 메소드를 맞추는 문제와 리스트 슬라이싱, 람다 함수가 나온다.

주의할 점은 출력 결과를 맞추라는 문제로 만약 print문 앞에 1, 2, 3등의 숫자가 있다면 이것도 같이 출력해줘야한다.

일종의 틀리기 쉬운 함정이다.

 

람다 함수는 lambda 매개변수 : 표현식 의 형태로 사용한다,.

 

lambda(n , m : n + m)(2, 3)

# 5

 

람다 함수를 변수에 할당하여 사용할 수도 있다.

 

sum = lambda n , m : n + m)

print(sum(2, 3))

# 5

 

def f(n):

  return lambda a : a+n

k = f(3)

print(k(10))

 

내장 함수를 이용한 람다 함수의 활용도 있다.

 

22년 3회차 기출

a = [1, 2, 3, 4, 5]

m = list(map(lambda num : num + 100, a))

print(m)

 

실제 기출되었던 문제로 매개변수인 num으로 a리스트의 값이 순차적으로 전달된다.

따라서 답은 [101, 102, 103, 104, 105]이다.

 

정확한 동작 원리를 몰라도 유추해서 풀었으면 정답인 문제이다.

 

a = [1, 2, 3, 4, 5]

m = list(filter(lambda num : num > 2, a))

print(m)

 

파이썬의 컬렉션 데이터 타입은 자료를 감싸고 있는 기호가 대괄호, 중괄호, 소괄호냐에 따라서 달라지기 때문에 조심해야한다.

 

리스트 = []

튜플 = () -> 초기에 선언된 값을 생성, 삭제, 수정할 수 없음.

세트 = {} 중복된 원소를 허용하지 않음.

딕셔너리 = {}

 

a = {'일본', '중국', '한국'}

a.add('베트남')

a.add('중국')

a.remove('일본')

a.update({'홍콩', '한국', '태국'})

print(a)

 

중괄호는 세트 자료형으로 중복된 원소를 허용하지 않는다.

add(값) 값 1개를 추가하는 메소드

update([]) 여러 개의 값을 한꺼번에 추가하는 메소드

remove(값) 특정 값을 제거하는 메소드

세트 자료형은 순서가 따로 정해져있지 않다.

중복을 허용하지 않으니 순서가 의미가 없기 때문이다.

 

일, 중, 한

일, 중, 한, 베트남

중, 한, 베트남

답 : {'홍콩', '중국', '한국', '태국', '베트남'}.

 

리스트와 관련된 파이썬 함수

append - 마지막에 값 추가

clear - 리스트 모든 항목 삭제

copy - 리스트 복사

count(x) - 리스트에서 x의 갯수 리턴

extend(i) - 리스트 마지막에 컬렉션 자료형 추가

index(x) - 값 x와 같은 값을 가지고있는 인덱스의 번호를 알려주는 메소드

insert(i, x) - 리스트의 i번지에 x를 추가

pop - 마지막 또는 지정 요소를 삭제하고 값을 반환

remove(x) - x값에 해당하는 값을 제거 여러개가 있을 경우 제일 앞의 x 삭제

reverse - 리스트 내림차순 정렬

sort - 리스트 오름차순 정렬

 

22년 1회차 기출

1. 리스트 확장, 여러 값을 한 번에 추가

2. 마지막 또는 지정요소를 삭제하고 값을 반환 

3. 역순으로 뒤집음.

 

설명에서 유추할 수 있는 문제이다.

다만 2번이 조금 헷갈릴 수 있는데 무언가를 삭제한다는 의미의 단어가 pop, remove가 있었다.

삭제하고 반환하는 것은 pop이다.

 

*in 메소드

찾고자 하는 문자열 in 문자열

왼쪽의 문자열이 오른쪽에 포함되어있으면 True를 리턴하고 없다면 False를 리턴한다.

 

23년 3회차 기출

*문자열.split(",") 

문자열을 ,를 기준으로 잘라서 리스트를 반환한다.

num1, num2 = input().split()

답은 input()다음에 나올 메소드를 묻는 문제였고 답은 split

 

*디폴트 매개변수

def sample(num1, num2=2):

  print('a=', num1, 'b=', num2)

 

sample(20)

# a=20 b=2 print문으로 여러개를 출력할 경우 ,는 띄어쓰기로 구분된다.

sample(20, 3)

# a=20 b=3

 

문자열 슬라이싱

 

a = "REMEMBER NOVEMBER"

b = a[:3] + a[12:16]

c = "R AND %s"%"STR"

print(b + c)

 

a[:3]은 시작 인덱스부터 3번째 인덱스의 전까지 출력한다. 이점을 주의해야한다.

REM 

a[12:16]은 EMBE가 되고 제로 베이스드 넘버링으로 시작 인덱스는 0으로 시작한다는 점을 주의

REMEMBE + R AND STR

%s에 뒤의 "STR"문자를 대입하면 R AND STR

b와 c를 더하면?

답은 REMEMBER AND STR