반복문 (While문, For문)
while문
while문은 반복해서 문장을 수행해야 하는 경우 사용합니다.
while문의 구조는 다음과 같습니다.
while 조건문:
수행할 문장 1
수행할 문장 2
while문도 if문처럼 조건문이 True이면 조건에 해당하는 문장이 수행됩니다. if문과 다른점은 조건문이 True일 경우 조건문 내의 문장이 계속 수행됩니다. 다음 스크립트는 while 조건문이 True이면 수행할 문장 1과 2가 계속 수행됩니다. 프로그램이 무한루프에 빠지므로 주의하시기 바랍니다.
while True:
수행할 문장 1
수행할 문장 2
Output:
수행할 문장 1
수행할 문장 2
수행할 문장 1
수행할 문장 2
수행할 문장 1
수행할 문장 2
…….
다음 스크립트는 조건문을 만족하면 5번 출력하는 예제입니다. 조건문 j < 5에서 j의 초기값은 0입니다. 만약 j값이 변화가 없으면 무한루프에 빠지게 됩니다. j값의 변화를 주기 위해서 j = j + 1를 하여 1번 반복할 때마다 1씩 증가시키도록 하였습니다.
j = 0 # 변수 j를 0으로 초기화한다.
while j < 5: # j가 5보다 작을 때만 조건문이 True
j = j + 1 # j를 1씩 증가시킨다.
print("{0} = hello".format(j))
Output:
1 = hello
2 = hello
3 = hello
4 = hello
5 = hello
while문 강제로 빠져나오기
while문을 돌다가 어떤 조건이 되었을 때 빠져나오려면 break를 사용하면 됩니다.
다음 스크립트는 break를 사용한 예제입니다. input()함수는 사용자로부터 키보드 입력을 기다리는 함수입니다. 사용자가 숫자를 입력하면 money변수에 숫자가 할당됩니다. 0이 아닌 숫자를 입력하면 “money=입력한 숫자”를 출력합니다. 0을 입력하면 while문을 빠져나오면서 “while문을 빠져나왔습니다”가 출력됩니다.
while True:
money = int(input("액수를 입력해 주세요: "))
if money == 0:
print("액수가 0입니다.")
break # while문을 빠져나갑니다.
else:
print("money = {}".format(money))
print("while 문을 빠져나왔습니다.")
Output:
액수를 입력해 주세요: 300
money = 300
액수를 입력해 주세요: 200
money = 200
액수를 입력해 주세요: 0
액수가 0입니다.
while 문을 빠져나왔습니다.
while 문의 맨 처음으로 돌아가기
while문을 돌다가 어떤 조건이 되었을 때 while문의 처음으로 돌아가기 위해서 continue를 사용합니다.
다음 스크립트는 j를 0으로 초기화하고 while문 안에서 j를 1씩 증가시키면서 출력하였습니다. 그러나 j가 2가 되었을 때는 continue를 만나서 while문의 처음 위치로 돌아가므로 2가 출력되지 않습니다.
j = 0 # 변수 j를 0으로 초기화한다.
while j < 5: # j가 5보다 작을 때만 조건문이 True
j = j + 1 # j를 1씩 증가시킨다.
if j == 2:
continue # 처음으로 돌아간다.
print("{0} = hello".format(j))
Output:
1 = hello
3 = hello
4 = hello
5 = hello
for 문
파이썬의 for문은 다른 프로그래밍 언어와 조금 다릅니다. 파이썬에서 for문은 일련의 객체를 반복합니다. 즉, 시퀀스에 있는 각 요소값들을 반복합니다.
for문의 구조는 다음과 같습니다. 여기서, 시퀀스는 리스트, 튜플, 문자열을 사용할 수 있습니다. body는 시퀀스에 있는 모든 요소들을 사용할 수 있습니다.
for p in sequence:
body
다음 스크립트는 for문을 사용하여 str변수에 담긴 “String”을 문자 하나씩 출력하는 예제입니다.
str = "String"
for i in str:
print(i)
Output:
S
t
r
i
n
g
다음 스크립트는 리스트에 담겨있는 요소를 출력하는 예제입니다. list_ex 리스트 변수에 3개의 요소가 담겨있습니다. for문에 처음 진입하면 i는 첫번째 요소인 ‘one’을 할당하고 출력합니다. 그 다음 ‘two’와 ‘three’를 순서대로 출력합니다.
list_ex = ['one', 'two', 'three']
for i in list_ex:
print(i)
Output:
one
two
three
다음 스크립트는 리스트의 요소값에 튜플이 담겨있는 경우 for문으로 출력하는 예제입니다.
list_ex = [(1, 2), (3, 4), (5, 6)]
for (first, last) in list_ex:
print("first = {}, last = {}".format(first, last))
Output:
first = 1, last = 2
first = 3, last = 4
first = 5, last = 6
for문에서 continue 사용하기
for문에서도 while문과 마찬가지로 for문을 실행하는 도중에 어떤 조건에 들어오면 그 이후 문장은 실행되지 않고 for문의 처음 위치로 이동해서 다음 요소값으로 이동합니다.
다음 스크립트는 continue의 간단한 예제입니다. 리스트 요소값 중 ‘two’를 만났을 때 continue를 사용하였습니다. ‘two’일 경우 print(i)가 실행되지 않습니다.
list_ex = ['one', 'two', 'three']
for i in list_ex:
if i == 'two':
continue
print(i)
Output:
one
three
for문에서 range함수 사용하기
range함수는 숫자 리스트를 자동으로 만들어 주는 함수입니다. 사용법은 다음과 같습니다.
range(숫자) # 0, 1, 2, 3, 4, 5, … , 숫자-1 까지 만들어집니다.
ex) range(5) # 0, 1, 2, 3, 4
range(시작 숫자, 끝 숫자) # “시작 숫자”부터 “끝 숫자 -1”까지의 숫자를 만들어줍니다.
ex) range(1, 5) # 1, 2, 3, 4
다음 스크립트는 range(3)를 이용하여 for문으로 python을 출력하는 예제입니다.
for i in range(3):
print("{} : python".format(i))
Output:
0 : python
1 : python
2 : python
다음 스크립트는 range함수에서 값을 감소시키면서 출력하는 예제입니다.
for i in range(3, 0, -1):
print("{} : python".format(i))
Output:
3 : python
2 : python
1 : python
리스트 내포 사용하기
리스트 안에 for문을 포함하면 더 직관적이고 편리하게 사용할 수 있습니다. 사용법은 다음과 같습니다.
표현식 for 항목 in sequence if 조건
다음 스크립트는 list_1에 담겨있는 요소들 각각에 2를 곱한 후 list_2에 담는 예제입니다.
< 리스트 내포를 사용하지 않은 경우 >
list_1 = [2, 4, 6, 8]
list_2 = []
for i in list_1:
list_2.append(i*2)
print(list_2)
Output:
[4, 8, 12, 16]
<리스트 내포를 사용한 경우>
list_1 = [2, 4, 6, 8]
list_2 = [i*2 for i in list_1]
print(list_2)
Output:
[4, 8, 12, 16]
다음 스크립트는 리스트 내포를 사용하고 if 조건문까지 사용한 예제입니다. list_1에 있는 요소들 중에 짝수인 요소만 list_2에 담는 예제입니다.
list_1 = [1, 2, 3, 4, 5, 6]
list_2 = [i for i in list_1 if i % 2 == 0]
print(list_2)
Output:
[2, 4, 6]
'프로그래밍 언어 > 파이썬 (Python)' 카테고리의 다른 글
[파이썬 학습] 람다함수와 재귀함수 (0) | 2022.02.05 |
---|---|
[파이썬 학습] 함수 (0) | 2022.02.04 |
[파이썬 학습] if 조건문 (0) | 2022.02.03 |
[파이썬 학습] : 연산자 (0) | 2022.01.29 |
[파이썬 학습] : 튜플(Tuples)과 딕셔너리(Dictionaries) (0) | 2022.01.28 |