Development Tip

Python 강좌 08 - 반복문

MoonLight314 2024. 12. 23. 11:06
728x90

안녕하세요, MoonLight입니다.

이번 Post에서는 Python의 반복문에 대해서 알아보도록 하겠습니다.

 

 

1. 기본 사항

Python에서 반복문은 프로그램 흐름을 제어하고, 특정 작업을 여러 번 실행하는 데 사용됩니다.

Python은 주로 for문과 while문, 두 가지 반복문 구조를 제공합니다.

또한, 반복문을 제어하는 여러 기능도 함께 제공됩니다.

 

1.1. for 문

for 문은 시퀀스(List, Tuple, 문자열, range 등)나 반복 가능한 객체(iterable)를 순회하면서 반복 작업을 실행하는 데 사용됩니다.

1.1.1. 기본 사용법

# List 순회
fruits = ["apple", "banana", "cherry"]

for fruit in fruits:
    print(fruit)

출력:
apple
banana
cherry

위 예제에서 for 문은 fruits List를 순차적으로 반복하면서 각 항목을 fruit 변수에 대입하여 출력합니다.

1.1.2. range()와 함께 사용

range() 함수는 지정된 범위의 숫자를 생성하는 함수입니다. 주로 반복문에서 특정 범위만큼 반복할 때 사용됩니다.

# 0부터 4까지 반복
for i in range(5):
    print(i)

출력:
0
1
2
3
4

range()의 사용법

range(stop) : 0부터 stop-1까지 반복

range(start, stop) : start부터 stop-1까지 반복

range(start, stop, step) : start부터 stop-1까지, step 간격으로 반복

# 2부터 10까지 2씩 증가
for i in range(2, 11, 2):
    print(i)

출력:
2
4
6
8
10

1.1.3. 문자열 순회

문자열도 시퀀스이기 때문에 for문으로 순회할 수 있습니다.

word = "hello"

for char in word:
    print(char)

출력:
h
e
l
l
o

1.1.4. enumerate() 사용

enumerate()는 반복하면서 인덱스와 값을 함께 반환하는 함수입니다. List나 Tuple을 순회할 때 유용합니다.

fruits = ["apple", "banana", "cherry"]

for index, fruit in enumerate(fruits):
    print(index, fruit)

출력:
0 apple
1 banana
2 cherry

 

1.2. while 문

while 문은 조건식이 True인 동안 반복 작업을 실행하는 반복문입니다. 주로 조건이 불확실하거나 반복 횟수를 미리 알 수 없을 때 사용됩니다.

1.2.1. 기본 사용법

# 0부터 4까지 반복
count = 0
while count < 5:
    print(count)
    count += 1

출력:
0
1
2
3
4

1.2.2. 무한 루프

while 문은 조건식이 항상 True일 경우 무한히 반복됩니다. 이때는 break 문으로 반복을 종료할 수 있습니다.

# 무한 반복 예시
while True:
    user_input = input("Enter 'exit' to stop: ")
    if user_input == 'exit':
        break
    print(f"You entered: {user_input}")

 

1.3. 반복문 제어문

반복문은 특정 조건에서 반복을 제어할 수 있는 여러 제어문을 제공합니다.

1.3.1. break

break는 반복문을 즉시 종료하고, 반복문 외부로 제어를 넘깁니다.

# 1부터 10까지 반복, 5에 도달하면 종료
for i in range(1, 11):
    if i == 5:
        break
    print(i)

출력:
1
2
3
4

1.3.2. continue

continue는 현재 반복을 건너뛰고, 다음 반복으로 넘어가게 합니다.

# 1부터 10까지 반복, 짝수만 출력
for i in range(1, 11):
    if i % 2 != 0:
        continue
    print(i)

출력:
2
4
6
8
10

1.3.3. else와 함께 사용

Python에서는 forwhile 루프에 else를 사용할 수 있습니다!

처음 보면 생소할 수 있지만, Python에서는 루프가 정상적으로 종료될 경우 else 블록이 실행되도록 설계되어 있습니다.

# 1부터 10까지 반복, 10을 출력하면 반복 종료
for i in range(1, 11):
    if i == 5:
        break
    print(i)
    else:
        print("Loop completed successfully")

출력:
1
2
3
4

