ooooooow   2년 전

x=int(input())

if (x%4==0 & x%100!=0) | x%400==0 :

print(1)

else :

print(0)

왜 틀린걸까요? 이 상태로 input 값으로 2012를 넣으면 1이 아니라 0이 나오네요

반면에 &, | 을 and, or로 바꾸거나

((x%4==0) & (x%100!0)) | x%400==0 :

이렇게 괄호로 한번씩 더 감싸주면 2012를 넣을때 올바른 값 1 이 나옵니다.

무슨차이가 있는 건가요?

yyyy7089   2년 전

&는 and가 아닙니다.

마찬가지로 |도 or가 아닙니다.

fbfbf1   2년 전

&, | 는 비트연산자가이고

and,or는 논리연산자입니다.

True or False면 and, or를 사용해야됩니다.

ooooooow   2년 전

근데 본문의 아래쪽에 작성한바와 같이 괄호로 묶어주면 

올바른 값이 나옵니다.

무슨 차이인지 알 수 있을까요?

yyyy7089   2년 전

컴파일러는 |를 ==보다 먼저 계산합니다.

띄어쓰기로 구분해서 작성해도 컴파일러는 띄어쓰기를 무시합니다.

여기서는 아래와 같이 x%400==0보다 ...|x%400을 먼저 계산했기 때문에 일어난 일입니다.

ooooooow   2년 전

|x%400 을 지운 상태로

x=int(input())

if (x%4==0) & (x%100!=0) : 

 print(1)

else : 

 print(0)

위의 코드와 아래코드에 각각 input으로 2012를 넣어주면 위 코드는 1을 아래 코드는 0을 출력합니다 

위 코드에서 1이 출력하는 이유는 알겠는데

아래와 같이 작성했을 때 0을 출력하는 이유를 모르겠습니다.


x=int(input())

if (x%4==0 & x%100!=0) : 

 print(1)

else : 

 print(0)

yyyy7089   2년 전


댓글을 작성하려면 로그인해야 합니다.