본문 바로가기

파이썬

파이썬 cos pro 문법 정리 - for문











반복문 for 
 


 
다음은 for 을 사용해서 [1, 2, 3] 안의 값을 하나씩 출력하는 것을 보여주는 예이다.
 

for a in [1, 2, 3]:
print(a)

>>> 
1
2
3

[1, 2, 3] 리스트의 앞에서부터 하나씩 꺼내어 a 변수에 대입한 후 print(a)를 수행하라
a에 차례로 1,2,3 이라는 값이 대입되며 print(a) 에 의해서 그 값이 차례대로 출력된다

 
 
for 문을 사용하면 실행해야 할 문장을 여러 번 반복해서 실행시킬 수 있다. 
위 예는 대괄호 사이에 있는 값들을 하나씩 출력한다.
 


 







for 문의 기본 구조





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



리스트나 튜플, 문자열의 첫번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 ‘수행할 문장1‘, ’수행할 문장2‘ 등이 수행된다.








1. 전형적인 for문

test_list = [ ‘one’, ‘two’, ‘three’]
for i in test_list:
    print(i)

>>> 
one
two
three









2. for 문의 응용

For 문의 쓰임새를 알기위해 다음을 가정해보자.



< 총 5명의 학생이 시험을 보았는데 시험 점수가 60점이 넘으면 합격이고 그렇지 않으면 불합격이다. 합격인지 불합격인지 결과를 보여주시오. >

 

marks = [90, 25, 67, 45, 80]
# 학생들의 시험 점수 리스트 
number = 0 
# 학생들에게 붙여줄 번호 
for mark in marks:
# 90,25,67,45,80 을 순서대로 mark 에 대입 
    number = number + 1 
    #수행할 문장
    if mark >= 60:
        print(“%d번 학생은 합격입니다.“ %number)
    else:
        print(“%d번 학생은 불합격입니다.” %number)





각각의 학생에게 번호를 붙여 주기 위해 number 변수를 사용하였다.
점수 리스트 marks 에서 차례로 점수를 꺼내어 mark 라는 변수에 대입하고 for 문 안의 문장들을 수행한다.
for 문이 한 번씩 수행될 때마다 number는 1씩 증가한다.







3. for 문과 continue 문


참일때, continue문 시행
for 문 안의 문장을 수행하는 도중에 continue 문을 만나면 for 문의 처음으로 돌아가게 된다.


앞에서 for 문 응용 예제를 그대로 사용해서 60점 이상인 사람에게는 축하 메시지를 보내고 나머지 사람들에게는 아무 메시지도 전하지 않는 프로그램을
에디터를 사용해서 작성해보자.

marks = [90, 25, 67, 45, 80]
# 학생들의 시험 점수 리스트 
number = 0 
# 학생들에게 붙여줄 번호 
for mark in marks:
# 90,25,67,45,80 을 순서대로 mark 에 대입 
    number = number + 1 
    #수행할 문장
    if mark < 60: continue
    print(“%d번 학생은 합격입니다.“ %number)





점수가 60점 이하인 학생일 경우에는 mark < 60 이 참이 되어 continue문이 수행된다.
따라서 축하 메시지를 출력하는 부분인 print 문을 수행하지 않고 for 문의 처음으로 돌아가게 된다.


 
 


 




4. for문과 함께 자주 사용하는 range 함수


for문은 숫자 리스트를 자동으로 만들어 주는 range 함수와 함께 사용하는 경우가 많다.


다음은 range 함수의 간단한 사용법이다.

a = range(10)
a
>>>
range(0, 10)
# 0,1,2,3,4,5,6,7,8,9


range(10)은 0부터 10미만의 숫자를 포함하는 range 객체를 만들어 준다.



시작 숫자와 끝 숫자를 지정하려면 range(시작 숫자, 끝 숫자) 형태를 사용하는데
이때 끝 숫자는 포함되지 않는다.

a = range(1,11)
a
>>>
range(1,11)
# 1,2,3,4,5,6,7,8,9,10







range 함수의 예시 살펴보기

for와 range 함수를 사용하면 1부터 10까지 더하는 것을 다음과 같이 구현할 수 있다.

add = 0
for i in range(1,11):
    add = add + i 