else는 break로 종료되지 않았을 때만 실행됩니다.

1.4. 중첩된 반복문

반복문 안에 또 다른 반복문을 사용할 수 있습니다. 예를 들어 2D List에서 각 요소를 순회할 때 유용합니다.

# 2D List 순회
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for row in matrix:
    for element in row:
        print(element, end=' ')
    print()

출력:
1 2 3
4 5 6
7 8 9

 

 

1.5. List Comprehension

List Comprehension은 for 문을 한 줄로 표현하는 방법으로, 주로 List를 생성할 때 사용됩니다. 이 방법은 간결하고 효율적입니다.

# 0부터 9까지의 제곱수를 List로 만들기
squares = [x**2 for x in range(10)]
print(squares)

출력:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

조건 추가하기

List Comprehension은 조건을 추가하여 필터링할 수도 있습니다.

# 짝수의 제곱수만 List로 만들기
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)

출력:
[0, 4, 16, 36, 64]

 

1.6. for와 while 문 선택 기준

for 문

반복 횟수가 명확하거나 시퀀스를 순차적으로 처리할 때 사용합니다. 예를 들어 List, Tuple, 문자열 등을 순회할 때 적합합니다.

while 문

반복 횟수가 명확하지 않거나 조건에 맞을 때까지 반복해야 할 경우 사용합니다. 예를 들어, 사용자 입력을 받을 때나 특정 조건을 만족할 때까지 반복할 때 유용합니다.

 

1.7. 결론

for 문은 시퀀스를 순회하거나 반복 범위가 명확할 때 유용하고, while 문은 조건을 만족할 때까지 반복해야 할 때 적합합니다.

break, continue, else 등의 제어문을 활용하여 반복문을 더욱 효율적으로 제어할 수 있습니다.

List Comprehension은 Code를 간결하게 작성할 수 있는 강력한 도구입니다.

 

 

2. 예제

 

Ex. 1. for문의 실행결과를 예측하라.

과일 = ["사과", "귤", "수박"]
for 변수 in 과일:
    print(변수)

출력:
사과
귤
수박

 

 

Ex. 2. for문의 실행결과를 예측하라.

과일 = ["사과", "귤", "수박"]
for 변수 in 과일:
    print("#####")

출력:
#####
#####
#####

 

 

Ex. 3. 다음 for 문과 동일한 기능을 수행하는 Code를 작성하세요.

for 변수 in ["A", "B", "C"]:
    print(변수)
print("A")
print("B")
print("C")

출력:
A
B
C

 

 

 

Ex. 4. for문을 풀어서 동일한 동작을하는 Code를 작성하라.

for 변수 in ["A", "B", "C"]:
    print("출력:", 변수)

print("출력:", "A")
print("출력:", "B")
print("출력:", "C")

출력:
출력: A
출력: B
출력: C

 

 

 

 

Ex. 5. for문을 풀어서 동일한 동작을 하는 Code를 작성하라.

for 변수 in ["A", "B", "C"]:
    b = 변수.lower()
    print("변환:", b)

var = "A"
print("변환:", var.lower())
var = "B"
print("변환:", var.lower())
var = "C"
print("변환:", var.lower())

출력:
변환: a
변환: b
변환: c

 

 

 

 

 

Ex. 6. 다음 Code를 for문으로 작성하라.

변수 = 10
print(변수)
변수 = 20
print(변수)
변수 = 30
print(변수)

for v in [10,20,30]:
    print(v)

출력:
10
20
30

 

 

 

 

Ex. 7. 다음 Code를 for문으로 작성하라.

print(10)
print(20)
print(30)

 

for v in [10,20,30]:
    print(v)

출력:
10
20
30

 

 

 

 

Ex. 8. 다음 Code를 for문으로 작성하라.

print(10)
print("-------")
print(20)
print("-------")
print(30)
print("-------")

for v in [10,20,30]:
    print(v)
    print("-------")

출력:
10
-------
20
-------
30
-------

 

 

 

 

 

Ex. 9. 다음 Code를 for문으로 작성하라.

print("++++")
for v in [10,20,30]:
    print(v)

출력:
++++
10
20
30

 

 

 

 

Ex. 10. 다음 Code를 for문으로 작성하라.

