<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 2.4.2 邏輯運算 僅用簡單布爾表達式是不夠的,復雜條件需要用復雜布爾表達式來描述。將多個簡單布 爾表達式用邏輯運算符聯結起來,即可構成復雜布爾表達式。Python 語言支持的邏輯運算 符有三個:and、or 和 not。 邏輯運算符 and 邏輯運算符 and 聯結兩個布爾表達式,并得到一個新的布爾表達式。形如: ``` <布爾表達式 1> and <布爾表達式 2> ``` 新表達式的值依賴于參加 and 運算的兩個布爾表達式的值。具體的依賴關系可以用一個真值表來定義(表 2.6): ![](https://box.kancloud.cn/2016-02-22_56cafcdca90d7.png) 表 2.6 邏輯運算符 and 的真值表 在表 2.4 中,P 和 Q 表示參加運算的布爾表達式,P and Q 是新的布爾表達式。由于 P 和 Q 各有兩種可能的值,所以 P、Q 組合共有四種可能的值組合,每種組合在表中用一行表示。 最后一列就是對應于每種組合的 P and Q 的值。從表中可知,P and Q 為真當且僅當 P 為真并且 Q 為真,這也正是 and(并且)的含義。例如: ``` >>> (3 > 2) and (2 > 1) True >>> (3 > 2) and (2 > 3) False ``` 順便說一下,Python 語言允許一種獨特的比較表達式形式,該形式在其他編程語言中 是不允許的。請看下例: ``` >>> 3 > 2 > 1 True >>> 3 >; 2 > 4 False ``` 由于這種連續比較的形式在數學中常用,所以初學者很容易接受。但我們不建議讀者使 用這種比較形式,因為這種形式畢竟不為絕大多數編程語言所接受。對于復合條件,還是使 用邏輯運算符 and 來表達為好。 邏輯運算符 or 邏輯運算符 or 聯結兩個布爾表達式,并得到一個新的布爾表達式。形如: ``` <布爾表達式 1> or <布爾表達式 2> ``` 新表達式的值依賴于參加 or 運算的兩個布爾表達式的值。具體的依賴關系可以用真值表來定義(表 2.7): ![](https://box.kancloud.cn/2016-02-22_56cafcdcba109.png) 表 2.7 邏輯運算符 or 的真值表 從表 2.5 可知,P or Q 為假當且僅當 P 為假并且 Q 為假。也就是說,P 和 Q 只要有一個為真,P or Q 就為真,這大體上就是 or(或者)的含義。例如: ``` >>> (3 > 2) or (3 <= 2) True >>> (2 > 3) or (2 > 4) False ``` 要注意的是,雖然 or 大體上相當于自然語言中的“或者”,但還是有細微差別的。從 表 2.5 可見,當 P 和 Q 都為真時,P or Q 也為真。而在日常生活中如果說“P 或者 Q”,一 般意味著 P 和 Q 只有一個為真,即有互斥的意義。魚或熊掌,不可兼得。 邏輯運算符 not 與 and、or 不同,邏輯運算符 not 是對單一布爾表達式進行否定操作,也稱為單目運 算符。用法如下: ``` not <布爾表達式> ``` ![](https://box.kancloud.cn/2016-02-22_56cafcdcc8d2a.png) 新表達式的值仍可用真值表定義,見表 2.8: 表 2.8 邏輯運算符 not 的真值表 邏輯運算符 not 比較簡單,用例如下: ``` >>> not 3 > 2 False >>> not not 3 > 2 True ``` 后面一個語句相當于我們生活中說的雙重否定變肯定。 利用三個邏輯運算符可以構造任意復雜的布爾表達式。當復雜布爾表達式中存在多個邏輯運算符的時候,哪個先計算、哪個后計算就成了問題。同算術運算符一樣,邏輯運算符也 定義了優先級,復雜表達式的求值依賴于運算符的優先級規則。例如,考慮下列表達式該如 何計算: ``` a or not b and c ``` 在 Python 語言中,為邏輯運算符定義的優先級次序是:not &gt; and &gt; or。因此上面的 表達式等價于下面這個加括號的形式: ``` (a or ((not b) and c)) ``` 其實,與其背誦優先級規則,不如多用括號來明顯地指定計算次序。這對程序員來說不但可以減輕記憶負擔,更重要的是增強了代碼的可讀性。 下面看一個例子。設兩個乒乓球運動員 A 和 B 打比賽,a 和 b 分別表示兩人的得分。 根據規則,一局比賽結束的條件是:A 得到 11 分或者 B 得到 11 分。這個條件可以表示為下列布爾表達式: ``` a == 11 or b == 11 ``` 當任一運動員得到 11 分,就導致表達式中的一個簡單條件為真,根據 or 的定義,整個表 達式也就為真。或者反過來表達,如果還沒有滿足上述條件,就繼續比賽。因此繼續比賽的 條件就是: ``` not (a == 11 or b == 11) ``` 實際上,乒乓球比賽規則還要復雜一點。當 A 和 B 打到 10 平,規則規定先多得兩分者 獲勝。將這一特殊情形考慮進去,并結合上面的普通情形,可將結束條件表達為: ``` (a >= 11 and a - b >= 2) or (b >= 11 and b - a >= 2) ``` 其含義是:任一方得分達到 11 分以上,并且領先另一人 2 分以上,則一局比賽結束。 這個條件可以稍加簡化,即如 ``` (a &gt;= 11 or b &gt;= 11) and abs(a - b) &gt;= 2 ``` 其含義是:當任一方得分達到 11 分以上,并且兩人分差超過 2,則一局比賽結束。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看