[파이썬 강좌] #8 반복문 사용하기 For편


저번시간에 리스트에 대해 배웠습니다.
그런데 만약 리스트에 1~100까지의 숫자를 넣고 싶은 상황을 생각해봅니다.

 

지금까지 배운대로면 아래 방법이 최선일 겁니다.

lst = [1,2,3,4,5,6,7,8,...,100]

 

우리가 아는 리스트의 선언 방식으로는 항목에 1~100 까지 모두 입력해야하는 불상사가 생기게 되죠.

이런식으로 컴퓨터적인 처리를 하지 않고 값들을 직접 타이핑 해 그대로 때려 박는 방식을 하드 코딩이라고 합니다.

당연하지만 별로 좋은 방법은 아닙니다.


위 문제 같이 반복적인 형태에 대해선 노가다로 문제를 해결하는게 아닌 반복문을 사용하여 문제를 해결합니다.

파이썬에서 반복문의 종류로는 1. For문 2. While문이 있는데

오늘 알아볼 것은 우선 첫번째 For문 입니다.

 

for 변수 in 범위(range,리스트 변수 등):
    실행코드1
    실행코드2

 

for문의 기본적인 형태입니다. 저 범위에 반복 가능한 객체들을 넣으면 변수에 하나씩 들어가면서 출력이 되는 형태입니다.

 

*파이썬의 For문은 다른언어의 foreach문과 유사한 특성을 가지고있습니다.
역시 for문의 끝은 :(콜론) 으로 처리하고 for문 아래 실행될 부분을 tab으로 들여쓰기 해주시면 됩니다.

 

lst = []
for item in range(1,101):
    lst.append(item)
print(lst)

>>> [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, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
93, 94, 95, 96, 97, 98, 99, 100]

예전 리스트에서 값을 넣는 방법은 리스트명.append(요소명) 라고 했습니다.

 

위 코드는 그 작업을 1~100까지 총 100번 반복하는 예제입니다.

 

for item in range(1,101):

다음 첫줄은 range(1,101) => 1~(101-1) = 1 ~ 100 번 반복을 하겠다는 뜻인데 그 값을 item에 대입하면서

반복하겠다는 뜻입니다.

 

저 item 이라는 이름은 꼭 item 이라고 지정하지 않아도 원하는 이름을 써주시면 되는데 range의 값에 해당되는 순번값을 저장하는 변수의 역할을 하신다고 봅니다. 관습적으로 i라는 값을 많이 씁니다. (=index)

 

 

정리해서 맨 위 코드는

반복 작업을 하면서
1일때는 item = 1 이 되고 그것을 lst 란 리스트에 넣고
2일때는 item = 2 가 되고 그것을 lst란 리스트에 넣고
3일때는 item = 3 가 되고 그것을 lst란 리스트에 넣고

.

.

.

100일때 item = 100 이 되고 그것을 lst라는 리스트에 넣는 식으로 작업하고 반복이 끝나게 됩니다.

 

range를 사용할때 주의점은 범위의 마지막에서 1을 뺀 값으로 계산이 된다는 겁니다.

 

예를 들어서 range(1,5) 는 1~4까지입니다. 뒤에 범위에서 1을 차감한 수로 반복을 진행합니다.

 

lst = ['일','렬','출','력']
for item in lst:
    print(item)

>>> 
일
렬
출
력

범위에 range가 아닌 리스트를 넣으면 리스트의 모든아이템이 범위로 설정되고
리스트의 각 아이템(요소)이 item 이란 변수에 들어가며
print로 출력을 하면 리스트의 요소가 하나 하나씩 각각 출력되어 일렬 출력 된 것입니다.

 

star = '*'
i = 0

for item in range(0,10):
    i += 1
    print(star * i)

>>>
*
**
***
****
*****
******
*******
********
*********
**********

파이썬에서 '*' 연산자를 사용하면 문자열을 반복출력할 수 있는데 이것과 For 반복문을 응용한 별타워를 찍어내는 예제입니다.


저기 있는 star 변수의 문자를 다른 문자로 바꾸면 다른문자로 모양을 만들 수 있겠습니다.

 

A = [30,40,75,50,65,40,85,95,100,82,34,100]

score = 0

for i in A:
    score = score + i
print('A그룹 평균은 : ' +  str(score / len(A)) + '점 입니다')

A라는 리스트를 범위로 지정하고
score라는 변수에 i 를 차곡차곡 담은후에

len(A)로 나눠서 평균을 구했습니다. 여기서 len(A)는 저 리스트 항목의 총 갯수입니다
(리스트 항목 갯수기 때문에 0이 아닌 1부터 샙니다.)  

 

score / len(A) 의 경우 산술 연산의 값이기 때문에 문자열과 함께 + (결합) 시켜서 출력해주려면 str() 함수를 이용해 문자열로 변환해주는 작업이 필요합니다.

 

star = '*'
i = 0

for item in range(0,10):
    i += 1
    print(star * i)

    if i == 3:
        break

>>> 
*
**
***

반복문을 통해 반복하다가 중간에 반복을 멈추고 싶을때도 있습니다.

 

그럴땐 break 를 써서 브레이크를 걸어주시면 됩니다.

break 가 실행되면 바로 위에 있는 반복문을 찾아서 그 반복문에 한해서 탈출해줍니다.

 

즉 for문이 2개씩 중첩되서 있으면 break를 2번 써줘야 반복문이 완전히 끝나게 됩니다.

COMMENT WRITE