print("-------")
print("-------")
print("-------")
print("-------")
for _ in range(4):
    print("-------")

출력:
-------
-------
-------
-------

 

 

Ex. 11. 다음과 같이 판매가가 저장된 List가 있을 때 부가세가 포함된 가격을 for 문을 사용해서 화면에 출력하라. 단 부가세는 10원으로 가정한다.

List = [100, 200, 300]

List = [100, 200, 300]

for v in List:
    print(v+10)

출력:
110
210
310

 

 

Ex. 12. for 문을 사용해서 List에 저장된 값을 다음과 같이 출력하라.

List = ["김밥", "라면", "튀김"]
오늘의 메뉴: 김밥
오늘의 메뉴: 라면
오늘의 메뉴: 튀김
List = ["김밥", "라면", "튀김"]

for v in List:
    print("오늘의 메뉴: {}".format(v))

출력:
오늘의 메뉴: 김밥
오늘의 메뉴: 라면
오늘의 메뉴: 튀김

 

Ex. 13. List에 주식 종목이름이 저장돼 있다.

List = ["SK하이닉스", "삼성전자", "LG전자"]

저장된 문자열의 길이를 다음과 같이 출력하라.

6

4

4

List = ["SK하이닉스", "삼성전자", "LG전자"]

for v in List:
    print(len(v))

출력:
6
4
4

 

 

Ex. 14. List에는 동물이름이 문자열로 저장돼 있다.

List = ['dog', 'cat', 'parrot']

동물 이름과 글자수를 다음과 같이 출력하라.

dog 3

cat 3

parrot 6

List = ['dog', 'cat', 'parrot']

for l in List:
    print("{} {}".format(l,len(l)))

출력:
dog 3
cat 3
parrot 6

 

 

Ex. 15. List에 동물 이름 저장돼 있다.

List = ['dog', 'cat', 'parrot']

for문을 사용해서 동물 이름의 첫 글자만 출력하라.

d

c

p

List = ['dog', 'cat', 'parrot']

for l in List:
    print(l[0])

출력:
d
c
p

 

Ex. 16. List에는 세 개의 숫자가 바인딩돼 있다.

List = [1, 2, 3]

for문을 사용해서 다음과 같이 출력하라.

3 x 1

3 x 2

3 x 3

List = [1, 2, 3]

for l in List:
    print("{} x {}".format(3,l))

출력:
3 x 1
3 x 2
3 x 3

 

 

Ex. 17. List에는 세 개의 숫자가 바인딩돼 있다.

List = [1, 2, 3]

for문을 사용해서 다음과 같이 출력하라.

3 x 1 = 3

3 x 2 = 6

3 x 3 = 9

List = [1, 2, 3]

for l in List:
    print("{} x {} = {}".format(3,l,3*l))

출력:
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9

 

 

Ex. 18. List에는 네 개의 문자열이 바인딩돼 있다.

List = ["가", "나", "다", "라"]

for문을 사용해서 다음과 같이 출력하라.

List = ["가", "나", "다", "라"]

for l in List[1:]:
    print(l)

출력:
나
다
라

 

Ex. 19. List에는 네 개의 문자열이 바인딩돼 있다.

List = ["가", "나", "다", "라"]

for문을 사용해서 다음과 같이 출력하라.

List = ["가", "나", "다", "라"]

for l in List[::2]:
    print(l)

출력:
가
다

 

 

 

Ex. 20. List에는 네 개의 문자열이 바인딩돼 있다.

List = ["가", "나", "다", "라"]

for문을 사용해서 다음과 같이 출력하라.

List = ["가", "나", "다", "라"]

for l in List[::-1]:
    print(l)

출력:
라
다
나
가

 

Ex. 21. List에는 네 개의 정수가 저장돼 있다.

List = [3, -20, -3, 44]

for문을 사용해서 List의 음수를 출력하라.

-20

-3

List = [3, -20, -3, 44]

for l in List:
    if l<0:
        print(l)

출력:
-20
-3

 

 

Ex. 22. for문을 사용해서 3의 배수만을 출력하라.

List = [3, 100, 23, 44]

3

List = [3, 100, 23, 44]

for l in List:
    if l % 3 == 0:
        print(l)

출력:
3

 

 

