경제 데이터 분석을 위해 다양한 통계 자료들을 사용하게 됩니다. 보통은 국가기관이나 포털에서 제공하는 정도만으로도 충분히 훌륭하긴 하지만, 간혹 엑셀 같은 스프레드시트로 제공되는 데이터를 가공하는 경우도 있습니다. 그래도 부족하다고 생각된다면 프로그램 언어는 직접 배워서 해보는 것도 시도해 볼만합니다. 그럼 데이터 사이언스에 많이 사용되는 파이썬을 배워보도록 하겠습니다.
반복문 속에 또 반복하기
아직 준비가 안되신 분들은 아래 링크로 가셔서 아나콘다 설치하고 오세요.
파이썬을 배워보자[설치]
경제 데이터 분석을 위해 다양한 통계 자료들을 사용하게 됩니다. 보통은 국가기관이나 포털에서 제공하는 정도만으로도 충분히 훌륭하긴 하지만, 간혹 엑셀 같은 스프레드시트로 제공되는 데
stock.slowly81.com
리스트 데이터 형을 가지고 반복문을 배웠는데요.
복습할 겸 문제하나 풀어 보겠습니다.
구구단 2단을 출력하는 프로그램을 만들어 보겠습니다.
리스트에 1부터 9까지 값을 미리 입력하겠습니다.
arr = [1,2,3,4,5,6,7,8,9]
2단을 출력해 볼게요.
b = 2
for a in arr:
print('%d X %d = %d' %(b, a, b*a))
구구단은 9단까지 있으니 변수 b 도 반복하게끔 변경해 보겠습니다.
for b in arr: 을 추가해 보겠습니다.
단, 파이썬은 하위 명령은 탭으로 들여 쓰기 후 적어주어야 하니
아래 소스처럼 들여 쓰기는 꼭 해주세요.
arr = [1,2,3,4,5,6,7,8,9]
for b in arr:
for a in arr:
print('%d X %d = %d' %(b, a, b*a))
앗... 그런데 1단부터 출력되네요.
반복문을 제어하자
앞선 2중 for문 형태는 유지하면서 1단을 제외하고 싶습니다.
b 가 1이 아닌 경우를 if 문으로 아래처럼 표현할 수 있습니다.
arr = [1,2,3,4,5,6,7,8,9]
for b in arr:
if b != 1 :
for a in arr:
print('%d X %d = %d' %(b, a, b*a))
그런데 다른 표현 방법도 있습니다.
b 가 1이 아닐 때가 아니라
b 가 1일 때를 if의 조건문으로 사용한다면
아래처럼 continue를 사용합니다.
arr = [1,2,3,4,5,6,7,8,9]
for b in arr:
if b == 1:
continue
for a in arr:
print('%d X %d = %d' %(b, a, b*a))
continue 문을 만나면 반복문의 남은 부분을 건너뛰고 다음 반복을 진행합니다.
즉, b가 1이면 continue 문을 만나고
if 문 뒤의 for문은 실행이 안되고 b가 2일 때로 넘어갑니다.
위의 소스를 변형하지 않고
if문 하나만을 추가하여 3단까지만 출력을 해보겠습니다.
arr = [1,2,3,4,5,6,7,8,9]
for b in arr:
if b == 1:
continue
for a in arr:
print('%d X %d = %d' %(b, a, b*a))
if b== 3 :
break
3단 출력 이후에 멈춰야 하니
마지막에 b가 3일 때 반복문을 종료해 주는
break 문을 추가하였습니다.
AI 한테 시켜보자
1부터 100까지의 숫자 중
1과 자기 자신으로만 나누어지는 숫자를 출력해 보겠습니다.
(소수, prime이라고 하죠)
바깥쪽 for문은 1부터 100까지 반복되고
안쪽 for문은 2부터 바깥쪽 반복 중인 숫자까지 반복하면서
나누어지는 수가 있는지 확인하고
있으면 출력하지 않고 안쪽 for문을 종료하고
끝까지 수행하면 숫자를 출력하면 됩니다.
AI 한테 시켜보겠습니다.
MS bing의 COPILOT을 사용했습니다.
else 문의 들여 쓰기가 이상한데...라고 생각돼서
돌려봤더니 제대로 나오네요.
찾아보니 파이썬은 for - else라는 구문을 지원한다고 합니다.
for 문 내부에서 break 문을 만나면 else 문은 실행되지 않고
for 문이 break 문을 만나지 않으면 else 문이 실행됩니다.
for else 구문이라는 걸 몰랐으니 제가 작성했다면
아래처럼 상태를 확인하는 중간변수를 하나 두고 프로그램을 작성했을 겁니다.
for num in range(1, 101):
check = True
for divisor in range(2, num):
if num % divisor == 0:
check = False
break
if(check):
print(num)
마치며
반복문을 중첩해서 수행하면서
조건에 따라 반복문을 건너뛰거나 멈추는 방법을 살펴보았습니다.
중첩된 반복문은 문제해결 시 직관적이긴 하지만
중첩이 늘어날수록 속도가 느려지는 문제가 있습니다.
10번 반복문 내부에 10번 반복문이 있으면 10 X 10 = 100번 수행이지만
이 안에 10번 반복문이 한 번 더 중첩되면 10 X 10 X 10 = 1000 번이 됩니다.
한번더 하면 10 X 10 X 10 X 10 = 10000번이 되어 2중 반복문에 비해 100배의 연산이 필요합니다.
문제 해결을 위해 3중 반복문 이상이 필요하다는 생각이 든다면
해결 방안을 잘못 찾았을 확률이 높으니
비슷한 문제를 해결한 다른 방법이 있는지 찾아보시길 바랍니다.
구글링이 번거로우면 그냥 AI 한테 물어봐도 되고요.
참고자료...
파이썬을 배워보자[반복문]
경제 데이터 분석을 위해 다양한 통계 자료들을 사용하게 됩니다. 보통은 국가기관이나 포털에서 제공하는 정도만으로도 충분히 훌륭하긴 하지만, 간혹 엑셀 같은 스프레드시트로 제공되는 데
stock.slowly81.com
[python] 파이썬 for else 구문 완벽 정리
[ic]for 문[/ic]과 [ic]else 구문[/ic]이 결합된 요상한 구문에 대해 알아보자. 1) [ic]for-else[/ic] 구문 생김새 numbers = [1, 3, 5] for number in numbers: print(number) else: print("반복문 끝") # output ''' 1 3 5 반복문 끝 '''
yeko90.tistory.com
'도구' 카테고리의 다른 글
파이썬을 배워보자[함수] (0) | 2024.06.27 |
---|---|
파이썬을 배워보자[while문] (1) | 2024.06.26 |
파이썬을 배워보자[반복문] (0) | 2024.06.18 |
파이썬을 배워보자[케이스문] (0) | 2024.06.17 |
파이썬을 배워보자[조건문] (0) | 2024.06.16 |
댓글