파이썬 프로그램에서 while문에 대해서 이해하고, 무한루프 시 탈출하는 방법에 대해 알아보도록 하겠습니다.
while문 이해하기
파이썬에서 while문은 지정된 조건이 참인 동안 코드를 반복적으로 실행할 수 있는구조입니다. while문은 반복 횟수를 미리 알 수 없을 때 사용하기 좋습니다.
기본 문법
파이썬에서 while문의 기본 문법은 다음과 같습니다.
while 조건:
# 조건이 참인 동안 실행될 코드
여기서 조건은 부울 표현식입니다. 이 조건이 참(True)인 한 동안 루프 내부의 코드가 반복적으로 실행됩니다.
예시 1: 1에서 5까지 세기
1에서 5까지 세는 간단한 예제부터 시작해 보겠습니다.
count = 1
while count <= 5:
print(count)
count += 1
이 예제에서 count라는 변수를 1로 초기값을 주고 시작합니다. while문에서 count가 5보다 작거나 같은지를 확인합니다. 조건이 참이면 현재 count의 값이 인쇄되고, count는 1씩 증가합니다.
이렇게 count를 1씩 증가하며 출력하는 것을 반복 실행하면서 count가 6이 될 때까지 계속되며 count가 6이 되면 while문은 종료됩니다.
예시 2: 사용자 입력
예시 1과는 다른 예제로 "while" 반복문 내에서 사용자 입력값을 받는 것입니다.
user_input = ""
while user_input.lower() != "quit":
user_input = input("단어를 입력하세요 ('quit'을 입력하면 종료): ")
print("입력한 단어:", user_input)
이 반복문은 사용자 입력값에 "quit"을 입력할 때까지 계속 반복됩니다.(대소문자 구분없이)
이때 사용자가 quit를 입력할 때 대문자, 소문자, 대소문자를 섞어서 사용할 수 있기 때문에 대소문자 구분없이 quit를 입력하면 반복문에서 탈출할 수 있도록 만들어주어야 하는데요.
user_input이라는 변수명에 입력값이 들어가게 되는데, 여기서 변수명.lower(ex. user_input.lower) 함수를 사용하면 입력된 값이 대소문자에 관계없이 소문자로 변경해줍니다.
!=는 같지 않다라는 의미이며 quit가 아니면 아래 반복문을 실행하라는 뜻입니다.
기초 연산자에 대해 더 알고 싶으시다면 아래 링크를 참고해주세요.
예시 3: 사용자 오류 처리
while 반복문은 사용자 오류를 처리하고 올바른 입력을 요청하는 데 사용할 수 있습니다.
while True:
try:
age = int(input("나이를 입력하세요: "))
break # 입력이 유효한 정수인 경우 루프를 빠져나감
except ValueError:
print("잘못된 입력입니다. 유효한 정수를 입력하세요.")
print("당신의 나이는:", age)
파이썬에서는 반복문, 조건문 등에서는 들여쓰기가 매우 중요한데요. 들여쓰기를 해야 해당 조건에서 하위 문장들이 실행되기 때문입니다. 따라서 들여쓰기에 따라 결과가 완전히 달라질 수 있습니다.
파이썬에서 이렇게 들여쓰기한 문장을 블록이라고 합니다.
위의 예시는 유효한 정수가 입력될 때까지 반복하여 실행되는데요. try와 except 블록은 입력 값이 유효한 정수가 아닌 경우 ValueError를 잡습니다.
따라서 위의 문장을 풀어보자면 맨 처음 intpur문장의 "나이를 입력하세요: "라는 프롬프트가 뜨게 됩니다.
그러면input에 20을 입력할 시 정수가 입력되었기 때문에 break 명령어를 만나 반복문을 종료하면서 while문의 블록을 빠져나가 가장 아래 위치한 print문이 실행되면서 "당신의 나이는 : 20"이 출력됩니다.
만약 프롬프트 옆에 정수가 아닌 값을 입력한다면 ValueError 부분으로 넘어가게 되면서 "잘못된 입력입니다. 유효한 정수를 입력하세요" 라는 출력문이 나오면서 다시 "나이를 입력하세요: "라는 프롬프트가 뜨게 됩니다.
이 반복문은 올바른 정수값을 입력할 때까지 계속 반복하게 됩니다.
유효한 정수가 입력되면 루프가 종료되고 나이가 출력됩니다.
그 외 while문의 조금 더 기초적인 내용에 대해 알고 싶다면 아래 링크를 참고해주세요.
'방구석코딩 > 파이썬 기초문법' 카테고리의 다른 글
[파이썬] continue, pass문 사용법 및 차이, 활용 예시 (0) | 2023.12.04 |
---|---|
[파이썬] break 문의 사용법 (1) | 2023.11.27 |
[파이썬] for문 안에 for문 사용법 (feat. break 명령어) (1) | 2023.11.13 |
[파이썬] for문 range(범위) 사용법 (1) | 2023.11.06 |
[파이썬] 조건문 if, elif, else 문, 조건이 여러개인 경우 (1) | 2023.10.30 |
댓글