type과 class 구분을 잘 해야하는 이유...
간단한 nested if문을 푸는 도중에 발생한 문제. type 구분에 대한 중요성을 알게되어 간단히 포스팅 한다.
Q. 다음의 방정식을 해결하는 프로그램을 구현 하세요. x값을 구해야 합니다.
a=int(input())
b=int(input())
ax = b
간단히 말하자면, 정수 a와 b를 입력했을 때, 이를 만족하는 x가 여러개일 경우에는 "Many Solutions", 1개일 경우에는 x를, 만족하는 해가 없을 때는 "No Solution"을 출력하도록 하면 된다.
if a*b==0:
if a==0 and b==0:
print("Many Solutions")
elif a==0 and b!=0:
print("No Solution")
else:
print("Many Solutions")
elif a*b!=0:
if b%a==0: ==> 테스트 pass
#if type(b/a)==int: ==> 테스트 fail
print(b/a)
else:
print("No Solution")
테스트 fail 이라고 표기한 부분이 내가 첫번째로 작성한 코드이다. 테스트 중 일부 문항을 통과하지 못하는 문제가 발생했다.
원인은 간단했지만, 추후에도 이런 실수를 반복할 가능성이 있어서 짚고 넘어가려 한다...
>>> type(4)
<class 'int'>
>>> type(type(4))
<class 'type'>
>>> type(int)
<class 'type'>
>>> 4==int
False
type으로 클래스를 확인해보면 type(4)의 클래스는 int이지만, type(int)의 클래스는 type이다... 즉, int와 type이라는 서로다른 클래스를 비교하고 있기 때문에 애당초 위의 코드는 성립할 수가 없다.
>>> type(4)==int
True
내가 처음 잘못 작성한 코드는 b/a의 상태에 따라 if True, if False로 무엇이 True 혹은 False인지를 비교하지 않기 때문에 에러가 발생했다...
Author And Source
이 문제에 관하여(type과 class 구분을 잘 해야하는 이유...), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@astrocat9311/type과-class-구분을-잘-해야하는-이유저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)