본문 바로가기
Programming/Python

[Python] 점프 투 파이썬 연습문제 풀이 3장

by EunjiBest 2022. 3. 1.

[Python] 점프 투 파이썬 연습문제 풀이 3장

 

 

 

Q1. 다음 코드의 결괏값은?

 

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")

 

a안에 wife가 있으면 wife를 출력해라 -> wife 없음(Flase, 다음줄)

a안에 python이 있고, you가 있지 않으면 python을 출력해라 -> python과 you 모두있음(Flase, 다음줄)

a안에 shirt가 있지 않으면 shirt를 출력해라 -> shirt 없음(True, 출력)

 

답 : shirt

 

 

 

 

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

 

result = 0

i = 1
while i <= 1000:
  if # your code here.
  	result += i
  i += 1
>>> print(result)
166833

3의 배수는 3으로 나누어 떨어지는 수이기 때문에

i가 1000까지 하나씩 while문을 돌면서 3과 나누었을 때 몫이 0이어야 한다.

 

답 : i % 3 == 0: , 166833

 

 

 

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

 

*
**
***
****
*****
i = 0
while = True:
  i += 1
  if #your code here:
    break
  print(#your code here)

i가 1씩 증가하는 while문을 돌면서

i가 5보다 작으면 *을 i의 수와 곱해 하나씩 출력한다.

 

답 : i > 5, '*' * i

 

 

Q4. for문을 사용해서 1부터 100까지의 숫자를 출력해라.

 

for i in #your code here:
  print(i)

for문은 range함수와 하께 사용이 된다.

range(시작 숫자, 끝 숫자 미만)

 

답 : range(1,101)

 

 

 

Q5. A 학급에 총 10명의 학생이 있다. 이 학생들의 중간고사 점수는 다음과 같다.
for문을 사용하여 A학급의 평균 점수를 구해보자.

 

[ 70, 60, 55, 75, 95, 90, 80, 80, 85, 100 ]
A = [70,60,55,75,95,90,80,80,85,100]
total = 0

for score in A:
  total += #your code here
average = #youre code here
print(average)

 

for문으로 A의 토탈 점수를 구한다.

토탈 점수 나누기, A의 길이(len(A))를 구한다.

 

답 : socre, total / len(A)

 

 

Q6. 리스트 중에서 홀수에만 2를 곱하여 저장하는 다음과 같은 코드가 있다.
위 코드를 리스트 내포(list comprehension)을 사용하여 표현해보자.

 

numbers = [1,2,3,4,5]

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

위 코드를 해석해보자면,

numbers라는 리스트 1,2,3,4,5가 있다.

결과값(result)을 넣을 리스트를 만들어준다.

numbers의 리스트 1,2,3,4,5를 n에 넣고 차례대로 for문에 돌려준다.

 

1) 만약 n이 1일 때 %2의 값이 1이므로,

result에 1*2 = 2가 추가된다.

2) 만약 n이 2일 때 %2의 값이 0이므로

result에 추가 되지 않는다.

3) 만약 n이 3일 때 %2의 값이 1이므로,

result에 3*2 = 6이 추가된다.

4) 만약 n이 4일 때 %2의 값이 2이므로,

result에 추가 되지 않는다.

5) 만약 n이 5일 때 %2의 값이 1이므로,

result에 5*2 = 10이 추가된다.

 

따라서 결과는 [2,6,10]이라는 리스트가 만들어지는 코드이다.

 

그럼 문제대로 위 코드를 

리스트 내포(list comprehension)을 사용해서 표현하자면

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

이렇게 표현할 수 있다.

 

리스트 내포란, 리스트 안에 for문을 포함하는 것이다.

첫 번째 코드보다 훨씬 간결하고 쉽게 코드를 짤 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글