및/또는 Python의 작동 논리에 대한 예제 튜토리얼을 공유하세요.

零下一度
풀어 주다: 2017-05-26 11:58:44
원래의
2609명이 탐색했습니다.

pythonand 및 or 연산의 핵심 아이디어 - 단락 논리

시작됨 최근에 Liao Xuefeng의 Python 튜토리얼을 읽으면서 저는 "파이썬을 어려운 방법으로 배우기"를 먼저 넣을 계획입니다. 왜냐하면 마지막 몇 장이 여전히 약간 어렵게 느껴지기 때문입니다(음, 저는 너무 약하지만 한 번에 한 단계씩 시간을 내십시오). 생각해보기 Liao Xuefeng의 튜토리얼을 읽은 후 돌아가서 몇 가지 아이디어를 얻을 수 있을 것입니다.

다시 본론으로 돌아가서, 제가 오늘 이 글을 쓴 이유는 Liao Xuefeng 튜토리얼의 필터 장에 이 항목이 등장했기 때문입니다. 이것은 이전 튜토리얼에서는 언급되지 않았습니다. , 처음 읽었을 때 혼란 스러웠습니다. 코드는 다음과 같습니다.

    #把一个序列中的空字符串删掉

    1>  def not_empty(s):
    2>      return s and s.strip()
    3>
    4>  filter(not_empty, ['A', '', 'B', None, 'C', '  '])
로그인 후 복사

나중에 인터넷에서 and/or에 대한 일부 작동 논리를 확인하고 직접 추가했습니다. 이해하고 다음과 같이 요약했습니다. (잘못된 부분이 있으면 수정해주세요.)

1. 논리 연산자가 포함되어 있습니다

먼저, 기본 개념부터 시작해 보겠습니다. Python의 어떤 개체가 False로 처리됩니까? 그리고 어느 것이 사실인가요?

** Python에서는 없음, 모든 숫자 유형의 0, 빈 문자열 "", 빈 튜플(), 빈 목록 [], 빈 사전 {}은 False로 처리되며, 사용자 정의 유형이 0이 아닌 () 또는 len () 메서드와 해당 메서드가 0 또는 False를 반환하면 해당 인스턴스도 False로 처리되고 다른 개체는 True가 됩니다. **

다음은 가장 간단한 논리 연산입니다.

    True  and True    ==> True                  True  or True    ==> True
    True  and False   ==> False                 True  or False   ==> True
    False and True    ==> False                 False or True    ==> True
    False and False   ==> False                 False or False   ==> False
로그인 후 복사

위의 두 가지 점을 사용하여 몇 가지 예를 들 수 있습니다.

예제 1

    >>> a = [0, 1, '' ,3]
    >>> a[0] and a[1]
    0
로그인 후 복사

a[0] = 0, a[1] = 1이므로 a[0]과 a[1]은 0과 1(False 및 True)이 되므로 0(False)입니다.

예제 2

    >>> a = [0, 1, '' ,3]
    >>> a[2] and a[1]
    ''
로그인 후 복사

둘 다 동시에 False인 경우 왼쪽 값을 반환합니다.

2. 두 개 이상의 논리 연산자를 포함합니다

논리 연산자 및/또는이 둘 이상인 경우 해당 연산 규칙의 핵심 아이디어는 단락 논리입니다. 자, 단편적 사고를 살펴보자(제 요약은 인터넷상의 다른 분들의 의견과 다를 수 있으니 제 분석을 천천히 들어주세요):

표현에서 왼쪽에서 오른쪽으로 연산, or 왼쪽의 논리값이 True이면 or 이후의 모든 표현식이 단락되고 or 왼쪽의 표현식이 직접 출력됩니다.

표현식은 왼쪽에서 오른쪽으로 평가됩니다. and 왼쪽의 논리값이 False이면 모든 후속 및 표현식은 or가 나타날 때까지 단락되고 표현식은 단락됩니다. and 의 왼쪽이 출력됩니다. or 의 왼쪽으로 가서 다음 논리연산에 참여합니다.

or의 좌변이 False이거나 and의 좌변이 True이면 단락 논리를 사용할 수 없습니다.

조금 추상적일 수도 있지만 괜찮습니다. 다음에는 몇 가지 예를 들어 보겠습니다. <… 처음에는 all and 문 또는 all or 문이라고 가정합니다.

예제 1

    1>  def a():
    2>      print &#39;A&#39;
    3>      return []
    4>  def b():
    5>      print &#39;B&#39;
    6>      return []
    7>  def c():
    8>      print &#39;C&#39;
    9>      return 1
    10> def d():
    11>     print &#39;D&#39;
    12>     return []
    13> def e():
    14>     print &#39;E&#39;
    15>     return 1
    16>
    17> if a() and b() and c() and d() and e():
    18>     print &#39;ok&#39;
    
    #显示结果如下
    A
로그인 후 복사

 a()의 논리값은 False이고 뒤에 and 문이 있으며 모두 단락되어 있습니다. 그리고 마지막으로 a()의 표현식을 반환했습니다.

