파이썬 입문

<점프 투 파이썬> 03-3 for문

explorer999 2023. 8. 5. 10:47

for 문의 변수는 리스트, 튜플, 문자열 등의 요소이다. 

 

for 문의 기본 구조

 

>>> list = ['one', 'two', 'three'] 
>>> for i in test_list: 
...     print(i)
... 
one 
two 
three

 

for 문이 실행되는 동안 리스트의 요소 첫번째~마지막까지 순서대로 i라는 변수에 대입되는 것을 확인할 수 있다.

 

 

*for문과 while문의 차이는 뭘까?

두가지 식으로 표현할 수 있는 함수들이 비슷하여, for문으로 작성한 코드를 while문으로 바꾸거나, while문으로 작성한 코드를 for문으로 바꿀 수 있는 경우도 많다. 하지만 그 실행 방법에는 분명한 차이가 있다. 

 

while문은 가지고 있는 조건식을 만족하는 동안 실행문을 계속 반복한다. 그래서 실행문이 항상 참인 경우, (ex. while True) 무한 루프에 빠지게 되므로 break문이 필요한 것.

while문 안의 수행 문장들의 반복은 조건식의 성질에 따라, 계속 다른 값을 입력할 수도 있지만 계속 같은 값을 입력하는 반복일 수도 있다. 

for문은 리스트 등의 첫번째 요소~마지막 요소 대입이 끝날 때까지 수행할 문장들을 반복한다. 안에 if문 등을 넣어서 리스트의 요소값 성질에 따라 다른 결과값이 나오게 만들 수 있는 것이다. 

 

 

 

 

 

 

for 문 안에 if 문 넣기


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)

 

1번 학생은 합격입니다.

2번 학생은 불합격입니다.

3번 학생은 합격입니다.

4번 학생은 불합격입니다.

5번 학생은 합격입니다.

 

 

 

 

 

 

for문과 range

 

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

 

range(1,11)은 1이상 11미만의 숫자를 데이터로 가지는 객체이다. 위에서 1~10까지의 숫자를 모두 더한 값을 구하기 위해서 처음에 0이었던 "add"에다가 range 1~10 끝날 때까지 add+i(range 안에 있는 요소들)을 더하는 함수이다. 

 

 

 

 

 

 

(응용) continue와 range를 이용해서 합격자들에게'만' 합격 축하 메세지를 띄우기

 

marks(#시험점수) = [90, 25, 67, 45, 80]
for number in range(len(marks)):         #number는 여기서 리스트 안의 요소들의 자릿값이라는 뜻으로 쓰였다. (number는  marks 라는 리스트의 길이만큼의 범위 안에 있다. 리스트 길이 5니까 number는 0,1,2,3,4가 될 것)


    if marks[number] < 60:        #marks[number]= marks라는 리스트의 number자리에 있는 점수가 60점 미만이면, 
        continue                          #아무것도 하지 말고 for문의 처음으로 돌아가라.


    print("%d번 학생 축하합니다. 합격입니다." % (number+1))

 

1번 학생 축하합니다. 합격입니다.

3번 학생 축하합니다. 합격입니다.

5번 학생 축하합니다. 합격입니다.

 

# if 문에 안 걸려서(점수가 60점 이상이라서) 처음으로 안 돌아간 marks[number]에 대해서 print(~축하합니다~) 하는 것.

 

#여기서 왜 number가 아니라 number+1이냐?

컴퓨터 생각에는 리스트의 첫번째 값이 0번이지만 인간들이 보기에는 저 점수들이 첫번째, 두번째, 이렇게 보이기 때문에,

0번째자리~4번째 자리 점수를 1~5번 점수로 바꿔서 출력하기 위함이다.