2014-03-27 3 views
0

이 코드는 어떤 이유로 작동하지 않습니다. 그것은 'and'명령과 함께 작동하지만 'or'을 어떻게 사용하는지 완전히 모르겠습니다. 내 현재 코드는 다음 '또는'음성 언어에서python에서 'or'명령을 올바르게 사용하는 방법

if (response1 not in symbols or letters): 
    print("You did something wrong") 
+0

참조 http://stackoverflow.com/questions/20002503/why-does-ab-or-c-or-d-always-evaluate-to-true하고 찾고있는 http://stackoverflow.com/questions/15112125/if-x-or-y-or-z-blah –

+4

때로는'&&'와'||'대신'및 &'를 사용하는 것이 더 좋았는지 궁금합니다. '와'또는', 사람들이 통신사가 영어 접속사가하는 엄청난 일을하지 않는다는 것을 깨닫게하기 위해서입니다. – user2357112

답변

4

(그 문제에 대한 대부분의 프로그래밍 언어) 파이썬의 or처럼되지 않습니다. 당신이 말할 때 는

if (response1 not in symbols or letters) 

파이썬은 실제로

당신이 원하는 것을하지
if ((response1 not in symbols) or (letters)) 

로 해석합니다. 따라서 실제로 수행해야하는 작업은 다음과 같습니다.

if ((response1 not in symbols) and (response1 not in letters)) 
+1

@ user3468137 :이 답변 외에도 [Expressions summary documentation] (http://docs.python.org/2/reference/expressions.html#expressions)에 대한 내용을 볼 수 있습니다. 특히 [부울 연산] (http://docs.python.org/2/reference/expressions.html#boolean-operations), [표현식 평가 순서] (http://docs.python.org/2/reference/expressions) .html # evaluation-order) 및 [운영자 우선 순위] (http://docs.python.org/2/reference/expressions.html#operator-precedence) – vaibhaw

1

or은 논리 연산자입니다. or 이전의 부분이 true-ish이면 반환되고 그렇지 않으면 두 번째 부분이 반환됩니다.

여기에서 response1 not in symbols이 참이면 반환되며 그렇지 않으면 letters이 반환됩니다. letters에 일이있는 경우 true-ish 자체이며 if 문은 True로 간주합니다.

당신은

if (response1 not in symbols) and (response1 not in letters): 
    print("You did something wrong") 
관련 문제