본문 바로가기
Coding/초보자를 위한 파이썬 300제

초보자를 위한 파이썬 300제 // 179 index()

by 포스트it 2021. 2. 8.
728x90
반응형

 

문제

리스트에는 6일 간의 종가 데이터가 저장되어 있다. 종가 데이터의 3일 이동 평균을 계산하고 이를 화면에 출력하라.

my_list = [100, 200, 400, 800, 1000, 1300]

첫 번째 줄에는 100, 200, 400의 평균값이 출력된다. 두 번째 줄에는 200, 400, 800의 평균값이 출력된다. 같은 방식으로 나머지 데이터의 평균을 출력한다.

233.33333333333334
466.6666666666667
733.3333333333334
1033.3333333333333

내풀이

my_list = [100, 200, 400, 800, 1000, 1300]
# print(sum(my_list[0:3])/3)
# print(sum(my_list[1:4])/3)
# print(sum(my_list[2:5])/3)
# print(sum(my_list[3:6])/3)

for i in range(4):
    print((my_list[i] + my_list[i+1] + my_list[i+2])/3)
    
결과값
233.33333333333334
466.6666666666667
733.3333333333334
1033.3333333333333

정답

print 함수와 인덱싱만으로 결과를 표현해봅니다.

print(abs(my_list[0] + my_list[1] + my_list[2])/3)
print(abs(my_list[1] + my_list[2] + my_list[3])/3)
print(abs(my_list[2] + my_list[3] + my_list[4])/3)
print(abs(my_list[3] + my_list[4] + my_list[5])/3)

인덱스 간의 관계를 파악했다면 기준으로 사용할 인덱스를 결정합니다. 이번에는 가운데에 있는 인덱스를 활용해서 for문을 작성해 보겠습니다.

for i in [1, 2, 3, 4]:
    print(abs(my_list[i-1] + my_list[i] + my_list[i+1]) / 3)

다음으로 코드를 다듬어 줍니다.

for i in range(1, len(my_list) - 1):
    print(abs(my_list[i-1] + my_list[i] + my_list[i+1]) / 3)

인덱스로만 표현하려다가 문제가 바란건 for문을 활용한거 같아서 다시 풀었다...ㅋㅋ

 

728x90
반응형

댓글