지우너
[정보처리기사 실기] 파이썬 본문
파이썬에서 나오는 내용: 출력형식, 자료구조(list, dict, set), 문자열 슬라이스(-1은 뒤에서부터 시작), Range 함수
(문법, 객체지향도 나오긴 하지만 그건 C / Java 공부한 걸로 풀 수 있음)
2023 정처기 1회(4월 시행) 15번 문항
asia = {'한국', '중국', '일본'}
asia.add('베트남')
asia.remove('일본')
asia.update({'한국', '홍콩', '태국'})
print(asia)
정답
{'한국', '중국', '베트남', '홍콩', '태국'}
* 순서는 실행할 때마다 변경되므로 관계없으며, 5개의 요소가 중괄호와 작은 따옴표 안에 들어가 있으면 인정
풀이
add()를 하면 asia set에 '베트남'이 추가된다. asia = {'한국', '중국', '일본', '베트남'}
remove()를 하면 asia set에 '일본'이 삭제된다. asia = {'한국', '중국', '베트남'}
update()를 하면 여러 개의 요소를 한 번에 삽입할 수 있다. '한국'은 이미 들어있는 요소. set은 중복을 허용하지 않기 때문에 '홍콩'과 '태국'만 set에 추가된다. asia = {'한국', '중국', '베트남', '홍콩', '태국'}
print(asia)를 하면 set을 의미하는 중괄호로 요소들이 둘러 쌓여서 출력된다. set 안에 문자 요소들은 작은 따옴표로 묶어줘야 한다.
{'한국', '중국', '베트남', '홍콩', '태국'}
<add() vs update()>
add()는 1개의 요소만 추가가 가능하다
update는 여러 개의 요소를 추가할 수 있으나, 이터러블 자료만 가능하다. 즉, 리스트, set, 문자열 등 만 매개변수로 넣을 수 있는 것
예를 들어 list=[1, 2, 3]에 4, 5를 추가하고 싶다고 하자.
이때 update(4, 5)라고 적을 시 에러가 난다. 4, 5를 리스트에 넣어 update([4, 5])를 해주어야 한다.
(번외) 리스트에 리스트를 삽입하고 싶은 경우 list1.append(list(list2)) 이런 식으로 해주면 된다고 함.
[Q&A] 영상답변 | 파이썬 출력형태 - 꼭 들어주세요.
a = [1, 2, ['AB', 'CDE', ['FGH', 'IJK']]]
print(a[0])
print(a[1])
print(a[2])
print(a[2][0])
print(a[2][1])
print(a[2][2])
print(a[2][2][0])
print(a[2][2][1])
print(a[2][2][0][0])
print(a[2][2][0][1])
print(a[2][2][0][2])
정답
1
2
['AB', 'CDE', ['FGH', 'IJK']]
AB
CDE
['FGH', 'IJK']
FGH
IJK
F
G
H
풀이
a리스트의 구조를 그림으로 표현하면 아래와 같다

