무엇을 하는 것인가
지금까지 쓴 코드는 위에서 아래로 한 번씩 실행됐습니다. 조건문은 그 흐름에 갈림길을 냅니다. 점수가 60점을 넘으면 합격, 아니면 불합격처럼요.
기본 모양은 if 조건: 이고, 조건이 참일 때 실행할 줄들을 그 아래에 들여써서 적습니다. 다른 언어의 중괄호 { } 자리를 파이썬은 들여쓰기가 대신합니다. 그래서 파이썬에서는 들여쓰기가 취향이 아니라 문법입니다.
조건이 거짓일 때 할 일은 else:에, 갈림길이 셋 이상이면 가운데에 elif 조건:을 넣습니다. elif는 위에서부터 차례로 검사하다가 처음 참이 되는 하나만 실행하고 나머지는 건너뜁니다.
조건에는 비교 기호를 씁니다. ==(같다), !=(다르다), >, <, >=, <=. 여기서 =와 ==는 완전히 다릅니다. 하나는 넣는 것이고 둘은 비교하는 것입니다.
예제 코드
아래 코드가 위 버튼으로 받는 파일과 같은 내용입니다. 통째로 복사해 실행해 보고, 값을 바꿔 가며 결과가 어떻게 달라지는지 보는 편이 읽기만 하는 것보다 훨씬 빨리 익습니다.
# if 조건문 — 상황에 따라 다른 일 시키기
# 콜론(:) 과 들여쓰기가 문법입니다. 들여쓰기는 스페이스 4칸으로 통일하세요.
점수 = int(input("점수를 입력하세요: "))
if 점수 >= 90:
학점 = "A"
elif 점수 >= 80: # 위 조건이 거짓일 때만 검사합니다
학점 = "B"
elif 점수 >= 70:
학점 = "C"
else: # 위가 전부 거짓일 때
학점 = "F"
print("학점:", 학점)
# = 은 넣기, == 은 비교입니다. 조건에 = 를 쓰면 오류가 납니다.
if 학점 == "F":
print("재수강 대상입니다.")
# and / or 로 조건을 묶습니다. 다른 언어의 && , || 자리입니다.
나이 = 21
재학중 = True
if 나이 >= 20 and 재학중:
print("성인 재학생입니다.")
# 0, "", [], None 은 거짓으로 봅니다.
목록 = []
if 목록:
print("목록에 뭔가 있습니다")
else:
print("목록이 비어 있습니다") # 이쪽이 실행됩니다
기억할 것
if 조건:— 콜론(:)을 빼먹으면 바로 오류가 납니다.- 들여쓰기가 문법입니다. 스페이스 4칸으로 통일하세요. 탭과 스페이스를 섞으면 오류가 납니다.
=는 넣기,==는 비교. 조건에=를 쓰면 오류입니다.elif는 위에서부터 검사해 처음 맞는 하나만 실행합니다. 순서가 중요합니다.
자주 묻는 것
IndentationError 가 납니다
들여쓰기가 어긋났다는 뜻입니다. 같은 덩어리 안의 줄들은 앞 칸 수가 정확히 같아야 합니다. 편집기에서 탭과 스페이스가 섞이면 눈에는 같아 보여도 오류가 납니다. 스페이스 4칸으로 통일하세요.
elif 와 if 를 여러 번 쓰는 건 뭐가 다른가요
elif는 앞 조건이 거짓일 때만 검사합니다. if를 여러 번 쓰면 앞이 참이어도 뒤를 또 검사합니다. 점수 90점에 대해 if 90 이상 / elif 80 이상은 "A"만 나오지만, 둘 다 if면 "A"와 "B"가 모두 나옵니다.
조건 두 개를 같이 보려면요
and(둘 다 참), or(하나만 참이어도)를 씁니다. if 나이 >= 20 and 학생 == False: 처럼요. 다른 언어의 &&, || 자리입니다.
0 이나 빈 문자열을 조건에 넣으면요
거짓으로 봅니다. 0, "", [], None은 모두 거짓 취급이고 나머지는 참입니다. 그래서 if 목록:은 "목록이 비어있지 않으면"이라는 뜻으로 자주 씁니다.