본문 바로가기
Python/점프 투 파이썬

제어문 연습문제

by k-mozzi 2021. 8. 18.
반응형
Preface

 

이번 연습문제를 풀며 코드엔 정답이 없다는 말이 무엇을 의미하는 것인지 알 수 있었다.

 

3번 문제를 해결하기 위해 내가 작성한 코드와 해설지에 있는 코드는 출력 결과만 같을 뿐 다른 내용을 담고 있다.

 

그러나 두 코드 모두 오류 없이 정상적으로 작동하며, 문제가 원하는 정답을 출력한다.

 

즉, 특정 문제 해결을 위한 코드는 매우 다양하게 작성될 수 있다는 것이다.

 

그러나 불필요하게 길고 복잡한 코드는 다른 사람이 이해하기(리팩토링하기) 어려우므로 필수적인 내용만을 포함하여 최대한 간결하게 코드를 작성할 수 있도록 고민하는 것이 중요한 것 같다.


1. 다음 코드의 결괏값은 무엇일까?

 

a = "Life is too short, you need python"

if "wife" in a: print("wife")
elif "python" in a and "you" not in a: print("python")
elif "shirt" not in a: print("shirt")
elif "need" in a: print("need")
else: print("none")

→ 답안 : "shirt"

→ 해설 : 답안과 동일

 


 

2. while문을 사용해 1부터 1000까지의 자연수 중 3의 배수의 합을 구해 보자.

 

→ 답안

result = 0
a = 1
while a <= 1000:
    if a % 3 == 0:
        result += a
    a += 1

print(result)

→ 해설 : 답안과 동일

 


 

3. while문을 사용하여 다음과 같이 별(*)을 표시하는 프로그램을 작성해 보자.

 

*
**
***
****
*****

→ 답안

a = 1
result = ''
while a < 6:
    a += 1
    result += '*'
    print(result)

→ 해설 : 나는 2번과 비슷하게 변수를 2개 선언한 후 a의 값이 6이 되기 전까지 result에 별을 하나식 추가해서 출력하는 방법으로 코드를 작성했지만, 해설에선 if문과 곱하기 연산자를 사용하여 코드를 작성했다.

i = 0
while True:
    i += 1 # while문 수행 시 1씩 증가
    if i > 5: break     # i 값이 5보다 크면 while문을 벗어난다.
    print('*' * i)     # i 값 개수만큼 *를 출력한다.

 


 

4. for문을 사용해 1부터 100까지의 숫자를 출력해 보자.

 

→ 답안

for a in range(1,101):
    print(a, end=' ')

→ 해설 : 답안과 동일

 


 

5. A 학급에 총 10명의 학생이 있다. 이 학생들의 중간고사 점수는 다음과 같다.

[70, 60, 55, 75, 95, 90, 80, 80, 85, 100]

for문을 사용하여 A 학급의 평균 점수를 구해 보자.

 

→ 답안

marks = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
result = 0
for mark in marks:
    result += mark

print(result / len(marks))

→ 해설 : 난 print문에서 result를 len(marks)로 나누었지만, 해설에선 average라는 변수를 따로 설정하여 result를 len(marks)로 나눈 후 마지막에 average만을 출력했다.

 


 

6. 리스트 중에서 홀수에만 2를 곱하여 저장하는 다음 코드가 있다.

 

numbers = [1, 2, 3, 4, 5]
result = []
for n in numbers:
    if n % 2 == 1:
        result.append(n*2)

위 코드를 리스트 내포(list comprehension)를 사용하여 표현해 보자.

 

→ 답안

# 홀수일 때만 2를 곱하여 출력하라
numbers = [1, 2, 3, 4, 5]
result = [n*2 for n in numbers if n % 2 == 1]
print(result)

→ 해설 : 답안과 동일

 

 

 

 

 

출처 : 03장 연습문제 - 점프 투 파이썬 (wikidocs.net)

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

728x90
반응형

'Python > 점프 투 파이썬' 카테고리의 다른 글

사용자 입출력, 파일 읽고 쓰기  (0) 2021.08.20
함수  (0) 2021.08.18
for문  (0) 2021.08.17
while문  (0) 2021.08.17
if문  (0) 2021.08.16

댓글