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)
댓글