롸?
제어문 - if, while, for 본문
1. if
- 기본 구조
if <조건식 1> :
구문 1
elif <조건식 2> :
구문 2
else:
구문 3
- 예제
score = 88
if 90 <= score <= 100:
grade = 'A'
elif 80 <= score < 90:
grade = 'B'
elif 70 <= score < 80:
grade = 'C'
else:
grade = 'D'
java나 C에서 'grade >= 80 && grade < 90'으로 표현한 것과 달리 직관적인 구문을 지원
- 조건부 표현식
if score >= 60:
message = "success"
else:
message = "failure"
위 와 같은 코드는 조건부 표현식(conditional expression)을 사용하면 더 짧고 간단히 표현할 수 있다.
message = "success" if score >= 60 else "failure"
조건문이 참인 경우 if 조건문 else 조건문이 거짓인 경우
- 단축 평가
2개 이상의 논리식을 판별하기 위해 and, &, or, | 연산자를 사용한다. 하지만 모든 경우에 and와 &, or 와 |가 동일하게 수행되는 것은 아니다.
a = 0
if a & 10 / a:
print('a가 0입니다')
else:
print('에러 없이 통과')
위의 코드 조건식 'a & 10 / a' 중 '10 / a'는 a가 0 인 경우 'ZeroDivisionError'를 발생시킨다. 실제로 위 코드를 수행하면 에러가 발생한다.
하지만 a가 '0'인 경우, 조건식 'a & 10 / a'중 앞부분인 a가 거짓이기 때문에 뒷부분을 판단하지 않아도 조건식 전체가 거짓인 것은 분명하다. 이처럼 조건식 전체를 판단하지 않고 순차적으로 진행하다 수식의 평가가 자명한 경우에 뒤의 수식을 평가하지 않는 것을 단축 평가라고 한다.
다음 예제는 논리적인 구조는 같지만 & 대신 and를 사용해 단축 평가가 이루어져 예외가 발생하지 않는 경우이다.
a = 0
if a and 10 / a:
print('a가 0입니다')
else:
print('에러 없이 통과')
파이썬에서는 and, or의 경우 반드시 좌변 피연산자가 우변 피연산자보다 먼저 단축 평가되도록 보장하고 있다.
2. while
- 기본 구조
while <조건식>:
구문
- 예제
v = 5
while v > 5:
print(v)
3. for
- 기본 구조
for <변수> in <Sequence형 객체>:
구문
- 예제 및 응용
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
#구구단 출력
for i in range(2,10):
print('{}단'.format(i))
for j in range(1, 10):
print('{} * {} = {}'.format(i, j, i*j))
※range() : for문과 함께 자주 사용되는 함수로 숫자 리스트를 자동으로 만들어준다. 인자를 10으로 주면 0부터 10미만까지, 인자를 두 개를 주면 시작 숫자부터 끝 숫자 미만인 리스트를 만들어준다.
4. break, continue, else
for, while 반복문은 break와 continue로 반복문을 제어할 수 있다. break는 반복문 강제 탈출, continue는 반복문 시작지점으로 이동한다.
else는 break문을 통해 강제 종료되지 않고 끝까지 수행했을 경우 수행된다.
- 예제
list = range(10)
for i in list:
if i % 2 == 0:
continue
elif i > 6:
break
print('item : {}'.format(i))
else:
print('break 없이 종료')
5. 리스트 내장
리스트 안에 for문을 포함하는 리스트 내장(List comprehension)를 사용하면 좀 더 편리하고 직관적인 프로그램을 만들 수 있다.
- 리스트의 각 항목에 3을 곱한 결과를 result 리스트에 담기
a = [1, 2, 3, 4]
result = [num * 3 for num in a]
result #[3, 6, 9, 12]
만약 조건을 추가 하고 싶다면 if문을 추가하여 사용할 수 있다.
- 리스트 항목 중 짝수만 3을 곱해서 result 리스트에 담기
a = [1, 2, 3, 4]
result = [num * 3 for num in a if num % 2 == 0]
result #[6, 12]
참고
2. 참고 서적 - 빠르게 활용하는 파이썬 3.6 프로그래밍
'프로그래밍 > Python' 카테고리의 다른 글
모듈 (0) | 2020.05.08 |
---|---|
클래스 (0) | 2020.05.08 |
함수, lambda (0) | 2020.05.07 |
클로저 (0) | 2020.05.07 |
자료형 - String, List, Set, Tuple, Dict (0) | 2020.05.07 |