Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python SyntaxError: 'continue' not properly in loop 오류 해결 방법

파이썬에서 continue 키워드는 프로그램의 실행 흐름을 루프의 다음 반복으로 넘기는 역할을 합니다. 그런데 continue 문을 for 루프나 while 루프 밖에서 사용하면 SyntaxError: 'continue' not properly in loop 오류가 발생합니다.

이 글에서는 이 오류가 무엇을 의미하는지, 왜 발생하는지 살펴보고, 실제 예제를 통해 오류를 해결하는 방법까지 단계별로 안내해 드립니다.

SyntaxError: 'continue' not properly in loop란?

continue 문은 for 루프 또는 while 루프에서 다음 반복으로 건너뛰도록 하는 명령어입니다. break 문과 마찬가지로 별도의 인수를 받지 않으며, 코드 내에서 단독으로 사용됩니다.

continue 문은 오직 루프 안에서만 사용할 수 있습니다. 이는 continue 문이 애초에 루프 안에서 동작하도록 설계되었기 때문입니다. 루프 밖에서는 "무엇을 계속 진행해야 하는지"에 대한 맥락이 존재하지 않기 때문에 파이썬 인터프리터가 해당 키워드를 해석할 수 없습니다.

단, if 문이나 다른 코드 블록 안에 continue 문이 위치하는 것은 가능합니다. 다만 그 코드 블록 전체가 루프 내부에 있어야 한다는 조건이 필요합니다.

오류 발생 예시

커피숍 재고 관리 시스템의 입력값 검증 프로그램을 만들어 보겠습니다. 입력값이 유효하려면 최소 세 글자 이상이어야 합니다.

먼저 사용자에게 시스템에 등록할 제품명을 입력받는 코드입니다:

product_name = input("Enter the product name: ")

다음으로 if 문을 사용해 입력값이 세 글자 이상인지 검증합니다:

if len(product_name) < 3:
	print("Product names must be at least three characters long.")
	continue
else:
	break

print("Your product name is valid.")

사용자가 세 글자 미만의 제품명을 입력하면 콘솔에 안내 메시지가 출력되고 continue 문이 실행됩니다. 그렇지 않으면 break 문이 실행됩니다. 여기서는 len() 함수를 사용해 제품명의 길이를 확인했습니다.

제품명이 유효하다면 콘솔에 유효하다는 메시지가 표시됩니다.

검증 코드 작성을 마쳤으니 프로그램을 실행해 보겠습니다:

 File "main.py", line 3
	continue
	^
SyntaxError: 'continue' not properly in loop

코드를 실행하면 오류가 반환됩니다.

해결 방법

우리는 특정 조건이 충족되면 프로그램이 계속 진행하도록 continue 문을 사용했습니다. 하지만 if 문 안에서 continue 문을 사용할 수 있다고 해도, 그 continue 문은 반드시 루프 내부 어딘가에 위치해야 합니다.

현재 프로그램에는 루프가 없기 때문에 continue 사용 자체가 무의미하며, 바로 이 부분이 오류의 원인입니다. 이 오류를 해결하려면 코드 전체를 루프로 감싸주어야 합니다:

while True:
	product_name = input("Enter the product name: ")

	if len(product_name) < 3:
		print("Product names must be at least three characters long.")
		continue
	else:
		break

print("Your product name is valid.")

코드에서 변경된 점은 하나입니다. 프로그램 전체가 while 루프 안으로 들어갔습니다. 이제 사용자가 유효한 제품명을 입력할 때까지 루프가 반복되며 입력을 요청하게 됩니다.

루프는 사용자가 유효한 제품명을 입력했을 때만 종료됩니다. 그렇지 않으면 콘솔에 안내 메시지가 출력되고 루프가 다시 반복됩니다.

프로그램을 실행해 결과를 확인해 보겠습니다:

Enter the product name: Rwandan
Your product name is valid.

코드가 성공적으로 실행되었습니다! 이번에는 잘못된 제품명으로 실행해 보겠습니다:

Enter the product name: RW
Product names must be at least three characters long.
Enter the product name:

프로그램이 제품명이 유효하지 않다고 알려준 뒤, 새 제품명을 다시 입력하도록 요청합니다.

마무리

SyntaxError: 'continue' not properly in loop 오류는 for 루프나 while 루프 밖에서 continue 문을 사용하려 할 때 발생합니다. 이 오류를 해결하려면 코드 내 모든 continue 문을 루프 내부에 배치해야 합니다.

이제 여러분도 이 오류를 전문가처럼 손쉽게 해결할 수 있습니다!