IT 자격증/정보처리기사

[정처기] 정보처리기사 실기 Python 편 풀이 해설

SOIT 2024. 7. 22. 17:27

 

 

1. 다음 Python으로 구현된 프로그램과 입력값을 보고 실행 결과를 작성하시오.

입력 : Python programming

x = input()
x = x.capitalize()
y = x.split()
print(y[0][::2], end = '*')
print(y[1][3:6])

 

 

📚 capitalize(): 

더보기

Pto*gra

 

capitalize(): 각 단어의 첫 글자를 대문자로 변경하여 x에 저장합니다.
y[0][::2] :
y[0]에 저장된 문자열의 0번 위치부터 2씩 증가하면서 각 글자를 출력하고 종료 문자(end = '*')인 *를 출력합니다. 

합친값은 Pto*gra가 됩니다.

 

 

2. 다음 python의 프로그램과 입력값을 분석하여 실행 결과에 대해 작성하시오.

입력 :

input string : information-technology

input number : 12

arr_str = input('input String :').split('-')
arr_len = int(input('input number : '))
arr_val = list(range(0,arr_len,2))
arr_val.remove(4)
print(arr_str[1].find('i') + arr_val[2])

 

📚 find(): 

더보기

5

 

range(0,12,2): 0에서 12-1(n-1)까지 2씩 증가하는 숫자를 arr_val에 리스트 형식으로 저장되게 됩니다.

 

arr_val[0] : 0
arr_val[1] : 2
arr_val[2] : 4
arr_val[3] : 6
arr_val[4] : 8
arr_val[5] : 10

arr_val의 값 4의 부분을 삭제되고 앞으로 한칸씩 당겨지게 됩니다.
arr_val[0] : 0
arr_val[1] : 2
arr_val[2] : 6
arr_val[3] : 8
arr_val[4] : 10

find 함수: 인덱스를 반환

ex)

A = "abc def" 

A.find("def")   # def 의 시작 인덱스인 5를 반환

 

ex)

A = "abc def" 

A.find("g")   # g는 존재하지 않는 값으로 -1를 반환

 


arr_str[1]에는 i값이 없으므로 -1이 반환되고 arr_val[2]는의 값은 6이므로 5가 출력되게 됩니다.

 

 

3. 다음 python의 프로그램을 분석하여 실행 결과에 대해 작성하시오.

 

i = 20
f = 123456.789E-3
print('%d\n%d' % (i, i), end = '/')
print('%.3f' % f)

 

📚 end = '/'

더보기

20

20/123.457

 

 

%d에서 20을 출력하고 \n에 의해 개행이되게 됩니다.

그리고 다시 %d로 인해 20이 입력되고 종료 문자 end 속성으로 / 를 출력합니다.


123456.789E-3 이면

실수 e * (1/10의 거듭제곱) 형태로 계산됩니다.

 

그래서 123456.789 * (1/1000) = 123.456789 가 됩니다.

'%.3f':  소수점을 반올림하여 3자리를 출력합니다.

 

 

4. 다음 python의 프로그램을 분석하여 실행 결과에 대해 작성하시오.

class charClass :
  a = ["Seoul", "Inchon", "Kyonggi", "Daejun", "Daegu", "Pusan"]
myVal = charClass()
str01 = ''
for i in myVal.a:
  str01 = str01 + i[0]
print(str01)

 

📚 for i in myVal.a:       i[0]

더보기

SIKDDP

 

 

charClass의 객체 변수 myVal를 선언합니다.
str01의 변수를 선언하고

myVal의 리스트 a의 요소 수만큼 문장들을 반복합니다.
각 요소에 i를 할당하면서 문자열만큼 배열값이 들어가게 됩니다. 

 

ex)
i[0] = Seoul각 요소의 i의 0번째는 각 글자의 첫번째 글자로 나타납니다.

i[4] = Seoul

 

 

5. 다음 Python으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

a = "What's this?"
print("%-10.4s" % a)
print("%10.4s" % a)

 

📚 %-10.4s

더보기

What      

      What

 

%s는 문자열을 추출하는 서식 문자열이고,

 

-10.4s에서 -는 왼쪽부터 출력하라는 의미이며,

10은 10자리를 확보하고,

4는 a에 저장된 문자열 "What's this" 중 앞의 4글자만을 출력하라는 의미이므로 결과는 뒤에 6칸 공백이 생깁니다.

 