예제 2

    1>  def a():
    2>      print &#39;A&#39;
    3>      return 1
    4>  def b():
    5>      print &#39;B&#39;
    6>      return 1
    7>  def c():
    8>      print &#39;C&#39;
    9>      return []
    10> def d():
    11>     print &#39;D&#39;
    12>     return []
    13> def e():
    14>     print &#39;E&#39;
    15>     return 1
    16>
    17> if a() and b() and c() and d() and e():
    18>     print &#39;ok&#39;

    #显示结果如下
    A
    B
    C
로그인 후 복사

 a()의 논리값은 True이고 단락될 수 없습니다. 그 후 b()로 논리 연산을 수행하고 b의 논리값 True를 반환합니다. (), 이는 c()와 동일합니다. 논리 연산을 수행하고 c()의 논리값 False를 반환합니다. 모두 뒤에 and 문이 오면 모두 단락되고 최종적으로 c()의 식이 반환됩니다.

예제 3

    1>  def a():
    2>      print &#39;A&#39;
    3>      return 1
    4>  def b():
    5>      print &#39;B&#39;
    6>      return []
    7>  def c():
    8>      print &#39;C&#39;
    9>      return 1
    10> def d():
    11>     print &#39;D&#39;
    12>     return []
    13> def e():
    14>     print &#39;E&#39;
    15>     return 1
    16>
    17> if a() or b() or c() or d() or e():
    18>     print &#39;ok&#39;

    #显示结果如下
    A
    ok
로그인 후 복사

 a()의 논리값이 True이고 뒤에 or 문이 이어지며 모두 단락되고 마지막으로 a()의 표현식이 반환됩니다.

예제 4

    1>  def a():
    2>      print &#39;A&#39;
    3>      return []
    4>  def b():
    5>      print &#39;B&#39;
    6>      return []
    7>  def c():
    8>      print &#39;C&#39;
    9>      return 1
    10> def d():
    11>     print &#39;D&#39;
    12>     return []
    13> def e():
    14>     print &#39;E&#39;
    15>     return 1
    16>
    17> if a() or b() or c() or d() or e():
    18>     print &#39;ok&#39;

    #显示结果如下
    A
    B
    C
    ok
로그인 후 복사

 a()의 논리값은 True이고 단락될 수 없습니다. 이후 b()로 논리 연산을 수행하고 논리값 False를 반환합니다. b(), 이는 c()와 동일합니다. 논리 연산을 수행하고 c()의 논리값 True를 반환합니다. 모두 뒤에 or 문이 오면 모두 단락되고 마지막으로 c()의 표현식이 됩니다. 반환됩니다.

이제 and 및 or 문이 공존하는 상황에 대해 이야기해 보겠습니다.

예제 5

    1>  def a():
    2>      print &#39;A&#39;
    3>      return []
    4>  def b():
    5>      print &#39;B&#39;
    6>      return []
    7>  def c():
    8>      print &#39;C&#39;
    9>      return 1
    10> def d():
    11>     print &#39;D&#39;
    12>     return []
    13> def e():
    14>     print &#39;E&#39;
    15>     return 1
    16> def f():
    17>     print &#39;F&#39;
    18>     return 1
    19> def g():
    20>     print &#39;G&#39;
    21>     return []
    22> def h():
    23>     print &#39;H&#39;
    24>     return 1
    25>
    26> if a() and b() and  c() and d() or e() and f() or g() and h():
    27>     print &#39;ok&#39;

    #输出结果如下:
    A
    E
    F
    ok
로그인 후 복사

문이 길면 주의 깊게 분석해 보겠습니다. 먼저 a()의 논리 값은 False입니다. 그런 다음 or 문까지 세 개의 and 문이 있습니다: a() 및 b() 및 c() 및 d(), 모두 단락되어 있습니다. a() 또는 e()가 True이면 e()를 출력하고, e() 및 F()가 True이면 f()를 출력합니다. 뒤에 or 문이 오면 모든 후속 문이 단락됩니다. (제가 정리한 단락논리 3가지를 잘 이해하시면 문제 없을 겁니다.)

3.

3항 연산

연산자

Python2.5 이전에는 Python에 삼항 연산자가 없었습니다. Guido Van Rossum은 이것이 Python을 더 간결하게 만드는 데 도움이 되지 않는다고 믿었지만, C, C++, Java 프로그래밍에 익숙한 프로그래머들은 이를 사용하거나 시뮬레이션하려고 했습니다. 삼항 연산자이며 이것은 파이썬의 단락 논리를 사용합니다.  3항 연산 연산자 bool ? a : b, bool이 true이면 a, 그렇지 않으면 b입니다.

  转化为 python 语言为:

        bool and a or b
로그인 후 복사

  如何理解呢? 首先 a , b 都为真,这是默认的。如果 bool 为真, 则 bool and a 为真,输出 a ,短路 b 。如果 bool 为假,短路 a,直接 bool or b ,输出 b 。

  换一种更简单的写法:

       return a if bool else b
로그인 후 복사

【相关推荐】

1. Python and、or以及and-or语法总结

2. 解析python中and与or用法

3. 详细介绍Python中and和or实际用法

4. 总结Python的逻辑运算符and

5. Python:逻辑判断与运算符实例

위 내용은 및/또는 Python의 작동 논리에 대한 예제 튜토리얼을 공유하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