Ex. 23. List에서 20 보다 작은 3의 배수를 출력하라

List = [13, 21, 12, 14, 30, 18]

12

18

List = [13, 21, 12, 14, 30, 18]

for l in List:
    if l % 3 == 0 and l<20:
        print(l)

출력:
12
18

 

Ex. 24. List에서 세 글자 이상의 문자를 화면에 출력하라

List = ["I", "study", "python", "language", "!"]

study

python

language

List = ["I", "study", "python", "language", "!"]

for l in List:
    if len(l) > 3:
        print(l)

출력:
study
python
language

 

Ex. 25. List에서 대문자만 화면에 출력하라.

List = ["A", "b", "c", "D"]

A

D

List = ["A", "b", "c", "D"]

for l in List:
    if not l.islower():
        print(l)

출력:
A
D

 

 

Ex. 26. List에서 소문자만 화면에 출력하라.

List = ["A", "b", "c", "D"]

b

c

List = ["A", "b", "c", "D"]

for l in List:
    if l.islower():
        print(l)

출력:
b
c

 

 

Ex. 27. 이름의 첫 글자를 대문자로 변경해서 출력하라.

List = ['dog', 'cat', 'parrot']

Dog

Cat

Parrot

(참고) upper() 메서드는 문자열을 대문자로 변경합니다.

>> 변수 = "a"

>> a.upper()

A

>> 변수 = "abc"

>> 변수.upper()

ABC

List = ['dog', 'cat', 'parrot']

for l in List:
    print(l.capitalize())

출력:
Dog
Cat
Parrot

 

Ex. 28. 파일 이름이 저장된 List에서 확장자를 제거하고 파일 이름만 화면에 출력하라. (힌트: split() 메서드)

List = ['hello.py', 'ex01.py', 'intro.hwp']

hello

ex01

intro

List = ['hello.py', 'ex01.py', 'intro.hwp']

for l in List:
    print(l.split(".")[0])

출력:
hello
ex01
intro

 

Ex. 29. 파일 이름이 저장된 List에서 확장자가 .h인 파일 이름을 출력하라.

List = ['intra.h', 'intra.c', 'define.h', 'run.py']

intra.h

define.h

List = ['intra.h', 'intra.c', 'define.h', 'run.py']

for l in List:
    if l.split(".")[1] == 'h':
        print(l)

출력:
intra.h
define.h

 

 

Ex. 30. 파일 이름이 저장된 List에서 확장자가 .h나 .c인 파일을 화면에 출력하라.

List = ['intra.h', 'intra.c', 'define.h', 'run.py']

intra.h

intra.c

define.h

List = ['intra.h', 'intra.c', 'define.h', 'run.py']

for l in List:
    if l.split(".")[1] == 'h' or l.split(".")[1] == 'c':
        print(l)

출력:
intra.h
intra.c
define.h

 

 

Ex. 31. for문과 range 구문을 사용해서 0~99까지 한 라인에 하나씩 순차적으로 출력하는 프로그램을 작성하라.

for i in range(100):
    print(i)

출력:
0
1
2
3
4
5
6
7
8
9
10
.
.
.
90
91
92
93
94
95
96
97
98
99

 

 

Ex. 32. 월드컵은 4년에 한 번 개최된다. range()를 사용하여 2002~2050년까지 중 월드컵이 개최되는 연도를 출력하라.

2002

2006

2010

...

2042

2046

2050

참고) range의 세번 째 파라미터는 증감폭을 결정합니다.

>> print(list(range(0, 10, 2)))

[0, 2, 4, 6, 8]

for i in range(2002,2051,4):
    print(i)

출력:
2002
2006
2010
2014
2018
2022
2026
2030
2034
2038
2042
2046
2050

 

 

Ex. 33. 1부터 30까지의 숫자 중 3의 배수를 출력하라.

3

6

9

12

15

18

21

24

27

30

for i in range(1,31):
    if i % 3 == 0:
        print(i)

출력:
3
6
9
12
15
18
21
24
27
30

 

 

Ex. 34. 99부터 0까지 1씩 감소하는 숫자들을, 한 라인에 하나씩 출력하라.

for i in range(99,-1,-1):
    print(i)

