일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 코딩
- 파이썬 #python #코딩 #for문 #for #이론
- 딕셔너리
- 파이썬
- 파이썬 #리스트 #python #list #문제 #예제 #풀이
- SQLD #SQL #에스큐엘디 #에스큐엘 #자격증 #2023년 #시험일정 #시험준비 #일정 #SQL개발자 #개발 #코딩 #분석
- 연산
- python #파이썬 #코딩 #예제 #풀이
- python #파이썬 #코딩 #초보 #개발 #예제 #문제 #풀이 #리스트 #튜플
- pythob
- 정보처리기사 #개발자 #코딩 #자격증 #IT자격증 #프로그래밍 #초보 #공부 #시험 #일정 #2023년 #정처기 #시험정보
- 파이썬 #python #for #예제 #문제 #풀이 #코딩 #공부
- 예제
- 파이썬 #python #코딩 #개발 #초보 #예제 #문제 #풀이
- PYTHON
- python #파이썬 #분기문 #if #else #코딩 #초보 #개발 #예제 #문제 #풀이
- 파이썬 #Python #코딩 #리스트 #문제 #list #풀이 #예제
- 파이썬 #python #코딩 #문제 #풀이 #예제
- 파이썬 #python #코딩 #for #tuple #튜플 #예제 #문제 #풀이 #기초
- list
- 기초
- 문제
- 풀이
- DICTIONARY
- 파이썬 #python #기초 #코딩 #예제 #문제 #풀이 #공부 #초보 #개발
- 초보
- 파이썬 #python #for #예제 #문제 #풀이 #기초 #코딩
- python #파이썬 #개발 #코딩 #초보 #예제 #문제 #풀이
- 파이썬 #python #코딩 #초보 #예제 #문제풀이
- 실습
- Today
- Total
왕초보 코딩 개발 일지 블로그
08. 파이썬 반복문 (191~200) - 풀이중 본문
출처 : https://wikidocs.net/78565
191 ~ 200
.answer {margin-top: 10px;margin-bottom: 50px;padding-top: 10px;border-top: 3px solid LightGray;bo…
wikidocs.net
191 (2차원 리스트 : for 문을 2번 쓰자!!)
data에는 매수한 종목들의 OHLC (open/high/low/close) 가격 정보가 바인딩 되어있다.
data = [
[ 2000, 3050, 2050, 1980],
[ 7500, 2050, 2050, 1980],
[15450, 15050, 15550, 14900]
]
수수료를 0.014 %로 가정할 때, 각 가격에 수수료를 포함한 가격을 한라인에 하나씩 출력하라.
2000.28
3050.427
2050.2870000000003
...
data = [
[ 2000, 3050, 2050, 1980],
[ 7500, 2050, 2050, 1980],
[15450, 15050, 15550, 14900]
]
for line in data:
for column in line:
print(column * 1.00014)
위 코드는 2차원 리스트인 data에 접근하여 각 원소에 1.00014를 곱한 값을 출력하는 코드입니다.
첫 번째 for문에서는 data 리스트의 각 행(line)에 접근합니다.
두 번째 for문에서는 각 행의 원소(column)에 접근합니다. 이때 column 변수에는 각 원소의 값이 저장됩니다.
마지막으로, print 함수를 이용하여 각 원소의 값에 1.00014를 곱한 값을 출력합니다. 이때 print(column * 1.00014)의 결과는 해당 원소에 1.00014를 곱한 값이며, 소수점 이하 5자리까지 출력됩니다.
192
191번의 출력 결과에 행단위로 "----" 구분자를 추가하라.
2000.28
3050.427
2050.2870000000003
1980.2772
----
7501.05
2050.2870000000003
2050.2870000000003
1980.2772
----
15452.163
15052.107
15552.177
14902.086000000001
----
data = [
[ 2000, 3050, 2050, 1980],
[ 7500, 2050, 2050, 1980],
[15450, 15050, 15550, 14900]
]
for a in data:
for b in a:
print(b * 1.00014)
print("-" * 4)
193
192 번 문제의 결괏값을 result 이름의 리스트에 1차원 배열로 저장하라.
>> print(result)
[2000.28, 3050.427, 2050.2870000000003, 1980.2772, 7501.05, 2050.2870000000003, 2050.2870000000003, ...]
data = [
[ 2000, 3050, 2050, 1980],
[ 7500, 2050, 2050, 1980],
[15450, 15050, 15550, 14900]
]
result = []
for a in data:
for b in a:
result.append(b * 1.00014)
print(result)
[2000.28, 3050.427, 2050.2870000000003, 1980.2772, 7501.05, 2050.2870000000003, 2050.2870000000003, 1980.2772, 15452.163, 15052.107, 15552.177, 14902.086000000001]
194
191번 문제의 결괏값을 result 이름의 리스트에 2차원 배열로 저장하라. 저장 포맷은 아래와 같다. 각 행에 대한 데이터끼리 리스트에 저장되어야 한다.
>> print(result)
[
[2000.28, 3050.427, 2050.2870000000003, 1980.2772],
[7501.05, 2050.2870000000003, 2050.2870000000003, 1980.2772],
[15452.163, 15052.107, 15552.177, 14902.086000000001]
]
data = [
[ 2000, 3050, 2050, 1980],
[ 7500, 2050, 2050, 1980],
[15450, 15050, 15550, 14900]
]
result = []
for a in data:
sub = []
for b in a:
sub.append(b * 1.00014)
result.append(sub)
print(result)
[2000.28, 3050.427, 2050.2870000000003, 1980.2772, 7501.05, 2050.2870000000003, 2050.2870000000003, 1980.2772, 15452.163, 15052.107, 15552.177, 14902.086000000001]
위 코드는 2차원 리스트인 data의 모든 원소에 1.00014를 곱한 결과를 result 리스트에 저장하는 코드입니다.
첫 번째 for문에서는 data 리스트의 각 행(a)에 접근합니다. 두 번째 for문에서는 각 행의 원소(b)에 접근합니다. 이때 b 변수에는 각 원소의 값이 저장됩니다.
빈 리스트인 sub를 선언하고, sub.append(b * 1.00014)를 이용하여 b의 값을 1.00014를 곱한 결과를 sub 리스트에 추가합니다.
이 때 각 행(a)가 끝날 때마다 sub는 빈 리스트로 처리되어야 한다. 그래야 다음 행(a)이 나오고 새로운 리스트에 요소(b)가 들어갈 수 있다.
마지막으로, result.append(sub)를 이용하여 sub 리스트를 result 리스트에 추가합니다. 이 과정을 모든 원소에 대해 반복하면 data 리스트의 모든 원소에 1.00014를 곱한 결과가 result 리스트에 저장됩니다.
print(result)를 실행하면, result 리스트가 출력됩니다. 이때, data 리스트와 같은 크기의 2차원 리스트가 출력되며, 각 원소에는 해당 값에 1.00014를 곱한 결과가 저장되어 있습니다.
아래는 주어진 코드의 실행순서도입니다:
- data라는 이름의 2차원 리스트를 정의합니다.
- result라는 빈 리스트를 정의합니다.
- for문을 이용하여 data 리스트의 각 행(a)에 대해 반복합니다.
- 각 행(a)마다 새로운 빈 리스트인 sub를 정의합니다.
- for문을 이용하여 각 행(a)의 원소(b)에 대해 반복합니다.
- b의 값에 1.00014를 곱한 결과를 sub 리스트에 추가합니다.
- 각 행(a)의 모든 원소에 대해 5~6단계를 반복한 후, sub 리스트를 result 리스트에 추가합니다.
- 모든 행(a)에 대해 3~7단계를 반복한 후, result 리스트가 완성됩니다.
- print(result)를 호출하여 result 리스트를 출력합니다.
따라서, result 리스트는 data 리스트와 같은 모양의 2차원 리스트이며, 각 원소에는 해당 값에 1.00014를 곱한 결과가 저장되어 있습니다.
195
ohlc 리스트에는 시가(open), 고가 (high), 저가 (low) , 종가(close)가 날짜별로 저장돼 있다. 화면에 종가데이터를 출력하라.
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
100
190
310
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
for i in ohlc[1:] :
print(i[3])
100
190
310
196
ohlc 리스트에는 시가(open), 고가 (high), 저가 (low) , 종가(close)가 날짜별로 저장돼 있다. 종가가 150원보다 큰경우에만 종가를 출력하라.
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
190
310
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
for i in ohlc[1:]:
if i[3] > 150:
print(i[3])
197
ohlc 리스트에는 시가(open), 고가 (high), 저가 (low) , 종가(close)가 날짜별로 저장돼 있다. 종가가 시가 보다 크거나 같은 경우에만 종가를 출력하라.
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
100
310
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
for i in ohlc[1:]:
if i[3] >= i[0]:
print(i[3])
198
ohlc 리스트에는 시가(open), 고가 (high), 저가 (low) , 종가(close)가 날짜별로 저장돼 있다. 고가와 저가의 차이를 변동폭으로 정의할 때 변동폭을 volatility 이름의 리스트에 저장하라.
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
>> print(volatility)
[40, 30, 10]
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
volatility = []
for i in ohlc[1:]:
volatility.append(abs(i[1] - i[2]))
print(volatility)
199
리스트에는 3일 간의 ohlc 데이터가 저장돼 있다. 종가가 시가보다 높은 날의 변동성 (고가 - 저가)을 화면에 출력하라.
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
종가가 시가보다 높은 거래일의 OHLC는 [300, 310, 300, 310] 이다. 따라서 이 거래일의 변동성은 10 (310 - 300)이다.
10
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
for i in ohlc[1:]:
if i[3] > i[0]:
volatility = i[1] - i[2]
print(volatility)
200
리스트에는 3일 간의 ohlc 데이터가 저장돼 있다. 시가에 매수해서 종가에 매도 했을 경우 총 수익금을 계산하라.
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
1일차 수익 0원 (100 - 100), 2일차 수익 -10원 (190 - 200), 3일차 수익 10원 (310 - 300) 이다.
0
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
total = []
for row in ohlc[1:]:
total.append(row[3]-row[0])
sum(total)
위 코드는 ohlc 리스트에서 각 행의 첫 번째와 네 번째 원소를 이용하여 차이를 구하고, 그 차이의 합을 계산하는 코드입니다.
첫 번째 행은 헤더 정보를 담고 있기 때문에, ohlc[1:]을 이용하여 첫 번째 행을 제외한 모든 행에 대해 반복합니다. for문에서는 row 변수에 각 행을 할당하고, 이후 row[3]-row[0]을 이용하여 각 행의 첫 번째 원소와 네 번째 원소의 차이를 구합니다. 이 값을 total 리스트에 추가합니다.
마지막으로, sum(total)을 실행하여 total 리스트의 모든 원소의 합을 구합니다. 이 값을 반환합니다.
따라서, 위 코드의 실행 결과는 ohlc 리스트에서 두 번째부터 네 번째까지 각 행의 첫 번째 원소와 네 번째 원소의 차이를 구한 값의 합입니다.
<다른 풀이>
ohlc = [["open", "high", "low", "close"],
[100, 110, 70, 100],
[200, 210, 180, 190],
[300, 310, 300, 310]]
profit = 0
for row in ohlc[1:]:
profit += (row[3] - row[0])
위 코드는 ohlc라는 2차원 리스트에서 각 행의 첫 번째 원소(open)를 매입가, 마지막 원소(close)를 매도가로 두고, 매수-매도를 수행하여 얻는 이익을 계산하는 코드입니다.
먼저 ohlc 리스트는 시가(open), 고가(high), 저가(low), 종가(close) 정보를 담고 있는 2차원 리스트입니다.
for문에서는 첫 번째 행을 제외한 나머지 행(ohlc[1:])에 대해 반복문을 실행합니다. 이때, row 변수는 각 행을 나타냅니다.
반복문 내부에서는, 각 행(row)의 첫 번째 원소(open)을 매입가로, 마지막 원소(close)를 매도가로 둡니다. 따라서 매수-매도로 얻는 이익은 row[3] - row[0]입니다. 이익을 모두 더한 값을 profit 변수에 누적하여 저장합니다.
반복문이 모두 실행된 후, profit 변수에는 ohlc 리스트의 두 번째 행부터 마지막 행까지 각 행의 매수-매도로 얻는 이익이 누적된 값이 저장됩니다.
따라서, profit 변수를 출력하면 ohlc 리스트의 매수-매도로 얻는 총 이익이 출력됩니다.
'Python 공부 > 파이썬 300제 풀이 연습' 카테고리의 다른 글
06. 파이썬 딕셔너리 (091 ~ 100) (0) | 2023.04.12 |
---|---|
06. 파이썬 딕셔너리 (081 ~ 090) (0) | 2023.04.12 |
08. 파이썬 반복문 (181~190) (0) | 2023.04.11 |
08. 파이썬 반복문 (171~180) (0) | 2023.04.11 |
08. 파이썬 반복문 (161~170) (0) | 2023.04.11 |