조건문을 테스트해서 참이면 if문 바로 다음 문장(if 블록)들을 수행하고, 조건문이 거짓이면 else문 다음 문장(else 블록)들을 수행하게 된다. 그러므로 else문은 if문 없이 독립적으로 사용할 수 없다.
if 조건문:
수행할 문장1
수행할 문장2
...
else:
수행할 문장A
수행할 문장B
...
if문을 만들 때는 if 조건문: 바로 아래 문장부터 if문에 속하는 모든 문장에 들여쓰기를 해주어야 한다.
if 조건문:
수행 문장1
수행 문장2
수행 문장3
들여쓰기 너비는 같아야 한다.
if 조건문:
수행할 문장1
수행할 문장2
수행할 문장3
-> 오류 발생
if 조건문:
수행할 문장1
수행할 문장2
수행할 문장3
-> 오류 발생
if 조건문에서 “조건문"이란 참과 거짓을 판단하는 문장을 뜻한다.
money = True
if money:
# money는 True이기 때문에 조건이 참이 되어 if문 다음 문장을 수행하게 된다.
비교연산자 | 설명 |
---|---|
x < y | x가 y보다 작다 |
x > y | x가 y보다 크다 |
x == y | x와 y가 같다 |
x ! = y | x와 y가 같지 않다 |
x > = y | x는 y보다 크거나 같다 |
x < = y | x는 y보다 작거나 같다 |
money = 2000
if money >= 3000:
print("돈이 충분하다.")
else:
print("돈이 부족하다.")
돈이 부족하다
연산자 | 설명 |
---|---|
x or y | x와 y 중 하나만 참이어도 참이다 |
x and y | x와 y 모두 참이어야 참이다 |
not x | x가 거짓이면 참이다 |
money = 2000
card = True
if money >= 3000 or card:
print("돈이 충분하다")
else:
print("돈이 부족하다")
돈이 충분하다
첫 번째 조건인 money ≥ 3000에 대해서는 거짓이지만, card=True이므로 참이어서 “돈이 충분하다"가 출력된다.in | not in |
---|---|
x in list | x not in list |
x in tuple | x not in tuple |
x in 문자열 | x not in 문자열 |
1 in [1,2,3]
True
1 not in [1,2,3]
False
# tuple
'a' in ('a', 'b', 'c')
True
# 문자열
'j' not in 'python'
True
만약 주머니에 돈이 있으면 택시를 타고 가고, 없으면 걸어가라
pocket = ['paper', 'cellphone', 'money']
if 'money' in pocket:
print("택시를 타고 가라")
else:
print("걸어가라")
택시를 타고 가라
주머니에 돈이 있으면 가만히 있고, 주머니에 돈이 없으면 카드를 꺼내라
pocket = ['paper', 'cellphone', 'money']
if 'money' in pocket:
pass
else:
print("카드를 꺼내라")
elif는 if와 else만으로 만들 수 없는 다양한 조건문을 만들 수 있게 해준다.
"주머니에 돈이 있으면 택시를 타고, 주머니에 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어 가라.”
pocket = ['paper', 'headphone']
card = True
if 'money' in pocket:
print("택시를 타고 가라")
elif card:
print("택시를 타고 가라")
else:
print("걸어가라")
택시를 타고 가라
# elif 구문이 참이므로 "택시를 타고 가라"가 출력된다.
if <조건문>:
<수행할 문장1>
<수행할 문장2>
...
elif <조건문>:
<수행할 문장1>
<수행할 문장2>
...
elif <조건문>:
<수행할 문장1>
<수행할 문장2>
...
...
else:
<수행할 문장1>
<수행할 문장
# if, else, elif문 다음 수행할 문장을 콜론(:) 뒤에 바로 적는다.
pocket = ['paper', 'money', 'cellphone']
if 'money' in pocket: pass
else print("카드를 꺼내라")
조건문이 참인 경우
if조건문
else조건문이 거짓인 경우
if score >= 60:
message = "success"
else:
message = "failure"
위 코드를 조건부 표현식을 사용하면 아래와 같이 간단히 표현할 수 있다.
message = "success" if score >=60 else "failure"
반복해서 문장을 수행해야 할 경우 while문을 사용한다. 그래서 while 반복문이라고도 한다.
while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
treehit = 0
while treehit < 10:
treehit = treehit + 1
print("나무를 %d번 찍었습니다." %treehit)
if treehit == 10:
print("나무 넘어갑니다.")
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무 넘어갑니다.
while 문 내 조건문 treehit < 10 이 있다. treehit가 9까지는 계속해서 treehit+1이 되며, “나무를 n번 찍었습니다.”가 출력된다. 또한 if 문 내 treehit == 10 조건문에 대해서는 거짓이므로 그냥 넘어가게 된다.
treehit가 10이 되었을 때 while 내 조건문에 대해서 거짓이 되므로 그냥 넘어가고 if문에 대해서는 참이 되므로 “나무 넘어갑니다.”가 출력되며 반복문이 끝나게 된다.
여러 가지 선택지 중 하나를 선택해서 입력받는 경우에 대해서 생각해보기
prompt = """
1. Add
2. Del
3. List
4. Quit
Enter number: """
number = 0
while number != 4:
print(prompt)
number = int(input())
1. Add
2. Del
3. List
4. Quit
Enter number:
while문 실행되면 input() 함수 때문에 사용자가 number 값을 직접 넣게 된다. 이때 4가 아닌 값을 넣으면 계속해서 prompt가 출력되며, 4를 넣게되면 while문이 종료된다.
coffee = 10
money = 300
while money:
print("돈을 받았으니 커피를 줍니다.")
coffee = coffee - 1
print("남은 커피의 양은 %d개입니다.", %coffee)
if coffee == 0:
print("커피가 다 떨어졌습니다.")
break
while 내 조건문은 False 혹은 0이 아닐 경우 모두 참으로 반복문이 계속해서 실행된다. money는 0이 아니므로 while문은 무한루프를 돌게 된다. 그런데 while문이 돌면서 coffee가 0이 될 경우 if 문이 참이 되면서 break문이 호출되어 while문을 빠져나갈 수 있게 된다.
a = 0
while a < 10:
a = a + 1
if a % 2 == 0: continue
print(a)
1
3
5
7
9
if 문 내 a % 2 == 0 은 a를 2로 나눈 나머지가 0인 수, 즉 짝수일 경우 continue문이 호출되는 것이다. 그러면 print(a)로 가기 전에 while문의 맨 처음으로 돌아가게 된다.
for 변수 in 리스트(혹은 튜플, 문자열):
수행 문장1
수행 문장2
...
test_list = ['one', 'two', 'three']
for i in test_list:
print(i)
one
two
three
a = [(1,2), (3,4), (5,6)]
for (first, last) in a:
print(first+last)
3
7
11
"총 5명의 학생이 시험을 보았는데 시험 점수가 60점이 넘으면 합격이고. 그렇지 않으면 불합격이다. 합격인지 불합격인지 결과를 보여 주시오.”
marks = [90, 25, 84, 22, 70]
number = 0
for mark in marks:
number = number + 1
if marks >= 60:
print("%d번 학생은 합격입니다." %number)
else:
print("%d번 학생은 불합격입니다." %number)
1번 학생은 합격입니다.
2번 학생은 불합격입니다.
3번 학생은 합격입니다.
4번 학생은 불합격입니다.
5번 학생은 합격입니다.
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
number = number + 1
if mark < 60:
continue
print("%d번 학생 축하합니다. 합격입니다." %number)
1번 학생 축하합니다. 합격입니다.
3번 학생 축하합니다. 합격입니다.
5번 학생 축하합니다. 합격입니다.
60점 미만의 학생들은 출력되지 않고 60점 이상의 학생들만 출력된다.
range(a, b)는 a부터 b-1까지의 숫자를 데이터로 갖는 객체이다.
range(a)는 0부터 a-1까지의 숫자를 데이터로 갖는다.
add = 0
for i in range(1, 11):
add = add + i
print(add)
55
marks = [90, 25, 86, 45, 70]
for number in range(len(marks)):
if marks[number] < 60:
continue
print("%d번 학생 합격입니다." %(number+1))
len()함수는 리스트 안의 요소의 갯수를 돌려주는 함수이다. marks 요소의 갯수는 5이므로 range(len(marks))는 range(5)이고 0~4까지의 숫자를 객체로 갖는다.
for문 내에 for문을 대입하여 아래와 같은 코드를 만들 수도 있다.
for i in range(2,10):
for j in range(1,10):
print(i*j, end= " ") # 매개변수 end를 넣어 준 이유는 해당 결괏값을 출력할 때 다음줄로 넘기지 않고 그 줄에 계속해서 출력하기 위해서이다.
print('') # 안쪽 for문이 끝날 때마다 줄바꿈이 됨
리스트 내포란 리스트 안에 for문을 포함하는 것이다.
a = [1,2,3,4]
result = []
for num in a:
result.append(num*3)
print(result)
[3,6,9,12]
위 코드를 리스트 내포를 사용하면 더 간단하게 코드를 짤 수 있다.
a = [1,2,3,4]
result = [num*3 for num in a]
for문과 if문을 같이 사용할 수도 있다.
a = [1,2,3,4]
result = [num*3 for num in a if num % 2 == 0]
[출처: https://wikidocs.net/19]