강의로 돌아가기
-

질문합니다

주석처리 된 for문, while문 이용한 코드 맞나 확인 부탁드립니다^
필요하지 않은데 쓴 코드가 있다면 지적 부탁드립니다.

또 질문할 것은 마지막에 try 와 except문을 사용하여 코드를 짜 보았는데
error의 이름을 알기 위해 as문을 썼는데요, 에러 이름이 저렇게 길게 나오고 제가 넣은 value 이름이 들어가서 나오는게 맞나요? 저는 valueerror이런식으로 간단히 나오길 바랐는데 넣은숫자 is not in the list 이렇게 길게 나오네요..
저런 짧은 이름? 타입의 에러명만 확인할 수 없나요? 저는 이름 체크 한 후
except 이렇게 간단히 고치고 싶었거든요 (except IndexError 이런식으로)

또, 제가 return none을 주석처리 했는데도 none 이 나오는데 왜 그런가요?

작성중인 코드―list_index
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'''def safe_index(my_list, value):
    for i in range(len(my_list)) :
        if value == my_list[i] :
            return my_list.index(value)
        else:
            continue
safe_index([1,2,3,4,5], 5)
print(safe_index([1,2,3,4,5], 5))
safe_index([1,2,3], 5)
print(safe_index([1,2,3], 5))''' 
#위의 코드는 for문 사용#

'''
def safe_index(my_list,value) :
    i = 0
    while i < len(my_list) :
        if value == my_list[i] :
            return my_list.index(value)
        else :
            i = i + 1
    if i == len(my_list) :
        return None
safe_index([1,2,3,4,5], 3)
print(safe_index([1,2,3,4,5], 3))
safe_index([1,2,3], 5)
print(safe_index([1,2,3], 5)) '''
#위의 코드는 while문 사용

def safe_index(my_list,value) :
    try :
        #my_list.index(value) 없어도 됨.
        return my_list.index(value)
    except Exception as error :
        print(error)
        #return None

print(safe_index([1,2,3,4,5], 11))
#위의 코드는 try, except 사용
1 개의 답변
프로그래머스

잘 짜셨네요!

질문에 대한 대답을 하자면, print(error)와 같이 그냥 에러를 출력하면 표준 파이썬에 따라 상세한 에러 문구가 출력됩니다.
단지 어떤 에러가 발생했는지 알고싶은거라면

print(error)가 아니라 print(error.__class__.__name__)를 사용하세요.

또, 파이썬 함수에 리턴값을 지정하지 않으면 자동으로 None이 리턴됩니다.
사실 None이 리턴되었기 보다는 아무것도 리턴하지 않았다는 의미에서 None이라고 합니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.