사용자가 유효한 입력을 할 때까지 입력 요청하기
문제 상황: ValueError가 발생하는 경우
코딩을 하다 보면 사용자에게 데이터를 입력받아야 하는 상황이 종종 발생합니다. 이 때 입력값이 유효하지 않을 경우에 대비해 코드를 작성해야 하는데, 이를 어떻게 처리할지에 대한 문제가 있습니다. 예를 들어, 숫자를 입력받아야 하는데 문자를 입력하면 ValueError
라는 오류가 발생하게 됩니다.
해결 방법 1: while 루프와 try-except 구문 사용하기
가장 일반적인 해결 방법은 while
루프와 try-except
구문을 함께 사용하는 것입니다. while
루프는 조건이 참인 동안 계속해서 반복되고, try-except
는 오류를 캐치해서 처리합니다.
1
2
3
4
5
6
while True:
try:
user_input = int(input("정수를 입력하세요: "))
break
except ValueError:
print("유효한 정수가 아닙니다. 다시 입력하세요.")
위 코드에서는 사용자가 유효한 정수를 입력할 때까지 계속해서 입력을 요청합니다. try
블록 안에서 input()
함수를 통해 사용자의 입력을 받고, 이를 정수(int
)로 변환합니다. 만약 변환에 실패하면 ValueError
오류가 발생하고, 이는 except
블록에서 처리됩니다.
해결 방법 2: 조건문 사용하기
try-except
없이도 이 문제를 해결할 수 있습니다. 예를 들어, 입력값이 숫자인지 문자인지 판단하는 조건문을 사용할 수 있습니다. 하지만 이 방법은 처리해야 할 예외 상황이 많아질수록 코드가 복잡해질 수 있습니다.
1
2
3
4
5
6
7
while True:
user_input = input("정수를 입력하세요: ")
if user_input.isdigit():
user_input = int(user_input)
break
else:
print("유효한 정수가 아닙니다. 다시 입력하세요.")
이 방법에서는 str.isdigit()
함수를 사용하여 입력값이 숫자인지 아닌지 판단합니다. 이 함수는 모든 문자가 숫자일 경우 True
를 반환하고, 그렇지 않으면 False
를 반환합니다.
결론
사용자로부터 유효한 입력을 받을 때까지 계속 요청하는 코드를 작성하는 방법은 주로 두 가지입니다. 첫 번째는 while
루프와 try-except
구문을 사용하는 것이고, 두 번째는 조건문을 사용하는 것입니다. 어떤 방법을 선택할지는 상황과 개발자의 판단에 따라 다르겠지만, 가장 일반적으로 사용되는 방법은 try-except
구문을 활용하는 것입니다.