연습문제 풀이.
1. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오.
# 입력
a = [1]
b = ['a', 'b', 'c']
빈칸
print(b)
# 출력
['a', [1], 'c']
① b[1] = a[0] ② b[1:2] = a[0:1] ③ b[1] = a[0:1] ④ b[1:2] = a[0] ⑤ b[0] = a[1]
- 답 및 해설
③ b[1] = a[0:1]
=> b의 1번째 인덱스의 값이 a로 바뀌었다. a의 원소 1이 아닌 list a, 즉 [1]임에 주의하자. 1이 아닌 [1]이라면, a에 인덱싱이 아닌 슬라이싱을 해야 하고, b의 값이 대체되었으므로 b는 슬라이싱이 아닌 인덱싱을 해야 한다.
즉 b[1] = a[0:1]
2. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
fruit1 = ['orange', 'melon', 'strawberry']
fruit2 = ['watermelon', 'grape']
fruit2.remove('grape')
fruit1.append(fruit2)
print(fruit1)
① ['orange', 'melon', 'strawberry', 'watermelon']
② [['orange', 'melon', 'strawberry', 'watermelon']]
③ ['orange', 'melon', 'strawberry', ['watermelon']]
④ ['orange', 'melon', 'strawberry', ['watermelon', 'grape]']
⑤ ['orange', 'melon', 'strawberry', 'watermelon', 'grape']
- 답 및 해설
③ ['orange', 'melon', 'strawberry', ['watermelon']]
fruit1 = ['orange', 'melon', 'strawberry']
fruit2 = ['watermelon', 'grape']
fruit2.remove('grape') # fruit2 = ['watermelon']
fruit1.append(fruit2) # fruit1 = ['orange', 'melon', 'strawberry', ['watermelon']]
print(fruit1)
3. 다음과 같이 코드를 작성했을 때, 실행 결과를 쓰시오.
fruits = ['apple', 'banana', 'cherry', 'grape', 'orange', 'strawberry', 'melon']
print(fruits[-3:], fruits[1::3])
- 답 및 해설.
['orange', 'strawberry', 'melon'] ['banana', 'orange']
=> fruits[-3:]은 원소 중 뒤에서 3번째(= -3번째 인덱스) 원소부터 끝까지 슬라이싱, fruits[1::3]은 1번째 인덱스부터 3칸 간격으로 끝까지 슬라이싱 하라는 의미이다. 즉 실행 결과는 ['orange', 'strawberry', 'melon'] ['banana', 'orange']
4. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
fruits = ['orange', 'lemon', 'strawberry', 'cherry']
number = ['1', '2', '3']
first, second, third = number
print(second * fruits.index('strawberry'))
① 22 ② 4 ③ 'strawberry' ④ 'cherry' ⑤ 'strawberrystrawberry'
- 답 및 해설
① 22
=> index() 함수는 리스트에서 괄호 안의 원소가 위치해있는 인덱스를 반환하는 함수다. 'strawberry'의 인덱스는 2.
second에는 number가 언패킹 되어 문자열 데이터 '2'가 할당된다. 문자열을 정수와 곱연산 하면, 문자열이 해당 정수만큼 반복된다. 즉 2가 2번 반복된 하므로 22가 출력된다.
6. 다음은 두 개의 숫자를 콘솔 창에서 입력받아 더하는 프로그램이다. 아래와 같이 실행했을 때 결과로 알맞은 것은?
user_input_a = input('첫 번째 값 : ')
user_input_b = input('두 번째 값 : ')
total = user_input_a + user_input_b
print(total)
① 12 ② 57 ③ '12' ④ '57' ⑤ None
- 답 및 해설
② 57
=> input()으로 입력받는 것들은 자료형 변환을 거치지 않으면 모두 str형이다. 문자열의 합연산은 문자열을 합쳐주는 것이므로 출력값은 57
7. 다음과 같은 코드 작성 시, 빈칸에 들어갈 수 없는 코드를 모두 고르시오
# 입력
alpha = ['a', 'b', 'c', 'd']
print(빈칸)
# 출력
['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd']
① alpha*2 ② alpha.remove(alpha) ③ alpha+alpha ④ alpha.append(alpha) ⑤ alpha*len(alpha[1:3])
- 답 및 해설
② alpha.remove(alpha), ④ alpha.append(alpha)
=> 출력값은, alpha에 2를 곱하거나(①, ⑤) alpha와 alpha를 더하거나(③), alpha에 차례로 'a', 'b', 'c', 'd'를 추가해주면 된다. 2번은 alpha 내에 alpha가 없으므로 실행시 error가 뜨고, 4번은 실행하면 alpha가 alpha의 하나의 원소로써 추가된다.
10. 다음과 같이 코드를 작성했을 때, 실행 결과는?
first = ['egg', 'salad', 'bread', 'soup', 'canafe']
second = ['fish', 'lamb', 'pork', 'beef', 'chicken']
third = ['apple', 'banana', 'orange', 'grape', 'mango']
order = [first, second, third]
john = [order[0][:-2], second[1::3], third[0]]
del john[2]
john.extend([order[2][0:1]])
print(john)
- 답 및 해설
# 입력
first = ['egg', 'salad', 'bread', 'soup', 'canafe']
second = ['fish', 'lamb', 'pork', 'beef', 'chicken']
third = ['apple', 'banana', 'orange', 'grape', 'mango']
order = [first, second, third]
# order : [['egg', 'salad', 'bread', 'soup', 'canafe'],
# ['fish', 'lamb', 'pork', 'beef', 'chicken'],
# ['apple', 'banana', 'orange', 'grape', 'mango']]
john = [order[0][:-2], second[1::3], third[0]]
# order[0][:-2] : ['egg', 'salad', 'bread']
# second[1::3] : ['lamb', 'chicken']
# third[0] : 'apple'
# john : [['egg', 'salad', 'bread'], ['lamb', 'chicken'], 'apple']
del john[2]
# john : [['egg', 'salad', 'bread'], ['lamb', 'chicken']]
john.extend([order[2][0:1]])
# order[2][0:1] : ['apple']
# john : [['egg', 'salad', 'bread'], ['lamb', 'chicken'], ['apple']]
print(john)
# 출력
[['egg', 'salad', 'bread'], ['lamb', 'chicken'], ['apple']]
12. 다음과 같이 코드를 작성했을 때, 실행 결과는?
list_a = [3,2,1,4]
list_b = list_a.sort()
print(list_a, list_b)
- 답 및 해설
# 입력
list_a = [3,2,1,4]
list_b = list_a.sort()
print(list_a, list_b)
# 출력
[1,2,3,4] None
.sort()는 값을 정렬하는 함수이다. 정렬할 뿐, 정렬한 값을 반환하지는 않는다. 따라서 list_b = list_a.sort() 부분에서 list_a는 정렬되어 [1,2,3,4]가 되지만 list_b는 list_a를 정렬하라 라는 명령을 실행하는 변수일 뿐 아무것도 할당되지 않았다.
그러므로 출력값은 [1,2,3,4] None이 나온다.
13. 다음과 같이 코드를 작성했을 때, 실행 결과는?
a=[5,7,3]
b=[3,9,1]
c=a+b
c=c.sort()
print(c)
- 답 및 해설
# 입력
a=[5,7,3]
b=[3,9,1]
c=a+b
c=c.sort()
print(c)
# 출력
None
12번 문제와 같은 문제다. c=a+b에서 c에는 [5,7,3,3,9,1]이라는 list형 데이터가 할당되었겠지만 c=c.sort() 코드가 실행되면, 변수 c는 sort() 함수가 된다. 아무것도 반환하지 않으므로, c를 출력하게 되면 None이 나온다.
'STUDY > Python' 카테고리의 다른 글
[데이터 과학을 위한 파이썬 프로그래밍_2판] 7. 자료구조 (3) | 2023.08.21 |
---|---|
[데이터 과학을 위한 파이썬 프로그래밍_2판] 5. 함수 (0) | 2023.08.18 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 4. 조건문과 반복문 (0) | 2023.08.17 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 3. 화면 입출력과 리스트(1) (0) | 2023.08.16 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 2. 변수와 자료형 (0) | 2023.08.16 |