따라서 아래는 노란색 영역을 의미
a[0]=1
a[1]=2
a[2]=['AB', 'CDE', ['FGH', 'IJK']]
가 된다. 리스트이기 때문에 대괄호와 리스트 속 요소가 문자라면 작은 따옴표가 꼭 있어야 한다.
아래는 빨간색 영역을 의미(배열 속 배열을 가리키고 있으므로)
a[2][0]=AB
a[2][1]=CDE
a[2][2]=['FGH', 'IJK']
아래는 파란색 영역을 의미 배열 속 배열 속 배열
a[2][2][0]=FGH
a[2][2][1]=IJK
아래는 [2][2][0]인 'FGH' 문자열의 0, 1, 2번째 원소를 말함
a[2][2][0][0]=F
a[2][2][0][1]=G
a[2][2][0][2]=H
numbers = [1, 2, 3, 4, 5]
total=sum([n for n in numbers if n%2==1])
print(total)
정답
9
풀이
[n for n in numbers if n%2==1]는 [n (for n in numbers if n%2==1)] 이렇게 묶을 수 있다
numbers의 원소를 꺼내와서 저장한다는 의미이다.
1%2==1 이므로 저장한다
2%2!=1이므로 저장x
3%2==1 이므로 저장
4%2!=1이므로 저장x
5%2==1 이므로 저장
따라서 [n for n in numbers if n%2==1]의 결과는 [1, 3, 5]가 된다. 결과로 나온 이 리스트를 sum함수의 매개변수로 넣는다.
sum([1, 3, 5]) 1+3+5=9
sum연산의 결과는 무조건 원소 1개가 나오기 때문에 대괄호 없이 9를 출력한다.
numbers = [1, 2, 3, 4, 5]
result = [n*2 for n in numbers if n%2==0]
print(result)
정답
[4, 8]
풀이
[n*2 for n in numbers if n%2==0]도 위의 문제처럼 [n*2 (for n in numbers if n%2==0)] 이렇게 묶을 수 있다.
1%2!=0 이므로 저장x
2%2==0 이므로 저장
3%2!=0 이므로 저장x
4%2==0 이므로 저장
5%2!=0 이므로 저장x
따라서 결과로 저장되는 n값은 2, 4가 된다.
그런데 n*2라고 쓰여있으니 각각의 원소에 2를 곱한 값을 원소로 저장한다.
따라서 result = [4, 8] 이 된다.
print(result)를 하면 [4, 8]이 출력된다. result의 원소는 여러개가 될 수 있으므로 print 할 때 대괄호를 꼭 붙여줘야 한다.
(+) result = [n*2 for n in numbers if n%3==0]인 경우를 보면 numbers에서 n에 저장될 수 있는 원소는 3 뿐이다.
n*2가 되어 result의 원소로 저장된다고 하니 result=[6]이 된다.
print(result) 의 결과는 [6]이다. 6이 아니라 [6]이라고 대괄호를 포함하여 적어야 한다.
그 이유는 조건에 따라 result의 개수가 여러 개가 될 수도 있기 때문.
[파이썬] 문제풀이 특강 01
1번
x, y = 100, 200
print(x==y)
정답
False
출력값이 0일지, false일지 False일지 개인적으로 좀 헷갈렸던 문제
2번
while(True):
print('A')
print('B')
print('C')
continue
print('D')
정답
A
B
C
가 무한반복됨
3번
a=["대", "한", "민", "국"]
for i in a:
print(i)
정답
대
한
민
국
4번
class arr:
a=["Seoul", "Kyeonggi", "Inchon", "Daejoen", "Daegu", "Busan"]
str=''
for i in arr.a:
str=str+i[0]
print(str)
정답
SKIDBB
5번
data=[[1, 2, 3], [4, 5], [6, 7, 8, 9]]
print(data[0])
print(data[2][1])
for sub in data:
for item in sub:
print(item, end= " ")
print()
정답
[1, 2, 3]
7
1 2 3
4 5
7 8 9
print(data[0])은 대괄호로 감싸져 있고, 각각의 원소가 쉼표로 구분되어 있어야 함.
print(data[2][1])은 원소만 출력해야 함(대괄호가 있으면 안 됨)
이중 for문으로 출력한 print(item, end=" ")는 공백으로 각각의 원소가 구분되어 있어야 함
6번 입력받은 문제에서 앞에서 3글자, 뒤에서 3글자 추출하여 출력하는 프로그램.
string=input("7문자 이상 문자열 입력")
m=(㉠)
print(m)
// 입력값: Hello World
// 출력값: Helrld
정답
string[0:3]+string[-3:0]
string [0:3]+string[8:]도 가능한 답이긴 하지만, 문자열 길이에 따라 정답이 아니게 될 수도 있으므로 가급적 위와 같이 적을 것을 권함!
[파이썬] 문제풀이 특강 02
7번
a=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
print(a[:7:2])
정답
[0, 20, 40, 60]
대괄호로 감싸져 있어야 하고, 각각의 원소가 쉼표로 구분되어 있어야 함
리스트를 슬라이스하면 결과값도 리스트라는 사실을 기억할 것
8번
a=100
list_data=['a', 'b', 'c']
dic_data={'a':90, 'b':95}
print(list_data[0])
print(dic_data['a'])
정답
a
90
9번
a={'일본', '중국', '한국'}
a.add('중국')
a.add('북한')
a.remove('일본')
a.update({'홍콩', '한국', '베트남'})
print(a)
정답
{'중국', '한국', '북한', '홍콩', '베트남'}
순서는 상관없음
중괄호 필수. 각 원소가 쉼표로 구분되어야 함.
원소(문자열)이 작은 따옴표로 감싸져 있어야 함.
10번
a=100
result=0
for i in range(1, 3):
result = a >> i
result = result+1
print(result)
정답
26
풀이
A<<B 는 A∗(2B)과 같음
A>>B는 A/(2B)과 같음
for i in range(1, 3) 은 for (i=1; i<3; i++) 를 의미
i=1일 때,
result =100 >> 1 // 100/(21) 이므로 result=50
result=result+1 // result=51
i=2일 때
result=100>>2 // (a값은 그대로 이므로 100) 100/(22) result=25
result=result+1 // result=26
print(result) // 26
11번
def cs(n):
s=0
for num in range(n+1):
s+=num
return s
print(cs(11))
정답
66
풀이
print(cs(11))
cs(11) 호출
s=0
for num in range(11+1) // for num in range(12)이므로 for(i=0; i<12; i++)와 동일
s+=num // num은 0~11까지 이므로 0~11까지의 수를 모두 더해주면 된다.
0+1+2+3+4+5+6+7+8+9+10+11 = 66
return s // s=66
print(66) // 66
12번
class FourCal:
def Setdata(sel, fir, sec):
sel.fir=fir
sel.sec=sec
def add(sel):
result = sel.fir+sel.sec
return result
a = FourCal()
a.Setdata(4, 2)
print(a.add())
정답
6
풀이
a=FourCal() // FourCal 객체 선언
a.Setdata(4, 2) // a.fir=4, a.sec=2로 설정
print(a.add()) // a.add() 호출
a.add()
result = a.fir+a.sec // 4+2 =6
return result // a를 호출한 곳에 6 반환
print(6) // 6
'Records > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기/계산식] 디스크 스케줄링 (0) | 2024.10.12 |
---|---|
[정보처리기사 실기] SQL (0) | 2024.09.29 |
[정보처리기사 실기/계산식] 서브넷 (0) | 2024.09.07 |
[정보처리기사실기] C (0) | 2024.08.14 |
[정보처리기사 실기] JAVA (0) | 2024.08.10 |