Python:Loop

aiden·2023년 6월 3일
0

Python

목록 보기
4/14

같은 작업을 여러 번 반복하여 실행하기 위해 반복(iteration)문이 필요하다.
반복문에는 for문과 while문이 있다.

For문

for문은 정해진 횟수만큼 동작을 반복할 때 사용한다. 다음과 같은 구조를 가진다.

리스트에 대한 반복

시퀀스에 항목이 남아있으면 다음 항목을, 그렇지 않다면 for 반복문을 빠져나온다. 다음 예시를 보면 어떤 방식으로 작동하는지 알 수 있다.

for name in ["사과", "수박", "자두", "포도" ]: 
	print("제 이름은 " + name + "입니다.")

제 이름은 사과입니다.
제 이름은 수박입니다.
제 이름은 자두입니다.
제 이름은 포도입니다.

for문에 있는 name과 같은 변수를 루프 변수라 한다. 변수 이름은 원하는 대로 설정할 수 있다. 루프 몸체는 들여쓰기해야 한다.

정수 리스트에 대한 반복

정수 리스트에서 정수를 출력하는 것 또한 동일한 방식으로 작성한다.

for x in [5, 4, 3, 2, 1]: 
	print(x)

5
4
3
2
1

for문이 실행되면 리스트에서 정수를 하나씩 꺼내 변수 x에 할당하고, 몸체에 있는 명령문을 실행한다.

range( )에 대한 반복

이 때, 리스트를 직접 만들지 않고 range() 함수를 이용하여 반복문을 구성할 수 있다.
이 함수를 이용하면 원하는 구간의 정수를 생성할 수 있다.
예를 들어 range(10)은 0부터 9까지의 정수를 연속으로 반환한다. range(3, 10)과 같이 범위를 설정할 수도 있다. 이 함수는 3부터 9까지의 정수를 반환한다. step을 설정할 수도 있는데, 예를 들어 range(0, 10, 2)는 0부터 9까지 2씩 건너뛰면서 반환한다. 즉 0, 2, 4, 6, 8을 반환한다.

정리하면 range 함수는 다음과 같은 형식이 가능하다.

range(stop)
range(start, stop)
range(start, stop, step)
//stop 이전까지만 반환, 기재되어있지 않은 경우 start는 0, step은 1로 간주됨

👉🏻ranege() 함수가 반환하는 것은 연속적인 정수를 생성하는 제너레이터 객체이다. 리스트를 생성하지 않는다. 리스트로 생성하고 싶은 경우, list(range(10))과 같이 range 함수가 반환하는 객체를 받아 list로 변환해주면 된다.
다음을 참고하자.

print(range(10))
print(list(range(10)))

range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

문자열에 대한 반복

문자열 또한 시퀀스가 될 수 있다. 다음 예시와 같이 사용할 수 있다.

for c in "abcdefg":
	print(c , end = " ")

a b c d e f g

👉🏻print 함수의 두 번 째 인자로 전달된 end = " "의 의미는 c를 출력한 후에 개행을 하지 말고 따옴표 안의 값, 공백을 출력하라는 의미이다. 따라서 줄이 바뀌지 않고 한 줄에 출력되었다.

While문

while문은 조건을 정해놓고 반복을 할 때 사용한다. 구조는 다음과 같다.

보초값(sentinel)

반복문에서 입력할 데이터의 개수가 정해져있지 않거나 데이터가 너무 많아 개수를 알기 어려운 상황에서는 데이터의 끝에 끝임을 알리는 특수한 데이터를 놓을 수 있는데, 이를 보초값이라 한다. 예를 들어 프로그램을 종료하려면 음수를 입력하거나 0을 입력하도록 할 수 있다.

중첩 루프

반복문도 조건문처럼 중첩할 수 있다. 다음 예시와 같이 활용한다.

예시 코드의 end = ""는 개행을 하지 않기 위해, print("")는 개행을 위해 삽입되었다.

문자열 처리

문자열도 시퀀스이므로, 반복문을 통해 쉽게 처리할 수 있다.

문자열을 입력받아 모음을 제거하는 코드는 다음과 같이 작성할 수 있다.


Python Tutor라는 도구를 이용하면 파이썬 코드의 실행을 그림으로 시각화하여 볼 수 있다.

사이트 주소 : https://pythontutor.com/

profile
파인애플 좋아하세요?

0개의 댓글