뚝딱햄 탈출기

[Python] 반복문 : while문, for문 본문

Programming language/Python

[Python] 반복문 : while문, for문

hyrmzz1 2023. 10. 2. 23:23
이것이 취업을 위한 코딩 테스트다 with 파이썬 - 나동빈 저
APPENDIX A. 코딩 테스트를 위한 파이썬 문법 정리 내용

반복문이란?

반복문은 특정한 소스코드를 반복적으로 실행하고자 할 때 사용한다.

While문

while문은 조건문이 참일 때에 한해 반복적으로 코드가 수행된다.

# 1부터 9까지 각 정수의 합을 계산하기
i = 1
result = 0

while i <= 9:	# i가 9보다 작거나 같을 때 블록 반복 실행
	result += i
	i += 1	# 파이썬에는 증감 연산자가 사용되지 않으므로 i++ 라고 작성하면 안된다!

print(result)	#45
# 1부터 9까지의 수 중 홀수의 합을 계산하기
i = 1
result = 0

while i <= 9:
	if i % 2 == 1:
		result += i
	i += 1	# 이 코드를 if문 내에 작성하면 안된다!

print(result)	# 25

조건문 설정에 따라 블록(반복문 내의 코드)을 영원히 반복할 수 있고, 이를 무한 루프라 한다.

코딩 테스트에서는 무한 루프를 구현할 일이 거의 없으니 실수로 무한 루프가 발생하지 않도록 주의하자.

For문

코딩 테스트에서의 실제 사용 예시를 확인해보면 대부분의 경우에서 for문이 더 소스코드가 짧다.

리스트를 사용하는 대표적인 for문의 구조이다.

for 변수 in 리스트:
	실행할 소스코드

in 뒤에 오는 데이터에 포함되어 있는 모든 원소를 첫 번째 인덱스부터 차례대로 하나씩 방문한다.

in 뒤에 오는 데이터로는 리스트, 튜플, 문자열 등이 있다.

# for문과 리스트 함께 사용하기 1
list = [38, 21, 53, 62, 19]

for i in list:
	print(i)

'''
실행 결과
38
21
53
62
19
'''

# for문과 리스트 함께 사용하기 2
for i in [1,2,3,4,5]:
	print(i)

'''
실행 결과
1
2
3
4
5
'''
# for문과 튜플 함께 사용하기
tuple = (1, 2, 3, 4, 5)

for i in tuple:
	print(i)

'''
실행 결과
1
2
3
4
5
'''
# for문과 문자열 함께 사용하기
 for i in 'Hello World':
	print(i)
    
'''
실행 결과
H
e
l
l
o

W
o
r
l
d
'''

range()

for문에서 수를 차례대로 나열할 때는 range()를 주로 사용하며, range(시작 값, 끝 값 + 1) 형태로 쓰인다.

# 1부터 9까지 각 정수의 합을 계산하기
result = 0

for i in range(1, 10):
	result += i
    
print(result)	# 45

range()의 값으로 하나의 값만을 넣으면 자동으로 시작 값은 0이 된다.

리스트나 튜플의 인덱스는 0부터 출발하기 때문에, 리스트나 튜플 데이터의 모든 원소를 첫 번째 인덱스부터 방문해야 할 때 이 방법을 사용한다.

# 학생의 번호를 1번부터 매길 때, 학생마다 합격 여부 출력하기
scores = [90, 84, 77, 65, 93]

for i in range(5):	# i는 0부터 4까지 모든 값을 순회
	if scores[i] >= 80:
		print(i + 1, "번 학생은 80점 이상이므로 합격입니다.")

'''
실행 결과
1번 학생은 80점 이상이므로 합격입니다.
2번 학생은 80점 이상이므로 합격입니다.
5번 학생은 80점 이상이므로 합격입니다.
'''

continue

반복문 안에서 continue를 만나면 프로그램의 흐름은 반복문의 처음으로 돌아간다. (continue 이후 코드 실행 X)

# 80점 이상인 학생은 합격이나, cheating_list에 있는 학생은 점수에 상관없이 합격할 수 없다.
# cheating_list에 포함된 번호의 학생 무시하고 다시 다음 번호부터 처리해보자.
scores = [90, 84, 77, 65, 93]
cheating_list = {2, 4}

for i in range(5):	# i는 0부터 4까지 모든 값을 순회
	if i + 1 in cheating_list:
		continue	# 반복문의 처음으로 돌아감.
	if scores[i] >= 80:
		print(i + 1, "번 학생은 80점 이상이므로 합격입니다.")

'''
실행 결과
1번 학생은 80점 이상이므로 합격입니다.
5번 학생은 80점 이상이므로 합격입니다.
'''

중첩 반복문

반복문은 얼마든지 중첩해서 사용할 수 있다.

2중 반복문의 대표적 예시는 구구단이며, 중첩 반복문은 코딩 테스트에서 '플로이드 워셜 알고리즘', '다이나믹 프로그래밍' 등의 알고리즘 문제에서 매우 많이 사용된다.

# 구구단 2단부터 9단까지의 모든 결과 출력하기
for i in range(2, 10):
	print(i, "단")
	for j in range(1, 10):
		print(i, "×", j, "=", i*j)
	print()
Comments