pint(add)
>>>
55    


range(1,11) 은 숫자 1부터 10까지의 숫자를 데이터로 갖는 객체이다.
따라서 i 변수에 리스트의 숫자가 1부터 10까지 하나씩 차례로 대입되면서
add = add + i 문장을 반복적으로 수행하고 add는 최종적으로 55가 된다.







또한 우리가 앞에서 살펴본 ‘60점 이상이면 합격’ 이라는 문장을 출력하는 예제도
range 함수를 사용해서 바꿀 수 있다.

marks = [90, 25, 67, 45, 80]
# 학생들의 점수 리스트 
for number in range(len(marks)):
    if marks[number] < 60: continue
    # 점수가 60점 미만이면 (참) 맨 처음으로 돌아간다.
    print(“%d번 학생 축하합니다. 합격입니다.” %(number+1))
    



len 함수는 리스트 안의 요소 개수를 돌려주는 함수이다.

따라서 len(marks) 는 5가 될 것이고
range(len(marks))는 range(5)가 될 것이다.
number 변수에는 차례로 0부터 4까지의 숫자가 대입될 것이고
marks[number]는 차례대로 90,25, 67, 45, 80 값을 갖게 된다.












for 와 range 를 사용한 구구단

for 와 range 함수를 사용하면 소스 코드 단 4줄만으로 구구단을 출력할 수 있다.
들여쓰기에 주의하며 입력해보자.

for i in range(2,10):          # 1번 for문
    for j in range(1,10):      # 2번 for문 
        print(i*j, end = “”)



위 예를 보면 for 문을 2번 사용했다.
1번 for 문에서는 2부터 9까지의 숫자가 차례로 i 에 대입된다.
i 가 처음 2일 때 2번 for 문을 만나게 된다.
2번 for 문에서 1부터 9까지의 숫자가 j 에 대입되고
그 다음 문장 print(j*i)를 수행한다.

따라서 i가 2일 때 2*1, 2*2, 2*3, … 2*9 까지 차례로 수행되며 그 값을 출력하게 된다.
그 다음으로 i 가 3일때 역시 2일 때와 마찬가지로 수행될 것이고 i가 9일때까지 계속 반복된다.







리스트 내포 사용하기


리스트 안에 for 문을 포함하는 리스트 내포를 사용하면 좀 더 편리한 프로그램을 만들 수 있다.

a = [1,2,3,4]
result = []
for num in a:
    result.append(num*3)

print(result)
[3,6,9,12]    

# 위 예제는 a리스트의 각 항목에 3을 곱한 결과를 list에 담는 예제이다.






이것을 리스트 내포를 사용하면 다음과 같이 간단히 해결할 수 있다.

a = [1,2,3,4]
result = [num * 3 for num in a]






추가 설명 )

num 은 리스트 컴프리헨션에서 사용되는 변수 이름으로, 여기서는 리스트 ‘a’ 의
각 요소를 가리키는 변수입니다


[표현식 for 항목 in 반복 가능 객체 if 조건식]




여기서 ‘항목’ 은 iterable 객체에서 가져온 요소를 가리키는 변수입니다.
‘항목’ 은 개발자가 임의로 선택하는 변수 이름이므로 ‘num’ 대신 다른 이름을 사용할 수도 있습니다. 하지만 일반적인 가독성을 위해 변수 이름을 표현식과 관련된 의미있는 이름으로 선택합니다.

따라서 ’for num in a’ 구문은 리스트 ‘a’ 의 각 요소를 순회하면서 변수 ‘num’ 에
각 요소의 값을 할당하는 역할을 합니다.
그래서 ‘num’ 변수는 리스트 ‘a’ 의 요소를 하나씩 차례대로 가리키게 됩니다.




만약 [1, 2, 3, 4] 중에서 짝수에만 3을 곱하여 담고 싶다면 다음과 같이 리스트 내포 안에 ’if 조건‘ 을 사용할 수 있다.



a = [1, 2, 3, 4]
result = [num * 3 for num in a if num % 2 == 0]
print(result)
[6,12]







 
 

'파이썬' 카테고리의 다른 글

파이썬 cos pro 문법 정리 - if 문, while 문, 함수  (0) 2023.06.03