해결된 질문
작성
·
213
1
답변 2
2
"이름을 입력하세요" 8
이라고 입력을 하면 작성된 사용자 정의 함수에서 자동으로 8 을 str 로 캐스팅했기 때문에 문제가 없는 코드가 됩니다. 사람이 입력할때는 8 을 입력하면서 숫자로 생각하고 입력했겠지만 casting(input(msg)) 에 의해 str 로 캐스팅 되어 8은 문자형태가 되었고 try except 문에 걸리지 않게 됩니다.
말씀하신 의도대로 동작하게 하려면 추가적인 코드가 필요하게 됩니다.
def get_input_user(msg, casting):
while True:
try:
value = casting(input(msg))
# 캐스팅 형태가 str 인경우에
if casting == str:
# 입력된 값이 숫자형태라면 오류로 처리
if value.isnumeric():
raise Exception
return value
except:
continue
user = get_input_user("이름을 입력하세요", str)
age = get_input_user("나이를 입력하세요", int)
일단 즉흥적으로 만들어 봤습니다만... 위 코드처럼 수정되야 말씀하신대로 동작하게 됩니다. raise Exception 은 강제로 Exception 을 발생하게 하는 내용입니다. 참고되셨길 바라며 또 궁금한점 질문 남겨주시기 바랍니다.
0
사람이 입력할때는 8 을 입력하면서 숫자로 생각하고 입력했겠지만 casting(input(msg)) 에 의해 str 로 캐스팅 되어 8은 문자형태가 되었고 try except 문에 걸리지 않게 됩니다.
<< 이 부분을 제가 몰랐었네요! 해결됐습니다 ㅎㅎ 감사합니다!