참고자료 - 데이터 과학을 위한 파이썬 프로그래밍
2. 파이썬 기초 - 03
제어문 (조건문, 반복문)
학습목표
- 반복문의 개념과 for문, while문에 대해 학습하고, 반복문의 제어에 대해 이해한다.
- 문자열 역순 출력 및 십진수를 이진수로 변환하는 실습을 진행한다.
- 코드의 오류를 처리하는 방법에 대해 학습한다.
반복문
01 반복문
- 반복문(loop)의 개념
- 반복문: 정해진 동작을 반복적으로 수행할 때 사용하는 명령어
ex) - 학생 100명의 성적 산출
- 쇼핑몰에서 상품 추천
- MS 워드에서 단어 바꾸기 명령 실행
→ 쇼핑몰에서 상품 추천
: 사용자의 상품 구매 특징과 다른 상품 간의 특징을 비교해야 한다.
→ 한 번에 일어나는 것이 아님 = 반복이 일어날 수밖에 없음
반복문의 특징
- 반복 시작 조건, 종료 조건, 수행 명령으로 구성되어 있다.
- 들여쓰기와 블록으로 구분한다.
- for와 while이라는 명령 키워드를 사용한다.
- for문
가장 기본적인 반복문
반복 범위를 지정하여 반복을 수행한다.
- for문 범위를 지정하는 방법
- 리스트 사용
- range 키워드 사용
🙌 range 문법의 기본 구조
for 변수 in range(시작 번호, 마지막 번호, 증가값)
** ‘시작 번호’와 ‘증가값’은 생략 가능 → 생략했을 경우 초깃값으로 시작번호는 0, 증가값은 1 입력
ex) range(1, 5)→ [1, 2, 3, 4] 리스트를 만듦
🙌 반복문에서 알아두면 좋은 상식
- 반복문의 변수는 대부분 i, j, k로 지정한다.
- 반복문은 대부분 0부터 반복을 시작한다.
- 반복문을 잘못 작성하면 무한 루프라고 하는 오류가 발생할 수 있다.
- 다양한 반복문 지원
- 문자열도 리스트와 같은 연속적인 데이터이므로 각 문자를 변수에 할당하여 화면에 출력할 수 있다.
- 문자열로 이루어진 리스트 값들도 사용할 수 있다.
- range 구문의 특성을 이용
- while문
while문은 어떤 조건이 만족하는 동안 명령 블록을 수행하고, 해당 조건이 거짓일 경우 더이상 반복 명령문을 수행하지 않는 구문이다.
→ if문과 반복문이 결합한 형태
🙌 for문과 while문의 사용
for문과 while문은 기본적으로 유사하며. 서로 변환이 가능하다. 하지만 두 구문의 쓰임에는 차이가 있다.
for문은 일반적으로 반복 횟수를 정확하게 알고 있고, 반복 횟수가 변하지 않을 때 사용한다.
ex) 학생들의 성적을 채점하는 프로그램 작성: 이미 학생이 총 몇 명인지 명확하게 알고 있음 → for문 사용
while문은 반복 실행 횟수가 명확하지 않고 조건을 만족하면 프로그램을 종료할 때 사용한다.
ex ) 가위바위보를 하는데 ‘이기면 종료하라’라는 조건을 준 프로그램 :언제 이길지 모름
→ while문 사용
- 반복문의 제어
파이썬에서는 중간에 반복을 종료하거나 실행 중인 반복문을 건너뛸 수도 있다.
- break문
break문이 반복문에 있으면 반복문을 강제로 종료시킬 수 있다.
논리적으로 반복을 종료하는 방법
- continue문
특정 조건에서 남은 명령을 건너뛰고 다음 반복문을 수행한다.
i == 5일 경우 바로 다음 줄 수행을 건너뛰고 그 다음 반복으로 넘어간다.
→ i = 6인 상태로 print(i)코드를 수행: 5를 제외한 나머지 값이 화면에 출력
- else문
반복문이 중간에 종료 없이 완벽히 수행되었는지를 명시적으로 확인하기 위해 필요하다.
어떤 조건이 완전히 끝났을 때 한번 더 실행해주는 역할을 한다.
🙌 반복문을 제어하는 구문의 사용
긴 코드를 작성할 때 중간에 break문이나 continue문이 있다면 코드가 오작동할 수도 있다. 특히 많은 사람과 함께 코딩할 때는 이런 코드로 인해 예측하지 못한 작동을 할 수도 있으니 주의해야 한다.
02 실습 : 구구단 계산기
- 실습 내용
구구단 계산기 프로그램은 사용자가 계산하고 싶은 단수를 입력하면 프로그램이 구구단을 출력
- 구구단 계산기의 규칙
- 프로그램이 시작되면 ‘구구단 몇 단을 계산할까?’가 출력된다.
- 사용자는 계산하고 싶은 구구단 단수를 입력한다.
- 프로그램은 ‘구구단 n단을 계산한다.’라는 메시지와 함께 구구단의 결과를 출력한다.
- 실행결과
- 문제 해결
for문과 input문을 이용하여 해결
- 처음 프로그램을 실행하면 print() 함수를 사용하여 ‘구구단 몇 단을 계산할까?’를 출력한다.
- 사용자가 입력한 값을 userjnput 변수에 할당한다.
- user_input 변수를 이용하여 화면에 구구단을 계산한다는 메시지를 출력한다.
- user_input이 문자열이므로 int() 함수를 사용하여 정수형으로 변환하여 int_input에 할당
- 입력된 숫자와 1부터 9까지의 곱을 반복문으로 표현한다. → range(1, 10)을 이용하여 1부터 9까지의 숫자를 발생시켜 i에 할당한다. 이 값들은 모두 int_input과 곱하여 그 결과값을 result 변수에 할당한다.
- print() 함수에 의해 구구단 형식으로 result 값을 출력한다.
03 조건문과 반복문 실습
- 문자열 역순 출력
reverse_sentence 변수는 입력된 문자열을 역순으로 출력하기 위한 변수이다.
→ for문을 사용하여 마지막 글자부터 출력되는 명령어를 생각!!!
→ 기존 sentence 변수에 있는 글자를 char라는 변수에 하나씩 저장한 후, 역순으로 reverse_sentence에 붙여넣는 구조
reverse_sentence : 4행의 reverse_sentence = char + reverse_sentence 중 오른쪽에 있는 값 reverse_sentence : char와 reverse_sentence가 합쳐진 왼쪽에 있는 reverse_sentence
- 십진수를 이진수로 변환
십진수 숫자를 2로 계속 나눈 후 그 나머지를 역순으로 취하면 이진수가 된다.
while문 사용
→ decimal 변수에 어떤 값이 들어오더라도 조건이 맞을 때까지 반복문이 실행되기 때문이다.
🙌주의깊게 봐야할 코드!!!
→ remainder = decimal % 2
: 나머지를 구해 remainder 변수에 저장 = 나머지 값을 ‘•••’ 기호를 사용하여 옆에 적은 것
→ decimal = decimal // 2
: 현재의 십진수를 2로 나눈 몫을 다시 decimal 변수에 저장
→ result = str(remainder) + result
: 값의 역순을 result 변수에 저장
04 실습 : 연속적인 구구단 계산기
- 실습 내용
연속적인 구구단이란 사용자가 종료할 때까지 입력한 숫자에 대한 구구단 결과를 출력하는 게임 0을 입력하면 프로그램은 종료한다.
- 연속적인 구구단 계산기 규칙
- 프로그램이 시작되면 ‘구구단 몇 단을 계산할까요(1~9)?’가 출력된다.
- 사용자는 계산하고 싶은 구구단 단수를 입력한다.
- 프로그램은 ‘구구단 n단을 계산합니다.’라는 메시지와 함께 구구단의 결과를 출력한다.
- 기존 예제와 다르게 이번에는 프로그램이 계속 실행되다가 종료 조건에 해당하는 숫자 (여기에서는0)를 입력하면 종료된다.
- 실행결과
- 문제 해결
while문 안에 다시 for문을 사용하여 문제 해결
- 사용자가 숫자를 입력할 수 있도록 안내 메시지를 출력한다.
- while문을 시작하기 전에 x = 1이라는 코드를 입력 → while문 시작 시 초기화하는 과정 while문이 무조건 한 번은 실행되어야 하므로 while문 조건 (x is not 0)을 만족할 수 있도록 x에 1을 먼저 할당하는 것!!!
- while 반복문을 시작한다. 가장 먼저 사용자에게 입력값을 받아 그 값을 x에 할당한다.
- x의 입력값에 따라 3가지 조건의 명령이 실행된다.
- 첫 번째 조건→ x에 0이 할당됐을 때 프로그램은 종료된다. break문을 호출하여 while문을 빠져나가 print() 함수를 통해 ‘구구단 게임을 종료합니다.’ 를 화면에 출력한다.
- 두 번째 조건→ x가 1 에서 9 사이의 숫자가 아닌 경우이다. 조건문 if not(1 <= x <= 9):으로 표현. 조건을 만족하면 화면에 입력이 잘못됐다는 안내 메시지를 출력한 후 continue문으로 while문의 처음으로 이동한다.
- 세 번째 조건 → 위 두 조건을 모두 만족하지 않았을 때 (1에서 9 사이의 숫자 제대로 입력) for문을 이용하여 화면에 입력된 숫자의 구구단 결과가 출력된다.
⇒ 반복문 안에 반복문이 있는 구조를 중첩 반복문(nested loop) 이라고 한다.
05 코드의 오류를 처리하는 방법
- 버그(bug)와 디버그(debug)
프로그래밍에서는 오류를 버그라고 하고, 오류를 수정하는 과정을 디버그라고 한다.
그리고 코드에서 오류를 만났을 때 잘못을 찾아내고 고치는 것을 디버깅이라고 한다.
- 오류의 종류와 해결 방법
오류를 발견해 수정하기 위해서는 오류의 발생 이유와 해결 방법을 알아야 한다. 오류가 왜 발생했는지 알기 위해서는 오류의 종류를 이해해야 한다.
- 문법적 오류
코딩 과정에서 인터프리터가 해석을 못해 코드 자체를 실행시키지 못하는 오류이다. 비교적 쉬운 유형의 오류이며, 대표적으로 들여쓰기 오류와 오탈자로 인한 오류가 있다.
-
- 들여쓰기 오류 (IndentationError)
y = 5 앞에 띄어쓰기가 되어 있는데, 파이썬은 이유 없는 띄어쓰기를 허용하지 않는다.
따라서 띄어쓰기가 있는 상태에서 파일을 실행하면 들여쓰기 오류가 발생한다. 특히 if문이나 for문, while문 등을 작성하면서 들여쓰기를 실수할 때가 많다. 이러한 오류가 발생하면 파이썬에서는 ‘IndentationError'라는 오류 메시지를 출력한다.
문법적 오류는 파이썬 파일을 실행시켰을 때 곧바로 문법적 오류임을 알려준다. 오류 메시지의 내용은 오류가 발생한 파일 경로와 줄 번호를 출력한다. 그리고 오류가 발생한 부분에 꺾쇠 표시를 하고, 오류 종류와 함께 ‘unexpected indent’라고 나타낸다.
이러한 메시지를 통해 프로그래머는 오류가 있음을 쉽게 알 수 있다.
- 오탈자로 인한 오류(NameError)
- 논리적 오류
프로그램을 작성하다 보면 코드를 제대로 작성했다고 생각했음에도 원하는 결과가 나오지 않는 경우가 종종 있다. 이 경우 논리적 오류가 발생했을 가능성이 크며. 이렇게 뜻대로 실행되지 않는 코드를 ‘논리적 오류가 있다’ 또는 ‘버그가 있다’고 표현한다.
논리적 오류를 가장 손쉽게 해결할 수 있는 방법은 확인이 필요한 변수들의 값을 print() 함수를 사용하여 출력해보는 것이다.
'스터디 > 파이썬 스터디 강의자료' 카테고리의 다른 글
[3팀/김규리] 5차시 파이썬 스터디 - 함수 (0) | 2023.04.03 |
---|---|
[3팀/이지현] 5차시 파이썬 스터디 - 함수 (0) | 2023.04.02 |
[2팀/김가림, 최다예] 4차시 파이썬 스터디 - 반복문 (0) | 2023.03.30 |
[1팀/한규림] 4차시 파이썬 스터디 - 반복문 (0) | 2023.03.30 |
[1팀/지다인] 4차시 파이썬 스터디 - 반복문 (0) | 2023.03.30 |