오늘.ssam)
지난 2-2에서는 for문-break-continue에 대해서 알아보았습니다. 오늘은 또 다른 반복문 while에 대해서 알아보려 합니다.
Q1.나)
while문에 대해서 설명해 주세요

A1.ssam)while
문은 1)조건식이 참(True
)인 동안 2)반복적으로 3)실행되는 제어문입니다.
예시 코드를 통해 자세히 알아보겠습니다.
# 1부터 10까지의 합 구하기
sum = 0
i = 1
while i <= 10:
sum += i
i += 1
print(sum)
위 코드는 while
문을 사용하여 1부터 10까지의 합을 구하는 예시입니다. 초기값으로 sum
과 i
를 각각 0과 1로 설정합니다. while
문에서 조건식 i <= 10
이 참일 동안, sum
에 i
를 더한 후 i
에 1을 더해주도록 하였습니다.
# 무한 루프와 break
while True:
answer = input("종료하시려면 'yes'를 입력하세요: ")
if answer == 'yes':
break
위 코드는 while
문을 사용하여 무한 루프를 도는 예시입니다. while
문에서 조건식이 True
이므로, 항상 반복됩니다. 사용자에게 종료 여부를 물어보고, 답변이 'yes'일 경우 break
를 사용하여 반복문을 종료하도록 하였습니다.
위에 내용을 간단하게 정리해하면
while
문은 조건식이 참(True
)일 동안 반복적으로 실행됩니다.while
문의 조건식이 항상 참일 경우, 무한 루프에 빠질 수 있으므로 주의해야 합니다.break
를 사용하여while
문을 종료할 수 있습니다.
Q2.나)
# 무한 루프와 break
while True:
answer = input("종료하시려면 'yes'를 입력하세요: ")
if answer == 'yes':
break
어디에 yes를 입력해야 하라는 건가요?
A2.ssam)input()
함수는 콘솔창에서 문자열을 입력받을 수 있게 해주는 함수이므로, 콘솔창에 'yes'
를 입력하면 됩니다.
Q3.나)
input() 함수에 인자값-"종료하시려면 'yes'를 입력하세요: "- 은 콘솔에 출력이 되는 건가요?
A3.ssam)
네 그렇습니다. input()
함수는 1)인자로 받은 문자열을 출력하고, 2)사용자로부터 문자열을 입력받습니다. 따라서 input()
함수를 실행하면, 인자값으로 받은 문자열이 콘솔에 출력되며, 그 뒤에 커서가 깜빡이는 것을 볼 수 있습니다. 이때 사용자는 키보드로 입력한 값을 입력받을 수 있습니다.
Q4.나)
일종의 이벤트 입력가능 함수 같네요. 그렇다는 것은 while문의 종료 방법은 내부 조건일 수도 있고 외부 입력일 수도 있다는 걸로 이해하면 되죠?
Q4.ssam)
맞습니다. 종료 조건은 내부 조건식으로 설정할 수도 있고, 외부 입력을 통해 받을 수도 있습니다. 내부 조건식으로 종료 조건을 설정할 때는, break
문을 사용하여 while
문을 강제로 종료시킬 수 있습니다. 외부 입력으로 종료 조건을 설정할 때는, 사용자에게 종료할 것인지 묻는 메시지를 보여주고(출력), 사용자가 종료를 선택할 때까지 while
문을 계속 실행합니다. 이때 사용자가 종료를 선택하면 break
문을 사용하여 while
문을 종료시킬 수 있습니다.
Q5.나)
# while문 사용에 대해서 주의해야 할 점들을 알려주세요.
A5.ssam)
다음은 while
문 사용에 주의할 점을 예제 코드로 나타낸 것입니다.
# 1.무한 루프에 주의
i = 0
while i < 10:
print(i)
i += 1
1.무한 루프에 빠지지 않도록 종료 조건을 반드시 설정해야 합니다.
# 2. 반복횟수 최소화
lst = [1, 2, 3, 4, 5]
length = len(lst)
i = 0
while i < length:
print(lst[i])
i += 1
2.조건식을 최소한으로 계산하여 반복 횟수를 최소화해야 합니다.
# 3. 무한루프에는 break
i = 0
while True:
print(i)
i += 1
if i > 10:
break
3. 무한 루프에 빠질 가능성이 있는 경우, break
문으로 강제로 while
문을 종료시켜야 합니다.
# 4.while 내부에서 변수사용 조심
i = 0
lst = [1, 2, 3, 4, 5]
while i < len(lst):
print(lst[i])
lst.append(lst[i] * 2)
i += 1
4. while
문 안에서 변수를 사용할 경우, 변수의 값이 변경되어 while
문을 종료시키는 조건에 영향을 미칠 수 있으므로 주의해야 합니다.
# 5. try-except 적절히 사용
i = 0
lst = [1, 2, 3, 4, 5]
while i < len(lst):
try:
print(lst[i + 1])
except IndexError:
break
i += 1
5. while
문 안에서 예외가 발생하는 경우, while
문이 종료되지 않을 수 있으므로 예외 처리를 적절하게 해주어야 합니다.
Q6.나)
5번째 try - except- break 이거를 상세하게 설명해 주세요
A6-1.ssam)
위 코드는 리스트 lst
의 원소들을 인덱스 i
를 이용해 접근하면서, 인덱스가 리스트의 길이보다 커질 경우 발생하는 IndexError
예외를 처리하기 위한 예외 처리 구문입니다.
구문을 하나씩 살펴보면 다음과 같습니다.
try:
:try
구문의 시작을 나타내는 키워드입니다.try
구문 안에서는 예외 발생 가능성이 있는 코드가 실행됩니다.print(lst[i + 1])
:try
구문 안에서 실행될 코드입니다. 리스트lst
의 인덱스i+1
에 해당하는 원소를 출력합니다.except IndexError:
:try
구문에서IndexError
예외가 발생하면 실행될 구문입니다.IndexError
예외가 발생하면try
구문 실행을 중단하고, 이 구문 안에 있는 예외 처리 코드를 실행합니다.break
:IndexError
예외가 발생할 경우try
구문을 빠져나가기 위해 사용되는 키워드입니다.try
구문 실행 중 발생한 예외가 처리되면try-except
구문을 빠져나가고, 다음 코드가 실행됩니다.
즉, 위 코드는 리스트 인덱스를 벗어나서 IndexError
예외가 발생할 경우 try-except
구문에서 예외 처리를 하고, break
를 이용하여 while 루프를 종료하는 것을 의미합니다.
A6-2.ssam)
위에 내용을 간단하게 정리하면
- try-except 구문은 예외 처리를 위한 구문이다.
- try 블록 안에 실행할 코드를 넣고, 예외가 발생할 경우 except 블록에서 처리한다.
- except 블록에는 처리할 예외 종류를 지정할 수 있으며, 예외가 발생하면 해당 블록이 실행된다.
- 예외가 발생하지 않으면 except 블록은 실행되지 않는다.
Last.ssam)
오늘 포스트까지 해서 사실상 프로그램의 기초는 끝났습니다. 무슨 소리냐 함수도 있고 클래스도 있고 다른 자료형도 있고. 얼마나 알아야 할게 많은데 기초가 끝났다니 이상한 소리 하지 마라. 하실지 모릅니다. 재사용성, 가독성 따위는 개나 줘버리고 막 코딩으로 모든 코드를 내 머릿속에서 돌릴 수 있다면 사실상 끝났습니다.
Last.ssam)
이 다음 내용부터는 "기존의 선배 프로그래머들이 이룩해 놓은 것을들 어떻게 하면 편하게 사용할 수 있을까?" 이러한 질문에 대한 결과물이라고 생각합니다.(자신이 기존에 짜놓은 프로그램을 재사용한다는 측면에서 선배프로그래에 자신도 포함됩니다.)
Last.ssam)
그래서 다름 장 부터는, 왜 이런 걸 만들었을까? 이렇게 하면 뭐가 편해지는 걸까? 를 중점적으로 다루겠습니다.
'프로그래밍 > 파이썬 Python' 카테고리의 다른 글
[파이썬 문법] 4. 리스트와 튜플 기초개념[장단점,예시50개] - 질문으로 공부하는 (0) | 2023.04.04 |
---|---|
[파이썬 문법] 3-2. 함수 반환값 (return) [초보용] - 질문으로 공부하는 (0) | 2023.04.03 |
[파이썬 문법] 3-1. 함수호출(위치,키워드) [초보용] - 질문으로 공부하는 (0) | 2023.04.03 |
[파이썬 문법] 3. 함수의 기초 [초보용] - 질문으로 공부하는 (0) | 2023.04.02 |
[파이썬] 2-2. 반복문 - for문(range,리스트)[입문,초보용 문법] - 질문으로 공부하는 (0) | 2023.04.01 |
[파이썬] 참고1 : 주석 처리 방법 2가지 [입문,초보용 문법] - 질문으로 공부하기 (0) | 2023.03.31 |
[파이썬] 2-1. 조건문 -if-elif-else- [입문,초보용 문법] - 질문으로 공부하는-python (0) | 2023.03.31 |
[파이썬] 2.제어문 - 조건문과 반복문 개념정리 [입문,초보용 문법] - 질문으로 공부하기 (0) | 2023.03.30 |
댓글