ko ko ko en en en ko ko cs zh ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko en ko ko ko ko ko ko ko ko en ko ko ko en ko ko ko fr ko ko ko en ko ko fr ko ko en ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko ko fr ko ko ko ko fr ko ko ko en en ko en zh en en
파이썬 코딩 도장: 17.1 while 반복문 사용하기
◀ 16.6 심사문제: 구구단 출력하기17.2 반복 횟수가 정해지지 않은 경우 ▶︎
Unit 17. while 반복문으로 Hello, world! 100번 출력하기
지금까지 for 반복문을 사용하여 'Hello, world!'를 100번 출력해보았습니다. 이번에는 while 반복문에 대해 알아보겠습니다.
while 반복문은 조건식으로만 동작하며 반복할 코드 안에 조건식에 영향을 주는 변화식이 들어갑니다.
i = 0                     # 초기식 while i < 100:            # while 조건식      print('Hello, world!')    # 반복할 코드      i += 1                    # 변화식
다음은 while 반복문의 실행 과정입니다. 먼저 초기식부터 시작하여 조건식을 판별합니다. 이때 조건식이 참(True)이면 반복할 코드와 변화식을 함께 수행합니다. 그리고 다시 조건식을 판별하여 참(True)이면 코드를 계속 반복하고, 거짓(False)이면 반복문을 끝낸 뒤 다음 코드를 실행합니다.
▼ 그림 17-1 while 반복문의 동작 과정
여기서는 조건식 → 반복할 코드 및 변화식 → 조건식으로 순환하는 부분이 루프(loop)입니다.
다음과 같이 while 반복문은 조건식을 지정하고 끝에 :(콜론)을 붙인 뒤 다음 줄에 반복할 코드와 변화식을 넣습니다. 초기식은 특별한 것이 없고 보통 변수에 값을 저장하는 코드입니다.
초기식 while 조건식:      반복할 코드      변화식
while 다음 줄에 오는 코드는 반드시 들여쓰기를 해줍니다.
이제 while 반복문으로 'Hello, world!'를 100번 출력해보겠습니다.
SyntaxError: invalid syntax: while 반복문의 형식을 지키지 않았을 때 발생하는 구문 에러입니다. while 끝에 :(콜론)을 빠뜨리지 않았는지 확인해주세요.
SyntaxError: expected an indented block: while 다음 줄에 오는 반복할 코드의 들여쓰기가 맞지 않아서 발생하는 구문 에러입니다. 반복할 코드와 변화식에서 들여쓰기 4칸을 했는지 확인해주세요.
먼저 while 반복문에 사용할 변수 i에 0을 할당합니다. 그리고 while에는 조건식만 지정하면 됩니다. 특히 while 반복문은 반복할 코드 안에 변화식을 지정해야 합니다. 만약 조건식만 지정하고 변화식을 생략하면 반복이 끝나지 않고 계속 실행(무한 루프)되므로 주의해야 합니다.
▼ 그림 17-2 while 반복문의 기본 형태
i < 100과 같이 조건식을 지정하여 i가 100 미만일 때만 반복하고, i가 100이 되면 반복을 끝내도록 만들었습니다. 그리고 반복할 코드의 변화식에는 i += 1로 i를 1씩 증가시켰으므로 i가 0부터 99까지 증가하면서 100번 반복하게 됩니다. 물론 변화식 i += 1을 풀어서 i = i + 1로 만들어도 동작은 같습니다.
17.1.1  초깃값을 1부터 시작하기
이번에는 i에 0이 아닌 1을 할당하여 'Hello, world!'를 100번 출력해보겠습니다.
>>> i = 1 >>> while i <= 100: ...     print('Hello, world!', i) ...     i += 1 ... Hello, world! 1 Hello, world! 2 Hello, world! 3 ...  (생략) Hello, world! 99 Hello, world! 100
i에 1을 넣었으므로 while의 조건식은 i <= 100과 같이 지정합니다. 따라서 i가 1부터 100까지 증가하므로 100번 반복하게 됩니다. 만약 i가 101이 되면 i <= 100은 거짓( False)이므로 반복문을 끝냅니다.
지금까지 초깃값을 증가시키면서 루프를 실행했습니다. 반대로 초깃값을 크게 주고, 변수를 감소시키면서 반복할 수도 있습니다. 다음은 100부터 1까지 100번 반복합니다.
>>> i = 100 >>> while i > 0: ...     print('Hello, world!', i) ...     i -= 1 ... Hello, world! 100 Hello, world! 99 Hello, world! 98 ... (생략) Hello, world! 2 Hello, world! 1
100부터 1까지 반복해야 하므로 먼저 i에 100을 할당합니다. 그다음에 while의 조건식은 i > 0과 같이 지정하여 1까지만 반복하도록 만듭니다. 또한, 변화식을 i -= 1로 지정하여 변수의 값을 감소시킵니다. 이렇게 하면 i가 100부터 1까지 감소하면서 반복합니다. 만약 i가 0이되면 i > 0은 거짓(False)이므로 반복문을 끝냅니다.
17.1.3  입력한 횟수대로 반복하기
이번에는 입력한 횟수대로 반복을 해보겠습니다. 다음 내용을 IDLE의 소스 코드 편집 창에 입력하세요.
count = int(input('반복할 횟수를 입력하세요: '))   i = 0 while i < count:     # i가 count보다 작을 때 반복     print('Hello, world!', i)     i += 1
소스 코드를 실행하면 '반복할 횟수를 입력하세요: '가 출력됩니다. 여기서 3을 입력하고 엔터 키를 누르세요.
반복할 횟수를 입력하세요: 3 (입력) Hello, world! 0 Hello, world! 1 Hello, world! 2
input으로 입력 값을 받아서 count 변수에 저장했습니다. 그리고 i에는 0을 할당하고, while 반복문의 조건식에서 i < count와 같이 지정하여 count에 들어있는 값만큼 반복하도록 만들었습니다. 여기서는 3를 입력했으므로 'Hello, world!'는 3번만 출력됩니다.
이번에는 초깃값을 받은 뒤 초깃값만큼 출력해보겠습니다.
count = int(input('반복할 횟수를 입력하세요: '))   while count > 0:     # count가 0보다 클 때 반복     print('Hello, world!', count)     count -= 1       # count를 1씩 감소시킴
반복할 횟수를 입력하세요: 3 (입력) Hello, world! 3 Hello, world! 2 Hello, world! 1
input으로 입력 값을 받아서 count 변수에 저장했습니다. 그리고 조건식에서 count > 0와 같이 지정하여 count에 들어있는 값만큼 반복하도록 만들었습니다. 여기서는 변수 i 대신 count를 바로 사용하므로 변화식을 count -= 1로 지정하여 반복할 때마다 count를 감소시키고 count가 0이 되면 반복문을 끝냅니다.
◀ 16.6 심사문제: 구구단 출력하기17.2 반복 횟수가 정해지지 않은 경우 ▶︎
Unit 1. 소프트웨어 교육과 파이썬
Unit 2. 파이썬 설치하기
Unit 3. Hello, world!로 시작하기
Unit 4. 기본 문법 알아보기
Unit 5. 숫자 계산하기
Unit 6. 변수와 입력 사용하기
Unit 7. 출력 방법 알아보기
Unit 8. 불과 비교, 논리 연산자 알아보기
Unit 9. 문자열 사용하기
Unit 10. 리스트와 튜플 사용하기
Unit 11. 시퀀스 자료형 활용하기
Unit 12. 딕셔너리 사용하기
Unit 13. if 조건문으로 특정 조건일 때 코드 실행하기
Unit 14. else를 사용하여 두 방향으로 분기하기
Unit 15. elif를 사용하여 여러 방향으로 분기하기
Unit 16. for 반복문으로 Hello, world! 100번 출력하기
Unit 17. while 반복문으로 Hello, world! 100번 출력하기
17.1 while 반복문 사용하기
17.2 반복 횟수가 정해지지 않은 경우
17.3 while 반복문으로 무한 루프 만들기
17.5 연습문제: 변수 두 개를 다르게 반복하기
17.6 심사문제: 교통카드 잔액 출력하기
Unit 18. break, continue로 반복문 제어하기
Unit 19. 계단식으로 별 출력하기
Unit 20. FizzBuzz 문제
Unit 21. 터틀 그래픽스로 그림 그리기
Unit 22. 리스트와 튜플 응용하기
Unit 23. 2차원 리스트 사용하기
Unit 24. 문자열 응용하기
Unit 25. 딕셔너리 응용하기
Unit 26. 세트 사용하기
Unit 27. 파일 사용하기
Unit 28. 회문 판별과 N-gram 만들기
Unit 29. 함수 사용하기
Unit 30. 함수에서 위치 인수와 키워드 인수 사용하기
Unit 31. 함수에서 재귀호출 사용하기
Unit 32. 람다 표현식 사용하기
Unit 33. 클로저 사용하기
Unit 34. 클래스 사용하기
Unit 35. 클래스 속성과 정적, 클래스 메서드 사용하기
Unit 36. 클래스 상속 사용하기
Unit 37. 두 점 사이의 거리 구하기
Unit 38. 예외 처리 사용하기
Unit 39. 이터레이터 사용하기
Unit 40. 제너레이터 사용하기
Unit 41. 코루틴 사용하기
Unit 42. 데코레이터 사용하기
Unit 43. 정규표현식 사용하기
Unit 44. 모듈과 패키지 사용하기
Unit 45. 모듈과 패키지 만들기
Unit 46. 실전예제: 웹의 데이터로 그래프 그리기
C 언어 코딩 도장
- 이 사이트에 실린 모든 내용, 디자인, 이미지, 편집 구성의 저작권은 (주)도서출판 길벗과 지은이에게 있습니다.
- 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다.
- 책의 내용을 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다.
- 링크, SNS 공유는 허용합니다.
서울시 마포구 서교동 월드컵로 10길 56 (서울시 마포구 서교동 467-9)
Copyright © 2016-2021 Coding Dojang