Programming Language/Python 기본문법

[Python] 기본 문법(7): 제어문 - 조건문(if), 반복문(for, while), range()

lxvxxu 2024. 7. 18. 03:25

[Python] 기본 문법(7): 제어문

https://thebook.io/080357/0184/

 

코딩 자율학습 나도코딩의 파이썬 입문: 6장 제어문

더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.

thebook.io

 

조건문

if문

조건에 따라 동작이 달라질 때 분기한다고 한다.

- C언어와 달리 중괄호 {} 를 사용하지 않는다. 대신 들여쓰기로 if문의 실행 구간임을 구분한다.

 

※ Python에서의 콜론과 들여쓰기
Python에서 콜론(:)과 들여쓰기는 문법적 강제 사항으로, 실행 구간을 정의하는 역할을 한다.
들여쓰기를 하지 않은 문장은 앞의 명령문들과 한 묶음이 아닌 별개의 명령문이 된다.

잘못 사용하는 경우 SytaxError나 IndentationError가 발생한다.
 ( C, Java 등의 프로그래밍 언어에서는 중괄호 {}로 코드를 둘러싸는 방식으로 실행 구간을 정의한다. )

사용되는 구문: if, while, for문 // def, try, exept 등

 

elif, else


 

반복문

for문

 

실행 형식
for 변수 in 반복 대상:
    실행할 명령1
    실행할 명령2
    . . .

 

※ 반복 대상: 리스트, 딕셔너리, 튜플, 문자열 등

 

※ 작동 원리

   반복 대상을 순회하면서 값을 하나씩 변수로 가져와서 for문 안에서 사용

   가져온 값으로 for문에 속한 명령어를 실행하고 실해이 끝나면 반복 대상으로 돌아간다.

   반복 대상에서 다음 값을 변수로 가져오고 for문에 속한 명령을 다시 수행한다.

   이 과정을 반복 대상에서 가져올 값이 없을 때까지 반복하다가 더 이상 가져올 값이 없으면 반복문을 탈출한다.

 

 

range()

지정한 범위 안에서 연속한 정수를 반환하는 함수

 

※ 형식

  - range(숫자) : 0부터 지정한 숫자 직전까지 연속한 정수를 반환한다.

  - range(시작 숫자, 끝 숫자)

  - range(시작 숫자, 끝 숫자, 간격) : 간격 주기로 반환

 

list comprehension (for문 한 줄로 작성하기)

형식
[동작 for 변수 in 반복 대상]

 

예시1

students = [1, 2, 3, 4, 5]
print(students)

# list comprehension 
students = [i + 100 for i in students]
# 일반
students = [students[0] + 100, students[1] + 100, students[2] + 100, students[3] + 100, students[4] + 100]

print(students)

 

예시2

students = ["Iron man", "Thor", "Spider Man"]
print(students)

# list comprehension
students = [len(i) for i in students]
print(students)

students = [i.upper() for i in studnets]
print(students)

 

 

※ list comprehension 작성 시 주의할 점

   '변수 위치'와 '변수로 어떤 동작을 하는 위치'에서 변수명이 동일해야 한다.
  근데 변수명만 동일해야 하지 기타 연산은 위 예시 코드처럼 추가되어도 됨 ㅇㅇ


 

while문

실행 형식
while 조건:
    실행할 명령1
    실행할 명령2
    . . .

 

 

예시

아래 코드는 반복문 5번 반복 후 종료된다.

customer - "서지혜"
index = 5

while index >= 1:
	print("{}님, 커피가 준비됐습니다.".format(customer))
    index -= 1
    print("{}번 남았어요.".format(index))
    if index == 0:
    	print("커피를 폐기 처분합니다.")

 

 

아래 코드는 실행 시 빠른 속도로 결과가 출력되고 멈추지 않는다.

   => "무한 루프(infinite loop)에 빠졌다."

※ [Ctrl] + [C] 입력 시 강제 종료된다.

   => KeyboardInterrupt

customer = "서지혜"
index = 1

while Ture:
	print("{0}님, 커피가 준비됐습니다. 호출 {1}회".format(customer, index))
    index += 1

 


 

흐름 제어하기: continue, break

continue

이후 명령들을 실행하지 않고 다음 반복 대상으로 넘어간다.

 

break

반복문을 즉시 탈출한다

 

absent = [2, 5]
no_book = [7]

for student in range(1, 11):
	if student in absent:
    	continue
    elif student in no_book:
    	print("오늘 수업은 여기까지. {0}번 학생은 교무실로 따라와요.".format(student))
        break
    print("{0}번 학생, 책을 읽어 보세요.".format(student))