https://book.naver.com/bookdb/book_detail.nhn?bid=16268369
으뜸 파이썬과 함께 공부하는 포스트입니다.
앞에서 배운 for문을 중첩시켜 구구단 프로그램을 만들어 보자.
구구단은 보통 2단에서 9단까지 외운다. 그러므로 단은 range(2,10)으로 표현할 수 있다. 그 다음, 각 단의 수에 1에서 9를 곱한 결과가 필요하다. 곱해지는 수는 range(1,10)이다.

실행 결과

여기서 end = ' ' 와 마지막에 입력한 print()는 줄바꿈을 위한 코드이다.
중첩 루프는 코드를 이해하기가 다소 어렵기 때문에 이중루프와 삼중루프 까지만 사용하고, 그 이상으로는 잘 사용하지 않는다.
중첩루프와 기호를 사용하여 패턴도 만들 수 있다.

실행 결과

이런 패턴을 만들기 위해서 루프가 수행 될 때마다 공백 값이 하나씩 증가하는 코드를 작성했다. 따라서 첫 for문에서는 i값이 0에서 1씩 증가하도록 하고, 내부 루프에서는 i의 개수만큼의 공백을 '#' 표시 앞에 추가하는 방식을 사용했다.
그런데 이 패턴은 중첩을 하지 않고도 생성할 수 있다.

print문 내에 공백의 출력 횟수를 지정하는 방식이다. 가능하면 이런 코드를 작성하는 편이 간결성, 가독성에 좋다.
상향식 문제풀이 기법은 작은 기능을 구현하여 이 기능을 바탕으로 전체 기능을 구현하는 것이다.
이 기법으로 삼각형 패턴을 출력해보자.

실행 결과

이 코드도 앞의 코드와 마찬가지로 중첩문을 쓰지 않고도 작성할 수 있다.

실행 결과

while 반복문은 조건이 참인 동안 계속 실행하는 반복문이다. 즉 if문은 조건이 참일 때 한 번만 실행하지만, while 반복문은 조건이 참이라면 몇 번이고 계속 반복하여 실행한다.
while문은 if문과 매우 유사하다. 즉 while 키워드 다음에 참, 거짓을 판별할 수 있는 조건식이 나타나며, while 키워드 뒤에 조건식을 작성하고 콜론(:)을 붙여준다. 그리고 들여쓰기를 한 후 실행할 코드를 작성하면 된다. 이때 조건식이 참이면 계속 반복하여 코드를 실행한다.
for문에서 했던 문장 반복 출력을 해보겠다.

실행 결과

for문과 다르게 범위가 아닌 조건식을 먼저 설정해준다. 조건식이 참이면 print()문을 계속 반복한다.
그 후 조건값을 변경해주어 몇번 출력할 지를 설정해준다.
while문으로도 누적 합을 구해보겠다. 하지만 권장하진 않는다. 반복 실행의 횟수가 명확하면 for문보다 코드가 길어지기 때문이다.

실행 결과

for 문이 확실히 간결하고 작성하기도 쉽다. 패턴 만들기도 while보다 for에서 작성하기 편하다.
이렇게만 보면 while문의 존재 이유가 궁금해질 것이다. 당연히 while문에도 장점이 있다. 수행 횟수를 정확하게 모르지만 수행의 조건이 명확할 때는 while문이 더 적합하다.
그러나 리스트, 튜플, 세트와 같은 미리 설계된 자료구조의 원소를 순회하는 경우나 루프의 반복횟수가 명확할 때는 for문이 더 적합하다.
장점을 살릴 코드중에는 가위 바위 보가 있다.

실행 결과

이처럼 원하는 값이 입력되면 실행이 되도록 하는 반복 구조에 매우 적합하다.
이 둘은 반복문을 제어하는 키워드로, 반복문 실행 중에 반복 실행을 종료하고 싶을 때는 break를, 반복문 루프 내의 나머지 실행부를 건너뛰고 계속해서 반복 루프를 실행하고 싶을 때는 break를, 반복문 루프 내의 나머지 실행부를 건너뛰고 계속해서 반복루프를 실행하고 싶을때는 continue를 사용한다.
continue는 반복 실행을 완전히 종료하지는 않는다는 점에서 break와 다르다.

실행 결과

위는 모음이 있으면 실행을 중지하는 코드이다. if로 조건을 설정해놓은 뒤, 조건을 만족시키면 break , 즉 멈춘다는 뜻인데, 뒤에 print(i)로 멈추기 전까지의 자음을 출력한다. 'Program'에서 o가 첫번째 모음이므로, 그 앞의 자음인 P와 r만 출력하는 것을 볼 수 있다.
이번에는 break 대신 continue를 써보자.

실행 결과

보다시피 자음만 출력된다. continue는 조건에 충족하는 식만 건너뛰고 계속하는 명령이다. 이러한 코드를 가지고 문장을 판별하는 문장을 작성하면 좋다고 생각한다.