type과 class 구분을 잘 해야하는 이유...

김루트·2021년 3월 21일
0

Python 학습

목록 보기
3/6

간단한 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인지를 비교하지 않기 때문에 에러가 발생했다...

profile
반갑습니다.

0개의 댓글