두번째 답도 비슷하게

10.4s에서 +는 오른쪽부터 출력하라는 의미이며,
앞의 4글자만 출력하고 마지막 6칸 공백이 생기는 방식으로 설정되었습니다.

 

💡 %.3f 을 생각해요.

소수 출력에서 많이 봤을만한 표기입니다.

소수점 뒤 반올림하여 3자리까지 출력입니다.

 

➡️ %(-/+)10.4s문자열이니까, 반올림은 아니죠?!그럼 .4는 앞부터 출력 개수이고, 10은 총 출력 개수라고 유추할 수 있어요-/+ 는 왼쪽/오른쪽 부터 출력을 의미한다는 거~! 암기

 

 

 

6. 다음 Python으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

a = [[1,1,0,1,0],
     [1,0,1,0]]
tot,totsu = 0, 0
for i in a:
    for j in i:
        tot += j
    totsu = totsu + len(i)
print(totsu, tot)

 

📚 2차원 리스트에서 중첩 for문, 개수

더보기

9 5

 

 

i는 a의 [[1,1,0,1,0],[1,0,1,0]] 에서 순차적으로 들어갑니다. (즉, 크게 2번 반복)

 

1.

for 문 (1)

i[1,1,0,1,0] 

    for 문(2)

    j에 i의 각 요소 1,1,0,1,0
   tottot(0) + j 요소의 합이 들어감 # 3 

   totsutotsu(0) + len(i)로, len(i)는 리스트의 개수 5개 # 5 

 

2.
for 문 (2)

i [1,0,1,0

    for 문(2)

    j에 i의 각 요소 1,0,1,0
   tot tot(3) + j 요소의 합이 들어감 # 5 

   totsu totsu(5) + len(i)로, len(i)는 리스트의 개수 4개 # 9 

 

 

print(totsu, tot) 를 하면, 마지막 9 5 가 순차대로 출력됩니다.

 

 

 

💡참고로, print에서

print(totsu, tot) 할 때 변수를 " , " 로 연결하여 출력할 경우 한칸 띄어쓰기 됩니다.

 

💡참고로, print(len(j)는 하지 못합니다.
i는 리스트 이며, j는 정수이기 때문입니다.

len은 리스트 길이 구할 때 사용합니다.

 

 

 

7. 다음 Python 코드는 "30, 200"을 출력한다. 빈 칸 ( 1 ), ( 2 )에 알맞는 코드를 차례로 쓰시오.

(  1  ) Calculator:
    (   2   ) add(self,x,y):
        return x + y
    (   2   ) mul(self,x,y):
        return x * y
 
cal = Calculator()
x = cal.add(10,20)
y = cal.mul(10,20)
 
print(x, y)

 

📚 함수 키워드

더보기

class, def

 

 

Python에서 클래스는 class로, 함수는 def라는 키워드로 선언합니다.

 

 

7. 다음 Python 코드는 "30, 200"을 출력한다. 빈 칸 ( 1 ), ( 2 )에 알맞는 코드를 차례로 쓰시오.

lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol :
    for item in sub :
        print(item, end  = " ")
    print()

 

📚 2차원 리스트에서 중첩 for문, end = " "

더보기

[1,2,3]

7

1 2 3

4 5

6 7 8 9

 

lol의 [0] 인덱스 값 출력하고 1줄 내립니다. [1,2,3]

lol의 [2][1] 인덱스 값 출력하고 1줄 내립니다. 7

 

sub lol의 [[1,2,3],[4,5],[6,7,8,9]] 에서 순차적으로 들어갑니다. (즉, 크게 3번 반복)

 

1.

for 문 (1)

sub [1,2,3]

    for 문(2)

    itemsub의 각 요소 1,2,3

   print(item, end = " ")   # 1,2,3 출력하고 개행(엔터)

 

2.

for 문 (1)

sub [4,5]

    for 문(2)

    item sub의 각 요소 4,5

   print(item, end = " ")   # 4,5 출력하고 개행(엔터)

 

3.

for 문 (1)

sub [6,7,8,9]

    for 문(2)

    item sub의 각 요소 6,7,8,9

   print(item, end = " ")   # 6,7,8,9 출력하고 개행(엔터)

 

 

 


 

본 글은 chobopark 님의 글을 인용하여, 공부한 글입니다. [참고 링크]

728x90