2017-11-20 10 views
0

저는 파이썬에 익숙하지 않으며 입력이 길이가 21 인 문자열이 아닌 경우 오류 메시지를 표시하는 함수를 디자인하는 방법에 관해서는 혼란 스럽습니다. 이것은 작동하지 않는 최신 순열입니다. 예를 들어 길이가 19 인 문자열의 경우 올바른 오류 메시지가 반환되지 않습니다. 내 배경은 comp sci가 아니므로, 이것에 대한 도움과 이것이 어떻게 작동하는지에 대한 설명이 도움이 될 것입니다. 덕분에입력이 문자열이 아니거나 특정 길이가 아닌 경우 파이썬 함수 오류

test = "test_string_for_slice" 
test2 = "test_string_for_" 

def stringSlice(x): 
    if type(x) != str: 
     raise Exception("The input is not a string.") 
    elif len(x) != 21: 
     raise ValueError("The input is not exactly 21 characters.") 
    else: 
     slice1 = x[0:6] 
     slice2 = x[6:12] 
     slice3 = x[13:] 
     return slice1, slice2, slice3 

stringSlice(test) 
stringSlice(test2) #this should return an error but does not 
+1

'occCode'란 무엇입니까? –

+1

함수가 제공되는 매개 변수 인'occCode'를'x'로 변경하십시오. –

+0

StackOverflow에 오신 것을 환영합니다. 도움말 설명서의 게시 지침을 읽고 따르십시오. [최소한의 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)가 여기에 적용됩니다. MCVE 코드를 게시하고 문제를 정확하게 설명하기 전까지는 효과적으로 도움을 드릴 수 없습니다. 게시 된 코드를 텍스트 파일에 붙여넣고 설명한 문제를 재현 할 수 있어야합니다. – Prune

답변

1

당신이 x를 사용하는 것을 의미 할 때 변수 occCode을 사용하고있는 것 같다.

def stringSlice(x): 
    if type(x) != str: 
     raise Exception("The input is not a string.") 
    elif len(x) != 21: #Note this is where things got changed!!! 
     raise ValueError("The input is not exactly 21 characters.") 
    else: 
     slice1 = x[0:6] 
     slice2 = x[6:12] 
     slice3 = x[13:] 
     return slice1, slice2, slice3