본문 바로가기

PYTHON/초보자를 위한 파이썬 300제

08. 파이썬 반복문 171 ~ 180

for문을 이용해서 리스트를 사용하는 문제를 풀었다 몇몇 문제에서 막히기는 했지만 어찌저찌 성공~

 

https://wikidocs.net/25315

 

171 ~ 180

.answer {margin-top: 10px;margin-bottom: 50px;padding-top: 10px;border-top: 3px solid LightGray;bo…

wikidocs.net

 

print("-"*80)
# 2024 03 07 THU
# 171
# for문과 range문을 사용해 리스트의 데이터 출력
price_list = [32100, 32150, 32000, 32500]
for i in range(4):
    print(price_list[i])

# 172
# for문과 range문을 사용해 리스트의 데이터와 변수 출력
for i in range(4):
    print(i, price_list[i])

# 173
# for문과 range문을 사용해 리스트의 데이터와 변수 출력
for i in range(4):
    print(3-i, price_list[i])

# 174
# for문과 range문을 사용해 리스트의 데이터와 변수 출력
for i in range(3):
    next = i+1
    print(100+10*i, price_list[next])

# 175
# my_list 출력
my_list = ["가", "나", "다", "라"]
for i in range(3):
    next = i + 1
    print(my_list[i], my_list[next])

# 176
# my_lists 출력
my_lists = ["가", "나", "다", "라", "마"]
for i in range(3):
    n = i + 1
    m = i + 2
    print(my_lists[i], my_lists[n], my_lists[m])

# 177
# 반복문과 range함수를 사용해서 my_list 출력
my_list = ["가", "나", "다", "라"]
for i in [3, 2, 1]:
    n = i - 1
    print(my_list[i], my_list[n])

# 178
# 리스트의 우측값과 차분값을 화면에 출력
my_lists = [100, 200, 400, 800]
for i in [0, 1, 2]:
    n = i + 1
    print((my_lists[n]-my_lists[i]))

# 179
# 6일 기록 데이터의 3일 이동 평균을 계산하고 이를 화면에 출력
day_list = [100, 200, 400, 800, 1000, 1300]
for i in [0, 1, 2, 3]:
    n = i + 1
    m = i + 2
    print((day_list[i]+day_list[n]+day_list[m])/3)

# 180
# 리스트에 저장된 저가, 고가 정보를 이용해 변동폭을 리스트에 저장
low_prices = [100, 200, 400, 800, 1000]
high_prices = [150, 300, 430, 880, 1000]
volatility = []
for i in range(5):
    volatility += [(high_prices[i]-low_prices[i])]
print(volatility)

 

171 ~ 180 출력 결과

 

내가 몰랐던 문법

 

1. range()

175번부터 range() 함수를 사용할 때 괄호 안에 리스트의 길이에 해당하는 숫자를 넣으면 인덱스 오류가 났다. 그 이유는 for 안에 해당하는 리스트 요소와 다음 요소를 출력하기 위해 'n = i + 1'을 작성했는 데 이것이 마지막에 리스트의 길이보다 1이 더 길어진 것을 출력하게 해서 오류가 난것이었다. 이 문제를 해결하기 위해 +1 이 될 것을 생각해 range()에 들어갈 숫자를 줄이거나 range 대신 list를 사용해 i에 들어갈 숫자를 조절하였다. 하지만 깔끔한 답은 아닌 것 같으므로 조금 더 생각해봐야 할 것 같다.