본문 바로가기
방구석코딩/파이썬 기초문법

[파이썬 데이터 분석] 또 다른 반복문 ① - For문과 While문의 차이, range

by 석세상 2022. 6. 2.
반응형

파이썬의 반복문은 while 외에 for문이 있다. 파이썬에서는 while보다는 for문이 더 많이 사용되는데 그 이유는 while문과 유사한 수행을 하지만 for문만의 장점이 있기 때문이다. for문의 기본적인 문법 구조부터 알아보도록 하자.

 

1. for문 사용법

for문의 문법구조를 보면 while문과 비슷하게 보이지만 약간의 차이가 있다. for문의 반복은 아래 문법구조와 같이 반드시 in과 함께 써 주어야 한다. in 뒤에는 리스트, 튜플, 문자열을 쓸 수 있고, for문에서 적용되는 함수 또한 사용할 수 있다.

for문 문법구조

for 변수명 in 리스트 또는 튜플 또는 문자열 :
    수행할 문장1
    수행할 문장2
    ....

 

 

2. for문과 while문의 차이

while문의 경우는 while다음의 조건문에 'while test < 10'와 같이 'while 변수명 < 숫자' 형태로 입력이 가능하지만 for문에서는 숫자로 끝나는 경우는 에러가 발생하기 때문에 다른 방법을 사용해주어야 한다. in 뒤에 range라는 범위를 지정하는 함수를 이용해서 만들 수 있는데, for문의 문법구조에서 in 리스트, 튜플, 문자열을 쓸 수 있다고 되어있다. 그래서 range는 숫자 리스트를 만들어주는 함수로써, 리스트 형태가 들어가기 때문에 사용 가능하다.

 

range

range는 숫자 리스트를 만들어주는 함수라고 했는데 아래  range에 대한 문법과 예시를 보면 range의 범위는 시작하는 숫 자부 터해서 끝나는 숫자 전까지이다. 예시를 보면 시작하는 숫자가 0으로 0부터 시작해서 끝나는 숫자가 10이지만 끝나는 숫자 전까지가 range의 범위라고 했으니 0에서부터 9까지라고 보면 된다.

  • range(시작하는 숫자, 끝나는 숫자)   예시) range(0, 10)

 

for문 / while문 비교 예시

위의 두 반복문에 대해서 문법의 차이가 있는데 비교를 위해서 앞에서 while문을 공부할 때 예시로 들었던 '1번 문제를 푸세요',...'10번 문제를 푸세요', '문제를 다 풀었습니다'의 예제가 기억 날것이다. 그럼 이와 같은 결과를 나오게 for문으로 코딩해보면 둘의 차이가 뭔지 느껴질 것이다. 어떻게 하면 같은 결과가 나올 수 있을지 생각해본 뒤 아래 내용을 보면 좋겠다.

for문 while문
[입력값]
# test = 0

for test in range(0,10) :

    test = test + 1
    print("{0}번 문제를 푸세요".format(test))
    if test == 10 :
        print("문제를 다 풀었습니다")


[출력결과]
1번 문제를 푸세요
2번 문제를 푸세요
3번 문제를 푸세요
4번 문제를 푸세요
5번 문제를 푸세요
6번 문제를 푸세요
7번 문제를 푸세요
8번 문제를 푸세요
9번 문제를 푸세요
10번 문제를 푸세요
문제를 다 풀었습니다
[입력값]
test = 0

while test < 10 :
    test = test + 1
    print("{0}번 문제를 푸세요".format(test))
    if test == 10 :
        print("문제를 다 풀었습니다")

[출력결과]
1번 문제를 푸세요
2번 문제를 푸세요
3번 문제를 푸세요
4번 문제를 푸세요
5번 문제를 푸세요
6번 문제를 푸세요
7번 문제를 푸세요
8번 문제를 푸세요
9번 문제를 푸세요
10번 문제를 푸세요
문제를 다 풀었습니다

혹시 지난번에 했던 while문이 어떻게 작동하는지 기억나지 않는다면 [파이썬 데이터 분석] 반복문 - While문을 자세히 읽어보기 바란다.

 

자, 그럼 for문과 while문의 차이가 있는 부분만 색칠해서 표시해봤다. 아랫부분의 수행할 문장들은 동일하고, 결과 역시 동일한 것을 볼 수 있다.

 

for문을 보면 test = 0이라는 초기값을 굳이 주지 않아도 된다. for test in range(0, 10) 부분의 range에서 범위가 0에서부터 9까지를 test에 입력하라는 말이기 때문에 test에 0부터  들어가기 때문에 초기값을 따로 설정할 필요가 없다.

 

반면에 while문 같은 경우는 test < 10라는 조건만 보면 test가 10보다 작으면 이라는 조건이 있는데 test =0이라는 초기값을 설정해주지 않으면 test의 값이 뭔지 모른다. 따라서 초기값이 주어져야 한다. 따라서 위의 색칠 부분의 차이만 이해한다면 기본적으로 사용하는 while과 for문의 차이를 알 수 있을 것이다.

 

 

프로그램 실력이 늘기를 원한다면 본인이 머리로 한번 생각해보고, 아니면 직접 코딩까지 해보면 더욱 좋다. 남이 짜둔 프로그램 내용만 눈으로 보면 '어떻게 될 것 같네'라고 까지는 생각할 수 있을지 모르나 막상 직접 짜 보려고 하면 막막해진다. 그래서 본인이 직접 짜보는 게 가장 좋고 직접 작성할 여력이 안된다면 머리로 한번 생각해보는 게 엄청난 도움이 된다. 

728x90
반응형

댓글