대부분의 프로그래밍 언어에서 그렇겠지만 python에서 중괄호 [] 와 소괄호 ()는
혼동해서 쓰면 안되는 완전히 다른 것이다.
주로 중괄호는 배열 (array)를 구성할 때, 또한 배열의 특정 인덱스에 접근할 때 등등 이용하고
소괄호는 연산의 순서를 정해주고 싶을때, 개체의 메소드와 속성을 이용할 때 등등 사용하게 된다.
나도 아직 익숙하지도 않은지라 두 개를 자꾸 혼동해서 쓰곤 하는데 당신은 다음의 혼동을 쉽게 피할 수 있을 것이다.
if False == False:
print("True")
#결과는 True.
위의 if문을 boolean 판정문으로 사용해서 False == False 값을 받아보면 당연히 True가 나온다.
if 0 in [1,2,3]:
print("True")
else:
print("False")
#결과는 False.
0은 배열 [1,2,3]에 없는 원소이므로 False가 된다
if False == 0 in [1,2,3]:
print("True")
else:
print("False")
#결과는 False.
앗 그런데 좌변 False 우변( 0 in [1,2,3]) False인데 False == False의 값이 True인 것과 다르게
False값이 된다. 앞의 False ==0 가 먼저 연산되어서 그런가 보다
if False == [0 in [1,2,3]]:
print("True")
else:
print("False")
#결과는 False
따라서 0 in [1,2,3]을 한번 더 묶어주어 먼저 연산을 하면 False == False에서 True값이 print 되겠지? 했지만
뭐야? False가 print 된다.
아마도 언어를 처음 배우는 나 같은 아마추어가 아닌 여러분이라면 왜 저래 싶겠지만 괄호를 엄격하게 사용하지 않고
대충 그게 그건가 싶은 느낌으로 다가간 나는 이렇게 실수를 해버린 것.
if False == (0 in [1,2,3]):
print("True")
else:
print("False")
#결과는 True
당연하게도 위와 같이 False == (0 in [1,2,3]) 은 중괄호로 묶은 위의 위의 코드와 다르게 결과로 True가 프린트된다.
여러분은 당연히 알고 있겠지만 False == [0 in [1,2,3]]라고 하면 우변을 단순히 묶어서 연산 순서를 지정해줄 뿐만
아니라, 우변이 [False]인 배열이 되어서 False == [False]는 False가 되어버리는 것.
이런 허접한 혼동은 하지 말자.
'Python_파이썬설명서 > 백준with파이썬' 카테고리의 다른 글
백준 1181- 단어정렬 (딕셔너리 사용법과 sorted의 lambda 람다) (0) | 2021.07.13 |
---|---|
백준 11729풀이와 해설 - 하노이탑 쌓기 (0) | 2021.06.27 |
python에서 ctrl+6 (^)처럼 제곱 표현하기 (0) | 2021.06.24 |