안녕하세요. Harry입니다.
현재 풀이중인 초보자를 위한 파이썬 300제 풀이를 진행하면서 나름대로 파악했던 문제 출제 의도와 풀이를 작성했습니다.
모든 풀이는 직접 Pycharm을 통해 에러없이 출력됨을 확인 후 작성했습니다.
초보자를 위한 파이썬 300제 풀이는 Wikidocs에 무료로 배포된 전자책을 활용했습니다/
[학습목표]
1. 각 문제별 요구하는 역량(출제의도)이 무엇인지 파악할 수 있다.
2. 각 문제별 요구하는 기술 및 기능을 활용하여 문제를 해결할 수 있다.
171 ~ 180
171
아래와 같이 리스트의 데이터를 출력하라. 단, for문과 range문을 사용하라.
- 요구역량 : range의 범위를 변수로 대입 후 특정 리스트의 요소를 인덱싱하여 출력할 수 있는가?
price_list = [32100, 32150, 32000, 32500]
32100
32150
32000
32500
정답확인price_list = [32100, 32150, 32000, 32500]
for i in range(4):
print(price_list[i])
#더 좋은 코드/답지
for i in range(len(price_list)):
print(price_list[i])
172
아래와 같이 리스트의 데이터를 출력하라. 단, for문과 range문을 사용하라.
- 요구역량 : for문,range문,enumerate함수를 활용하여 여러 변수를 동시에 출력할 수 있는가?
일단, for문 변수에서 값을 1개 이상 넣는 것을 처음봤고, 된다는 것도 처음 알았다.
enumerate()함수는 기본적으로 (인덱스,원소)로 이루어진 튜플을 생성해주기 때문에, 위와 같은 문제에서 활용할 수 있다.
price_list = [32100, 32150, 32000, 32500]
0 32100
1 32150
2 32000
3 32500
정답확인price_list = [32100, 32150, 32000, 32500]
for i in range(4):
print(i,price_list[i])
#답지
price_list = [32100, 32150, 32000, 32500]
for i, data in enumerate(price_list):
print(i, data)
173
아래와 같이 리스트의 데이터를 출력하라. 단, for문과 range문을 사용하라.
- 요구역량 : 두개 요소를 출력할 때, for문의 변수 값과 변수값을 인덱스로 활용하여 출력할 수 있는가?
3이라는 숫자보다는 일반적인 형태로 아래와 같이 코딩하는게 좋다고 합니다. 리스트 요소의 개수가 바뀌어도 대응할 수 있기 때문입니다.
price_list = [32100, 32150, 32000, 32500]
3 32100
2 32150
1 32000
0 32500
정답확인price_list = [32100, 32150, 32000, 32500]
for i in range(4):
print(3-i,price_list[i])
#답지
for i in range(len(price_list)):
print((len(price_list) - 1) - i, price_list[i])
174
아래와 같이 리스트의 데이터를 출력하라. 단, for문과 range문을 사용하라.
- 요구역량 : 두개 요소를 출력할 때, for문의 변수 값과 변수값을 인덱스로 활용하여 출력할 수 있는가?
price_list = [32100, 32150, 32000, 32500]
100 32150
110 32000
120 32500
정답확인price_list = [32100, 32150, 32000, 32500]
for i in range(4):
if i < 3:
print(100 + 10*i, price_list[i+1])
#답지
price_list = [32100, 32150, 32000, 32500]
for i in range(1, 4):
print(90 + 10 * i, price_list[i])
175
my_list를 아래와 같이 출력하라.
- 요구역량 : 인덱스 번호에 따라 리스트 내 요소를 원하는 만큼, 원하는 순서대로 출력할 수 있는가?
range로 설정한 정수 범위를 출력한 리스트 요소의 인덱스 번호에 삽입하여 활용하면 됩니다.
답지에서 말한대로, 작성할 수 있는 방법은 매우 많습니다만, 리스트의 개수가 바뀌어도 코드가 깨지지 않도록 코딩하는 것이 좋습니다.
ex) list = [1,2,3]
range(3) 보다는, range(len(list))이 낫다는 의미입니다.
my_list = ["가", "나", "다", "라"]
가 나
나 다
다 라
정답확인
my_list = ["가", "나", "다", "라"]
for i in range(len(my_list)-1):
print(my_list[i],my_list[i+1])
#답지
for i in range( 1, len(my_list) ) :
print(my_list[i-1], my_list[i])
176
리스트를 아래와 같이 출력하라.
- 요구역량 : 인덱스 번호에 따라 리스트 내 요소를 원하는 만큼, 원하는 순서대로 출력할 수 있는가?
175번과 동일하게 작성하면 됩니다.
my_list = ["가", "나", "다", "라", "마"]
가 나 다
나 다 라
다 라 마
정답확인my_list = ["가", "나", "다", "라", "마"]
for i in range(len(my_list)-2):
print(my_list[i], my_list[i+1], my_list[i+2])
#답지(다른 표현)
for i in range( 1, len(my_list) - 1 ):
print(my_list[i-1], my_list[i], my_list[i+1])
#답지(다른 표현)
for i in range( 2, len(my_list) ):
print(my_list[i-2], my_list[i-1], my_list[i])
177
반복문과 range 함수를 사용해서 my_list를 아래와 같이 출력하라.
- 요구역량 : 인덱스 번호에 따라 리스트 내 요소를 원하는 만큼, 원하는 순서대로 출력할 수 있는가?
답지가 더 좋은 코드 같습니다,, 리스트 개수가 바뀌어도 활용가능하니깐요.
range(3,0,-1)로 표현한다면, 3,2,1로 출력됩니다.
range 메서드도 [::-1] 과 같이 3번째 파라미터에 -1을 넣으면 역순으로 표현되네요.
my_list = ["가", "나", "다", "라"]
라 다
다 나
나 가
정답확인my_list = ["가", "나", "다", "라"]
for i in range(len(my_list)-1):
print(my_list[3-i],my_list[2-i])
#답지
for i in range(len(my_list) - 1, 0, -1):
print(my_list[i], my_list[i-1])
178
리스트에는 네 개의 정수가 저장되어 있다. 각각의 데이터에 대해서 자신과 우측값과의 차분값을 화면에 출력하라.
- 요구역량 : 인덱스 번호에 따라 리스트 내 요소를 원하는 만큼, 원하는 순서대로 출력할 수 있는가?
저도 답지가 요구한대로 리스트 개수에 대응할 수 있는 코드로 작성했습니다.
my_list = [100, 200, 400, 800]
예를들어 100을 기준으로 우측에 위치한 200과의 차분 값를 화면에 출력하고, 200을 기준으로 우측에 위치한 400과의 차분값을 화면에 출력한다. 이어서 400을 기준으로 우측에 위치한 800과의 차분값을 화면에 출력한다.
100
200
400
정답확인my_list = [100, 200, 400, 800]
for i in range(len(my_list)-1):
print(my_list[i+1]-my_list[i])
179
리스트에는 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]
for i in range(len(my_list)-2):
print((my_list[i]+my_list[i+1]+my_list[i+2])/3)
#답지
for i in range(1, len(my_list) - 1):
print(abs(my_list[i-1] + my_list[i] + my_list[i+1]) / 3)
180
리스트에 5일간의 저가, 고가 정보가 저장돼 있다. 고가와 저가의 차를 변동폭이라고 정의할 때, low, high 두 개의 리스트를 사용해서 5일간의 변동폭을 volatility 리스트에 저장하라.
- 요구역량 : 리스트를 새로 생성하여 For문에서 생성한 값을 생성한 리스트로 삽입할 수 있는가?
이건,,,잘 모르겠습니다...답이 저렇게 나오는게 맞나?? 저는 5일치가 한번에 나온 값인 [50, 100, 30, 80, 0] 만 나오는 줄 알았는데,,
좀 더 공부가 필요한 부분입니다.
low_prices = [100, 200, 400, 800, 1000]
high_prices = [150, 300, 430, 880, 1000]
정답확인low_prices = [100, 200, 400, 800, 1000]
high_prices = [150, 300, 430, 880, 1000]
volatility = []
for i in range(5) :
volatility.append(high_prices[i] - low_prices[i])
print(volatility)
점점 뒤로 갈수록 어려워지네요..!
감사합니다.
'Coding Test > 초보자를 위한 파이썬 300제' 카테고리의 다른 글
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(191~200)_12.20 (0) | 2022.12.20 |
---|---|
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(181~190)_12.20 (0) | 2022.12.20 |
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(161~170)_12.20 (0) | 2022.12.20 |
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(151~160)_12.20 (0) | 2022.12.20 |
[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(141~150)_12.20 (0) | 2022.12.20 |