출력:
99
98
97
96
95
94
93
92
91
90
.
.
.
9
8
7
6
5
4
3
2
1
0

 

 

 

Ex. 35. for문을 사용해서 아래와 같이 출력하라.

0.0

0.1

0.2

0.3

0.4

0.5

...

0.9

for i in range(0,10,1):
    print(i/10)

출력:
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9

 

 

Ex. 36. 구구단 3단을 출력하라.

3x1 = 3

3x2 = 6

3x3 = 9

3x4 = 12

3x5 = 15

3x6 = 18

3x7 = 21

3x8 = 24

3x9 = 27

for i in range(1,10):
    print("{} x {} = {}".format(3,i,3*i))

출력:
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27

 

 

 

Ex. 37. 구구단 3단을 출력하라. 단 홀수 번째만 출력한다.

3x1 = 3

3x3 = 9

3x5 = 15

3x7 = 21

3x9 = 27

for i in range(1,10):
    if i % 2 == 1:
        print("{} x {} = {}".format(3,i,3*i))

출력:
3 x 1 = 3
3 x 3 = 9
3 x 5 = 15
3 x 7 = 21
3 x 9 = 27

 

 

Ex. 38. 1~10까지의 숫자에 대해 모두 더한 값을 출력하는 프로그램을 for 문을 사용하여 작성하라.​

sum = 0
for i in range(1,11):
    sum += i

print(sum)

출력:
55

 

Ex. 39. 1~10까지의 숫자 중 모든 홀수의 합을 출력하는 프로그램을 for 문을 사용하여 작성하라.

sum = 0
for i in range(1,11,2):
    sum += i

print(sum)

출력:
25

 

 

Ex. 40. 1~10까지의 숫자를 모두 곱한 값을 출력하는 프로그램을 for 문을 사용하여 작성하라.

c = 1
for i in range(1,11):
    c *= i

print(c)

출력:
3628800

 

Ex. 41. 아래와 같이 List의 데이터를 출력하라. 단, for문과 range문을 사용하라.

price_list = [32100, 32150, 32000, 32500]

32100

32150

32000

32500

price_list = [32100, 32150, 32000, 32500]

for i in range(len(price_list)):
    print(price_list[i])

출력:
32100
32150
32000
32500

 

 

Ex. 42. 아래와 같이 List의 데이터를 출력하라. 단, for문과 range문을 사용하라.

price_list = [32100, 32150, 32000, 32500]

0 32100

1 32150

2 32000

3 32500

price_list = [32100, 32150, 32000, 32500]

for i in range(len(price_list)):
    print("{} {}".format(i,price_list[i]))

출력:
0 32100
1 32150
2 32000
3 32500

 

 

 

Ex. 43. 아래와 같이 List의 데이터를 출력하라. 단, for문과 range문을 사용하라.

price_list = [32100, 32150, 32000, 32500]

3 32100

2 32150

1 32000

0 32500

price_list = [32100, 32150, 32000, 32500]

for i in range(len(price_list)-1,-1,-1):
    print("{} {}".format(i,price_list[len(price_list) - i - 1]))

출력:
3 32100
2 32150
1 32000
0 32500

 

Ex. 44. 아래와 같이 List의 데이터를 출력하라. 단, for문과 range문을 사용하라.

price_list = [32100, 32150, 32000, 32500]

100 32150

110 32000

120 32500

price_list = [32100, 32150, 32000, 32500]

for i in range(0,3):
    print("{} {}".format(100+i*10,price_list[i+1]))

출력:
100 32150
110 32000
120 32500

 

 

Ex. 45. my_list를 아래와 같이 출력하라.

my_list = ["가", "나", "다", "라"]

가 나

나 다

다 라

my_list = ["가", "나", "다", "라"]

for i in range(len(my_list)-1):
    print("{} {}".format(my_list[i] , my_list[i+1]))

출력:
가 나
나 다
다 라

 

 

Ex. 46. List를 아래와 같이 출력하라.

my_list = ["가", "나", "다", "라", "마"]

가 나 다

나 다 라

다 라 마

my_list = ["가", "나", "다", "라", "마"]

for i in range(len(my_list)-2):
    print("{} {} {}".format(my_list[i] , my_list[i+1] , my_list[i+2]))

