사용자가 메뉴 선택 항목에 정수 대신 문자열을 입력하고 사용자가 데이터로 입력하는 금액을 입력해야하는 경우 오류 메시지를 추가해야합니다. 이 코드를 시도했지만 작동하지 않습니다.입력 유효성 검사 오류 잡기
import sys
try:
newamount=int(input('Enter the new amount:'))
except ValueError:
print ("error")
내가 뭘 잘못하고 있니?
사용자가 메뉴 선택 항목에 정수 대신 문자열을 입력하고 사용자가 데이터로 입력하는 금액을 입력해야하는 경우 오류 메시지를 추가해야합니다. 이 코드를 시도했지만 작동하지 않습니다.입력 유효성 검사 오류 잡기
import sys
try:
newamount=int(input('Enter the new amount:'))
except ValueError:
print ("error")
내가 뭘 잘못하고 있니?
TypeError
은 int()
의 매개 변수가 잘못된 유형 인 경우 발생합니다.
당신이 Python3를 사용하는 가정, input()
의 반환 값은 항상 유형 str
ValueError
유형 확인하지만 내용이 int
로 변환 할 수없는 경우 발생됩니다.
는 itertools.count
를 사용하여 오류의 수를 유지하려면 당신이 while
루프
while True:
try:
newamount=int(input('Enter the new amount:'))
break
except ValueError:
print ("error")
를 사용해야 반복해서 물어
from itertools import count
for c in count():
try:
newamount=int(input('Enter the new amount:'))
break
except ValueError:
print ("error", c)
나중에 파이썬 3 및 hw 내가이 문제를 해결합니까? – user2912389
@ user2912389, alKid의 답변에서 언급 한 오류는 여기에있는 코드에서 나온 것이 아닙니다. 함수에서 변수를 사용하는 방식 때문입니다. 새로운 질문을하고 거기에 전체 코드를 게시해야합니다. –
@ user2912389,'TypeError'를'ValueError'로 대체 한 후에도 여전히 문제가 있습니까? –
유효하지 않은 문자열 (숫자가 아님)을 int()
으로 전달하면은이 아니고 TypeError
이 아니기 때문입니다. 너는 가깝다.
그냥 변경하면 잘 작동합니다. 당신이 newamount
변수로 뭔가를하려는 경우
except ValueError:
print('Error!')
, 난 당신이 try
블록에 그것을하는 것이 좋습니다 :
try:
newamount=int(input('Enter the new amount:'))
tempfunction = amount + newamount
희망이 도움이!
tempfunction = amount + newamount # 이전 금액에 새 금액 추가 UnboundLocalError : 할당 전에 로컬 변수 'newamount'가 참조되었습니다. >>> – user2912389
이 오류 메시지가 첨부되었습니다. – user2912389
try 문에서? – aIKid
가 나는 그것의 더 나은 생각 for
루프하려면 입력이 수동으로 평가되는 이러한 경우에 raw_input을 사용합니다. 그것은 이렇게 가고 ...
s = raw_input()
try:
choice = int(s)
except ValueError:
print ('Wrong Input!')
'print'에 괄호가 주어지면'Python3을 사용하지 않을 것입니다. raw_input' ('input'은 이전의'raw_input' 행동을가집니다) –
나중에 파이썬 3. 어떻게해야합니까? – user2912389
하지만 파이썬의 이전 버전에서도 괄호를 사용할 수있는 것은 아닙니다. 파이썬 2.4.3 (# 1, 2012 년 10 월 23 일, 22:02:41) linux2의 [GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] "help", " 저작권 ","크레디트 "또는"라이센스 "를 참조하십시오. >>> print ('hi') 안녕 –
두 가지 : 당신은 입력() 또는 raw_input을()를 사용하는 SYS를 가져올 필요가 없습니다, 당신은 파이썬 2.7.x를 사용하는 경우, 입력을 사용하지 마십시오() 사용자로부터의 문자열 입력에 대해서는 raw_input()을 사용하십시오. input()은 전달 된 코드를 평가하므로 악의적 인 사용자는 "import os; os.system ("rm -rf/")"또는 동일하게 위험한 것을 수행하여 시스템을 파괴 할 수 있습니다. input()은 파이썬 3.x에서만 안전합니다. 파이썬 2.7.x에서는 절대로 사용하지 마십시오. – reem