숫자만 입력해야 하는데 숫자가 아닌 문자를 입력하면 프로그램이 비정상적으로 종료합니다(에러가 발생한 것입니다). 또 그냥 엔터를 칠 경우도 비정상적으로 프로그램이 종료합니다. 나누기 계산을 할 때 두번째 숫자가 0이면 에러가 납니다.
에러가 발생하면, 보통에러의 내용을 'Traceback이라는 문구로 시작하여 쭉 보여 줍니다. 대체로 마지막 줄에 어떤 에러인지 알려줍니다. 다음은 숫자를 입력해야 하는데, 숫자가 아닌 문자를 입력했을 때 알려주는 Traceback 문장입니다.
위의 경우, ValueError가 발생한 것입니다. 이러한 에러가 발생할 때 프로그램을 비정상적으로 종료하지 않게 하려면, try 구문을 사용해야 합니다. try 항목에 우선 실행할 명령을 입력합니다. 명령이 실행되는 과정에 에러가 발생할 것 같으면(숫자를 입력하지 않을 경우), except 항목에 해당 에러 문구(위에서는 ValueError)에 대해 예외처리를 해 줍니다. 예를 들면 안내문을 표시해 주고 프로그램을 다시 앞단계에서 실행되도록 해 줍니다. 숫자를 제대로 잘 입력한 경우는 else 항목의 명령을 실행합니다. 다음은 이에 대한 간단한 예제입니다.
이 프로그램을 실행하고 다양한 테스트를 한 화면은 다음과 같습니다.
에러가 발생하면, 보통에러의 내용을 'Traceback이라는 문구로 시작하여 쭉 보여 줍니다. 대체로 마지막 줄에 어떤 에러인지 알려줍니다. 다음은 숫자를 입력해야 하는데, 숫자가 아닌 문자를 입력했을 때 알려주는 Traceback 문장입니다.
피트(ft) : x
Traceback (most recent call last):
File "/home/Python/Practice/07measures.py", line 39, in <module>
myMulti('피트(ft) : ', 30.48, '센티미터')
File "/home/Python/Practice/07measures.py", line 15, in myMulti
efface = float(input(vindication))
ValueError: could not convert string to float: 'x'
>>>
Traceback (most recent call last):
File "/home/Python/Practice/07measures.py", line 39, in <module>
myMulti('피트(ft) : ', 30.48, '센티미터')
File "/home/Python/Practice/07measures.py", line 15, in myMulti
efface = float(input(vindication))
ValueError: could not convert string to float: 'x'
>>>
위의 경우, ValueError가 발생한 것입니다. 이러한 에러가 발생할 때 프로그램을 비정상적으로 종료하지 않게 하려면, try 구문을 사용해야 합니다. try 항목에 우선 실행할 명령을 입력합니다. 명령이 실행되는 과정에 에러가 발생할 것 같으면(숫자를 입력하지 않을 경우), except 항목에 해당 에러 문구(위에서는 ValueError)에 대해 예외처리를 해 줍니다. 예를 들면 안내문을 표시해 주고 프로그램을 다시 앞단계에서 실행되도록 해 줍니다. 숫자를 제대로 잘 입력한 경우는 else 항목의 명령을 실행합니다. 다음은 이에 대한 간단한 예제입니다.
print('계산 프로그램')
print('다음 메뉴 중 원하는 번호를 입력해 주세요.')
print('1. 곱하기 2. 나누기 3. 프로그램 종료')
def iMulti(a, b) :
try :
aa = float(input(a))
bb = float(input(b))
except ValueError :
print('숫자만 입력하셔야 합니다용~')
else :
c = round(aa * bb, 1)
print('답 :', c)
def iDiv(a, b) :
try :
aa = float(input(a))
bb = float(input(b))
except ValueError :
print('숫자만 입력하셔야 합니다용~')
else :
try :
c = round(aa / bb, 1)
except ZeroDivisionError :
print('두번째로 입력한 숫자가 0이면 안됩니다용~')
else :
print('답 :', c)
g = '0'
while g != '3' :
g = input('\n' + '메뉴 번호를 입력해 주세요 : ')
if g == '3' :
print('프로그램을 종료합니다.')
else :
if g == '1' :
iMulti('제발 숫자만 입력해 주세요^^ : ','제발 숫자만 입력해 주세요^^ : ')
elif g == '2' :
iDiv('제발 숫자만 입력해 주세요^^ : ','제발 숫자만 입력해 주세요^^ : ')
else :
print('종료하고 싶으면 숫자 3을 입력해 주세요~')
print('이용해 주셔서 감사합니다.')
print('다음 메뉴 중 원하는 번호를 입력해 주세요.')
print('1. 곱하기 2. 나누기 3. 프로그램 종료')
def iMulti(a, b) :
try :
aa = float(input(a))
bb = float(input(b))
except ValueError :
print('숫자만 입력하셔야 합니다용~')
else :
c = round(aa * bb, 1)
print('답 :', c)
def iDiv(a, b) :
try :
aa = float(input(a))
bb = float(input(b))
except ValueError :
print('숫자만 입력하셔야 합니다용~')
else :
try :
c = round(aa / bb, 1)
except ZeroDivisionError :
print('두번째로 입력한 숫자가 0이면 안됩니다용~')
else :
print('답 :', c)
g = '0'
while g != '3' :
g = input('\n' + '메뉴 번호를 입력해 주세요 : ')
if g == '3' :
print('프로그램을 종료합니다.')
else :
if g == '1' :
iMulti('제발 숫자만 입력해 주세요^^ : ','제발 숫자만 입력해 주세요^^ : ')
elif g == '2' :
iDiv('제발 숫자만 입력해 주세요^^ : ','제발 숫자만 입력해 주세요^^ : ')
else :
print('종료하고 싶으면 숫자 3을 입력해 주세요~')
print('이용해 주셔서 감사합니다.')
이 프로그램을 실행하고 다양한 테스트를 한 화면은 다음과 같습니다.
>>>
계산 프로그램
다음 메뉴 중 원하는 번호를 입력해 주세요.
1. 곱하기 2. 나누기 3. 프로그램 종료
메뉴 번호를 입력해 주세요 : 2
제발 숫자만 입력해 주세요^^ : 3
제발 숫자만 입력해 주세요^^ : 0
두번째로 입력한 숫자가 0이면 안됩니다용~
메뉴 번호를 입력해 주세요 : 2
제발 숫자만 입력해 주세요^^ :
숫자만 입력하셔야 합니다용~
메뉴 번호를 입력해 주세요 : 2
제발 숫자만 입력해 주세요^^ : z
숫자만 입력하셔야 합니다용~
메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ : 2
제발 숫자만 입력해 주세요^^ : 1
답 : 2.0
메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ : 1.1
제발 숫자만 입력해 주세요^^ : 2.3
답 : 2.5
메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ :
숫자만 입력하셔야 합니다용~
메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ : z
숫자만 입력하셔야 합니다용~
메뉴 번호를 입력해 주세요 : x
종료하고 싶으면 숫자 3을 입력해 주세요~
메뉴 번호를 입력해 주세요 : 3
프로그램을 종료합니다.
이용해 주셔서 감사합니다.
>>>
계산 프로그램
다음 메뉴 중 원하는 번호를 입력해 주세요.
1. 곱하기 2. 나누기 3. 프로그램 종료
메뉴 번호를 입력해 주세요 : 2
제발 숫자만 입력해 주세요^^ : 3
제발 숫자만 입력해 주세요^^ : 0
두번째로 입력한 숫자가 0이면 안됩니다용~
메뉴 번호를 입력해 주세요 : 2
제발 숫자만 입력해 주세요^^ :
숫자만 입력하셔야 합니다용~
메뉴 번호를 입력해 주세요 : 2
제발 숫자만 입력해 주세요^^ : z
숫자만 입력하셔야 합니다용~
메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ : 2
제발 숫자만 입력해 주세요^^ : 1
답 : 2.0
메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ : 1.1
제발 숫자만 입력해 주세요^^ : 2.3
답 : 2.5
메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ :
숫자만 입력하셔야 합니다용~
메뉴 번호를 입력해 주세요 : 1
제발 숫자만 입력해 주세요^^ : z
숫자만 입력하셔야 합니다용~
메뉴 번호를 입력해 주세요 : x
종료하고 싶으면 숫자 3을 입력해 주세요~
메뉴 번호를 입력해 주세요 : 3
프로그램을 종료합니다.
이용해 주셔서 감사합니다.
>>>
댓글 없음:
댓글 쓰기