출력:
가 나 다
나 다 라
다 라 마

 

 

Ex. 47. 반복문과 range 함수를 사용해서 my_list를 아래와 같이 출력하라.

my_list = ["가", "나", "다", "라"]

라 다

다 나

나 가

my_list = ["가", "나", "다", "라"]

for i in range(len(my_list)-1,0,-1):
    print("{} {}".format(my_list[i] , my_list[i-1]))

출력:
라 다
다 나
나 가

 

 

Ex. 48. List에는 네 개의 정수가 저장되어 있다. 각각의 데이터에 대해서 자신과 우측값과의 차분값을 화면에 출력하라.

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

출력:
100
200
400

 

 

 

Ex. 49. List에는 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)

출력:
233.33333333333334
466.6666666666667
733.3333333333334
1033.3333333333333

 

 

Ex. 50. List에 5일간의 저가, 고가 정보가 저장돼 있다. 고가와 저가의 차를 변동폭이라고 정의할 때, low, high 두 개의 List를 사용해서 5일간의 변동폭을 volatility List에 저장하라.

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(len(low_prices)):
    volatility.append(high_prices[i] - low_prices[i])

print(volatility)

출력:
[50, 100, 30, 80, 0]

 

 

Ex. 51. 아래 표에서 하나의 행을 하나의 List로, 총 3개의 List를 갖는 이차원 List apart를 정의하라.

apart = [ ["101호", "102호"], ["201호", "202호"], ["301호", "302호"] ]
print(apart)

출력:
[['101호', '102호'], ['201호', '202호'], ['301호', '302호']]

 

Ex. 52. 아래 표에서 하나의 열을 하나의 List로, 총 2개의 List를 갖는 이차원 List stock을 정의하라.

stock = [ ["시가", 100, 200, 300], ["종가", 80, 210, 330] ]
print(stock)

출력:
[['시가', 100, 200, 300], ['종가', 80, 210, 330]]

 

 

Ex. 53. 아래 표를 stock 이름의 딕셔너리로 표현하라.시가를 key로 저장하고, 나머지 같은 열의 데이터를 List로 저장해서 value로 저장한다. 종가 역시 key로 저장하고 나머지 같은 열의 데이터를 List로 저장해서 value로 저장한다.

stock = dict({"시가":[100, 200, 300],
"종가":[80, 210, 330]})
print(stock)
print(stock['시가'])

출력:
{'시가': [100, 200, 300], '종가': [80, 210, 330]}
[100, 200, 300]

 

 

 

Ex. 54. 아래 표를 stock 이라는 이름의 딕셔너리로 표현하라. 날짜를 key로 저장하고, 나머지 같은 행의 데이터를 List로 저장해서 value로 저장한다. 첫 열이 날짜이다.

stock = dict({"10/10":[80,110,70,90],
"10/11":[210,230,190,200]})

print(stock)
print(stock['10/11'])

출력:
{'10/10': [80, 110, 70, 90], '10/11': [210, 230, 190, 200]}
[210, 230, 190, 200]

 

 

 

Ex. 55. List에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]

101 호

102 호

201 호

202 호

301 호

302 호

apart = [ [101, 102], [201, 202], [301, 302] ]

for row in apart:
    for col in row:
        print(col, "호")

출력:
101 호
102 호
201 호
202 호
301 호
302 호

 

 

Ex. 56. List에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]

301 호

302 호

201 호

202 호

101 호

102 호

apart = [ [101, 102], [201, 202], [301, 302] ]

for row in range(len(apart)-1,-1,-1):
    for col in apart[row]:
        print(col, "호")

출력:
301 호
302 호
201 호
202 호
101 호
102 호

 

 

Ex. 57. List에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]

302 호

301 호

202 호

201 호

102 호

101 호

apart = [ [101, 102], [201, 202], [301, 302] ]

for row in range(len(apart)-1,-1,-1):
    for col in range(len(apart[row])-1,-1,-1):
        print(apart[row][col], "호")

출력:
302 호
301 호
202 호
201 호
102 호
101 호

 

 

 

Ex. 58. List에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]
101 호
-----
102 호
-----
201 호
-----
202 호
-----
301 호
-----
302 호
-----
apart = [ [101, 102], [201, 202], [301, 302] ]

