[Python]제어문 - if / while / for
1. if문
: 주어진 조건을 판단하여 조건에 맞는 상황을 수행하는데 사용.
(else문은 if문 없이 단독으로 사용할 수 없음)
※ 수행문 들여쓰기는 언제나 같은 너비로 해야한다.
if 조건문: 수행문1 수행문2 elif 조건문n: 수행문1 수행문2 else: 수행문1 수행문2 |
- 조건문
: 참과 거짓을 판단하는 문장을 말한다.
※ pass: 아무런 일도 하지 않도록 설정하고 싶을 때 사용
비교연산자 | 설명 | 예) x=3, y=2일 경우 출력 결과 |
x < y | x가 y보다 작다. | False |
x > y | x가 y보다 크다. | True |
x == y | x와 y가 같다. | False |
x != y | x와 y가 같지 않다. | True |
x >= y | x가 y보다 크거나 같다. | True |
x <= y | x가 y보다 작거나 같다. | False |
연산자 | 설명 | 예) |
x or y | x와 y 둘 중 하나만 참이어도 참 | money = 2000 card =True if money >= 3000 or card: #참 print("택시타기") else: print("걸어가기") |
x and y | x와 y가 모두 참이어야 참 | |
not x | x가 거짓이면 참 |
in | 설명 | not in | 설명 | |
x in 리스트 | x가 리스트 안에 있T/없F | x not in 리스트 | x가 리스트 안에 있F/없T | |
x in 튜플 | x가 튜플 안에 있T/없F | x not in 튜플 | x가 튜플 안에 있F/없T | |
x in 문자열 | x가 문자열 안에 있T/없F | x not in 문자열 | x가 문자열 안에 있F/없T |
- 조건부 표현식
: 조건문이 참인경우 if 조건문 else 조건문이 거짓인경우
if score >= 60: message = "success" else: message = "failire" |
→ | message = "success" if score >= 60 else "failure" |
2. while문
: 반복해서 문장을 수행해야 할 경우 사용.
조건문이 참인동안 while문 아래의 문장이 반복수행, 조건문이 False가 되면 while문을 빠져나간다.
※ break: 반복문 탈출. 아무런 일도 하지 않도록 설정하고 싶을 때 사용
※ continue: 반복문 다시 실행. 맨 처음으로 돌아가기
while 조건문: 수행문1 수행문2 수행문3 ... |
coffee = 10
while True:
money = int(input("돈을 넣어주세요: "))
if money == 300:
print("커피를 줍니다.")
coffee = coffee-1
elif money > 300:
print("거스름돈 %d을 주고 커피를 줍니다." %(money-300))
coffee = coffee-1
else:
print("돈을 다시 돌려주고 커피를 주지 않습니다.")
print("남은 커피 양은 %d입니다." %coffee)
if coffee == 0:
print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
break
3. for문
: 문장 구조가 한눈에 잘 들어오고 매우 유용하여 자주 사용된다.
※ continue문 사용 가능. for문의 처음으로 돌아간다.
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 |
- range함수
: 숫자 리스트를 자동으로 만들어준다. range(시작숫자, 끝숫자, [n]) "시작~끝 미만 [n씩증가]"
range(10) : 0부터 10미만의 숫자를 포함하는 range객체를 만들어준다. 끝 숫자는 포함되지 않는다.
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):
if marks[number] < 60: continue
print("%d번 학생 합격입니다." %(number+1))
#구구단
for i in range(2, 10):
for j in range (1, 10):
print(i*j, end=" ")
print('')
end = " ": 결과값을 출력할 때 다음 줄로 넘기지 않고 그 줄에 계속해서 출력하기 위해서 사용
- 리스트 내포
[표현식 for 항목 in 반복가능객체 if 조건]
a = [1, 2, 3, 4]
result = [] # list()와 동일
for num in a:
result.append(num*3)
print(result) #[3, 6, 9, 12] 출력
#리스트 내포를 사용
result = [num*3 for num in a]
print(result) #[3, 6, 9, 12] 출력
+) 리스트 내포 안의 if문
a = [1, 2, 3, 4]
result = [num*3 for num in a if num%2 == 0] #짝수만 출력
print(result)
# [6, 12] 출력
+) 리스트 내포 안의 if, else문
: else문 사용하려면 for문 앞에 작성해야한다.
number = [1, 2, 3, 4, 5]
result = [i*2 if i % 2 != 0 else i for i in number]
print(result)