2014-10-31 8 views
-4

사람이 잘못 여기에 무엇을 봐 주시겠습니까 예상대로 작동하지 않는 경우 : 아래 파이썬은

dang=True 
if [ dang == False ] : 
    print ("False") 
    print("Value of dang is %s"%dang) 
else : 
    print ("True") 
    print("Value of dang is %s"%dang) 

ding=True 
if ding == False : 
    print ("False") 
    print("Value of ding is %s"%ding) 
else : 
    print ("True") 
    print("Value of ding is %s"%ding) 

첫 번째 예에서
False 
Value of dang is True 
True 
Value of ding is True 
+2

무엇 대괄호를 사용합니까? 또한 부울 값과 없음 값에 대해 == 대신에'is'와 비교하십시오. http://stackoverflow.com/questions/9494404/use-of-true-false-and-none-as-return-values-in-python-functions – Paco

+1

'[dang == False]'는'[False]'를 반환합니다. . 이것에보십시오 : http://www.tutorialsp.com/ppython/python_lists.htm – Paco

+1

@Paco, 당신의 연결은 당신과 동의하지 않는 것처럼 보인다. "boolean (True, False), 숫자 및 문자열과 같은 기본적으로 내장 된 불변 유형에는'is'를 사용하면 안됩니다." – Kevin

답변

1

파이썬에서는 if 문을 구조화하기 위해 괄호 (대괄호는 제외)를 사용할 필요가 없습니다. 첫 번째 예에서

, 당신은 비어 있지 않은 목록되고, True로 평가 if [False] 단순화되고 끝나는하는 if [ dang == False ] :을 썼다. 즉, if 문이 통과하고 코드가 실행되고 다음 조건 (있는 경우)이 건너 뛴다는 것을 의미합니다.

[ dang == False ]은 목록을 만듭니다. 즉, if을 어떻게 Python으로 구조화했는지 간단하지 않습니다.

+1

사실,'[False]'는 부울 컨텍스트에서''True ''로 평가됩니다. 이는 비어 있지 않은'list'이기 때문입니다. – ch3ka

+0

오! 좋은 캐치. – TankorSmash

4

는, 그것이 False 말합니다 결과 당신 때문에 수표를 목록에 넣으십시오 ([] - 그러면 [False]가됩니다). 비어 있지 않은 목록은 파이썬에서 부울 진리를 평가합니다. 그래서 if 문장은 그 조건이 항상 존재하기 때문에 항상 긍정적입니다. 문제를 해결하려면 대괄호를 제거하십시오.

+0

나에게 필요한 퍼즐은 왜 대괄호를 제거해야합니까? –

+2

@DaveA 구문 상 필요하지 않기 때문에 ... 그리고 방금 설명한대로 목록을 만듭니다. –

+1

@DaveA 대괄호는'list' 클래스의 인스턴스 인 Python의 목록을 나타냅니다. 클래스의 인스턴스는 파이썬에서 디폴트로'True'입니다.빈리스트 (또는'[]','()'또는'{}'와 같은 빈 시퀀스는 제외). – IanAuld