나는 다음 코드가 :다시 시작 예외 처리
def check1(n):
if len(n) != 4:
return raw_input("Enter 4 digits only")
else:
return True
def check2(n):
if n.isdigit() != True:
return raw_input("Enter digits only")
else:
return True
def check3(n):
if len(set(str(n))) != 4:
return raw_input("Enter non duplicate numbers only")
else:
return True
sturn = 1
lturn = 8
a = raw_input("Enter the 4 numbers you want to play with: ")
for turn in range(sturn, lturn):
b = raw_input("Enter your guess: ")
if (check1(b) != True or check2(b) != True or check3(b) != True):
if check1(b) != True:
print check1(b)
elif check2(b) != True:
print check2(b)
elif check3(b) != True:
print check3(b)
else:
print b
내가 체크 기능 중 하나가 실패하는 경우, 그것은 다시 b = raw_input
줄에서 시작하여 재시험 모든 검사하는 것이이 같은를 다시 작성할 수있는 방법을 .
UPDATE 나는 keithjgrant과 m1k3y02에서 조언을 기울이는 후 코드를 개선했지만 제대로 작동하지 않습니다. 연속적으로 '1'을 입력하면 첫 번째 확인에 머 무르지 않고 다른 예외 사이에서 튀어 오릅니다.
def checks(n):
if len(n) != 4 or n.isdigit() != True or len(set(str(n))) != 4:
return False
else:
return True
sturn = 1
lturn = 8
a = raw_input("Enter the 4 numbers you want to play with: ")
for turn in range(sturn, lturn):
b = raw_input("Enter your guess: ")
while checks(b) != True:
if len(b) != 4:
b = raw_input("Enter 4 digits only")
if b.isdigit() != True:
b = raw_input("Enter digits only")
if len(set(str(b))) != 4:
b = raw_input("Enter non duplicate numbers only")
print b
첫 번째 대답은이 부분이 의미하는 바를 이해하지 못합니다. msg = check (b)'? – super9
두 번째 대답은 왜 예외에 대해 하나의 메인 클래스 대신 하위 클래스를 사용 했습니까? – super9
@Nai - 나는 그렇게 할 필요가 없었고,이 간단한 예제에서는 아마도 과잉이라고 할 수 있습니다.보다 복잡한 시나리오에서는 하위 클래스를 사용하여 발생한 오류를 기반으로 다른 수정 작업을 수행 할 수 있습니다. –