for row in apart:
    for col in row:
        print(col, "호")
        print("-----")

출력:
101 호
-----
102 호
-----
201 호
-----
202 호
-----
301 호
-----
302 호
-----

 

 

Ex. 59. List에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]
101 호
102 호
-----
201 호
202 호
-----
301 호
302 호
-----

apart = [ [101, 102], [201, 202], [301, 302] ]

for row in apart:
    for col in row:
        print(col, "호")
    print("-----")

출력:
101 호
102 호
-----
201 호
202 호
-----
301 호
302 호
-----

 

 

 

Ex. 60. List에 저장된 데이터를 아래와 같이 출력하라.

apart = [ [101, 102], [201, 202], [301, 302] ]
101 호
102 호
201 호
202 호
301 호
302 호
-----
apart = [ [101, 102], [201, 202], [301, 302] ]

for row in apart:
    for col in row:
        print(col, "호")
print("-----")

출력:
101 호
102 호
201 호
202 호
301 호
302 호
-----

 

 

Ex. 61. 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 row in data:
    for col in row:
        print(col * 1.00014)

출력:
2000.28
3050.427
2050.2870000000003
1980.2772
7501.05
2050.2870000000003
2050.2870000000003
1980.2772
15452.163
15052.107
15552.177
14902.086000000001

 

 

 

Ex. 62. 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 row in data:
    for col in row:
        print(col * 1.00014)
    print('----')

출력:
2000.28
3050.427
2050.2870000000003
1980.2772
----
7501.05
2050.2870000000003
2050.2870000000003
1980.2772
----
15452.163
15052.107
15552.177
14902.086000000001
----

 

 

 

Ex. 63. 62 번 문제의 결괏값을 result 이름의 List에 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 row in data:

for col in row:

result.append(col * 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]

 
data = [
[ 2000, 3050, 2050, 1980],
[ 7500, 2050, 2050, 1980],
[15450, 15050, 15550, 14900]
]

result = []

for row in data:
    for col in row:
        result.append(col * 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]

 

 

 

 

 

Ex. 64. 61번 문제의 결괏값을 result 이름의 List에 2차원 배열로 저장하라. 저장 포맷은 아래와 같다. 각 행에 대한 데이터끼리 List에 저장되어야 한다.

>> 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 = data

for row in range(0,data.__len__()):
    for col in range(0,data[row].__len__()):
        result[row][col] = data[row][col] * 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]]
​

 

 

 

Ex. 65. ohlc List에는 시가(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 range(1,ohlc.__len__()):
    print(ohlc[i][3])

출력:
100
190
310

 

 

 

Ex. 66. ohlc List에는 시가(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 range(1,ohlc.__len__()):
    if ohlc[i][3] > 150:
        print(ohlc[i][3])

출력:
190
310

 

 

 

Ex. 67. ohlc List에는 시가(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 range(1,ohlc.__len__()):
    if ohlc[i][3] >= ohlc[i][0]:
        print(ohlc[i][3])

출력:
100
310

 

 

 

Ex. 68. ohlc List에는 시가(open), 고가 (high), 저가 (low) , 종가(close)가 날짜별로 저장돼 있다. 고가와 저가의 차이를 변동폭으로 정의할 때 변동폭을 volatility 이름의 List에 저장하라.

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 range(1,ohlc.__len__()):
    volatility.append(ohlc[i][1] - ohlc[i][2])

print(volatility)

출력:
[40, 30, 10]

 

 

 

 

Ex. 69. List에는 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 range(1,ohlc.__len__()):
    if ohlc[i][3] > ohlc[i][0]:
        print(ohlc[i][1] - ohlc[i][2])

출력:
10

 

 

 

 

 

Ex. 70. List에는 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]]

p = 0

for i in range(1,ohlc.__len__()):
    p += (ohlc[i][0] - ohlc[i][3])

print(p)

출력:
0
728x90

'Development Tip' 카테고리의 다른 글

Python 강좌 10 - Module  (0) 2024.12.23
Python 강좌 09 - 함수  (0) 2024.12.23
Python 강좌 07 - 분기문  (0) 2024.12.23
Python 강좌 06 - Dictionary  (0) 2024.12.23
Python 강좌 05 - Tuple  (0) 2024.12.23