python-基礎篇-選擇-是什么

文章目錄

  • 定義一:Python 條件語句跟其他語言基本一致的,都是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。
    • 1、什么是條件語句
    • 2、if 語句的基本形式
    • 3、if 語句多個判斷條件的形式
    • 4、if 語句多個條件同時判斷
    • 5、if 嵌套
  • 定義一:`if`和`else`就是專門用于構造分支結構的關鍵字,很顯然你不能夠使用它作為變量名。
    • 分支結構
      • 應用場景
      • if語句的使用

在這里插入圖片描述

Python 條件語句跟其他語言基本一致的,都是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。
ifelse就是專門用于構造分支結構的關鍵字,很顯然你不能夠使用它作為變量名。

定義一:Python 條件語句跟其他語言基本一致的,都是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。

1、什么是條件語句

Python 條件語句跟其他語言基本一致的,都是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。

Python 程序語言指定任何非 0 和非空(null)值為 True,0 或者 null 為 False。

執行的流程圖如下:

if語句流程圖

2、if 語句的基本形式

Python 中,if 語句的基本形式如下:

if 判斷條件:執行語句……
else:執行語句……

之前的章節也提到過,Python 語言有著嚴格的縮進要求,因此這里也需要注意縮進,也不要少寫了冒號 :

if 語句的判斷條件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)來表示其關系。

例如:

# -*-coding:utf-8-*-results=59if results>=60:print ('及格')
else :print ('不及格')

輸出的結果為:

不及格

上面也說到,非零數值、非空字符串、非空 list 等,判斷為 True,否則為 False。因此也可以這樣寫:

num = 6
if num :print('Hello Python')

輸出的結果如下:

可見,把結果打印出來了。

那如果我們把 num 改為空字符串呢?

很明顯,空字符串是為 False 的,不符合條件語句,因此不會執行到 print('Hello Python') 這段代碼。

還有再啰嗦一點,提醒一下,在條件判斷代碼中的冒號 : 后、下一行內容是一定要縮進的。不縮進是會報錯的。

冒號和縮進是一種語法。它會幫助 Python 區分代碼之間的層次,理解條件執行的邏輯及先后順序。

3、if 語句多個判斷條件的形式

有些時候,我們的判斷語句不可能只有兩個,有些時候需要多個,比如上面的例子中大于 60 的為及格,那我們還要判斷大于 90 的為優秀,在 80 到 90 之間的良好呢?

這時候需要用到 if 語句多個判斷條件,

用偽代碼來表示:

if 判斷條件1:執行語句1……
elif 判斷條件2:執行語句2……
elif 判斷條件3:執行語句3……
else:執行語句4……

實例:

# -*-coding:utf-8-*-results = 89if results > 90:print('優秀')
elif results > 80:print('良好')
elif results > 60:print ('及格')
else :print ('不及格')

輸出的結果:

良好

4、if 語句多個條件同時判斷

有時候我們會遇到多個條件的時候該怎么操作呢?

比如說要求 java 和 python 的考試成績要大于 80 分的時候才算優秀,這時候該怎么做?

這時候我們可以結合 orand 來使用。

or (或)表示兩個條件有一個成立時判斷條件成功

and (與)表示只有兩個條件同時成立的情況下,判斷條件才成功。

例如:

# -*-coding:utf-8-*-java = 86
python = 68if java > 80 and  python > 80:print('優秀')
else :print('不優秀')if ( java >= 80  and java < 90 )  or ( python >= 80 and python < 90):print('良好')

輸出結果:

不優秀
良好

注意:if 有多個條件時可使用括號來區分判斷的先后順序,括號中的判斷優先執行,此外 and 和 or 的優先級低于 >(大于)、<(小于)等判斷符號,即大于和小于在沒有括號的情況下會比與或要優先判斷。

5、if 嵌套

if 嵌套是指什么呢?

就跟字面意思差不多,指 if 語句中可以嵌套 if 語句。

比如上面說到的例子,也可以用 if 嵌套來寫。

當然這只是為了說明 if 條件語句是可以嵌套的。如果是這個需求,我個人還是不太建議這樣使用 if 嵌套的,因為這樣代碼量多了,而且嵌套太多,也不方便閱讀代碼。

定義一:ifelse就是專門用于構造分支結構的關鍵字,很顯然你不能夠使用它作為變量名。

分支結構

應用場景

迄今為止,我們寫的Python代碼都是一條一條語句順序執行,這種代碼結構通常稱之為順序結構。然而僅有順序結構并不能解決所有的問題,比如我們設計一個游戲,游戲第一關的通關條件是玩家獲得1000分,那么在完成本局游戲后,我們要根據玩家得到分數來決定究竟是進入第二關,還是告訴玩家“Game Over”,這里就會產生兩個分支,而且這兩個分支只有一個會被執行。類似的場景還有很多,我們將這種結構稱之為“分支結構”或“選擇結構”。給大家一分鐘的時間,你應該可以想到至少5個以上這樣的例子,趕緊試一試。

if語句的使用

在Python中,要構造分支結構可以使用ifelifelse關鍵字。所謂關鍵字就是有特殊含義的單詞,像ifelse就是專門用于構造分支結構的關鍵字,很顯然你不能夠使用它作為變量名(事實上,用作其他的標識符也是不可以)。下面的例子中演示了如何構造一個分支結構。

"""
用戶身份驗證"""
username = input('請輸入用戶名: ')
password = input('請輸入口令: ')
# 用戶名是admin且密碼是123456則身份驗證成功否則身份驗證失敗
if username == 'admin' and password == '123456':print('身份驗證成功!')
else:print('身份驗證失敗!')

需要說明的是和C/C++、Java等語言不同,Python中沒有用花括號來構造代碼塊而是使用了縮進的方式來表示代碼的層次結構,如果if條件成立的情況下需要執行多條語句,只要保持多條語句具有相同的縮進就可以了。換句話說連續的代碼如果又保持了相同的縮進那么它們屬于同一個代碼塊,相當于是一個執行的整體。縮進可以使用任意數量的空格,但通常使用4個空格,建議大家不要使用制表鍵或者設置你的代碼編輯工具自動將制表鍵變成4個空格

當然如果要構造出更多的分支,可以使用if...elif...else...結構或者嵌套的if...else...結構,下面的代碼演示了如何利用多分支結構實現分段函數求值。

"""
分段函數求值3x - 5  (x > 1)
f(x) =  x + 2   (-1 <= x <= 1)5x + 3  (x < -1)"""x = float(input('x = '))
if x > 1:y = 3 * x - 5
elif x >= -1:y = x + 2
else:y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

當然根據實際開發的需要,分支結構是可以嵌套的,例如判斷是否通關以后還要根據你獲得的寶物或者道具的數量對你的表現給出等級(比如點亮兩顆或三顆星星),那么我們就需要在if的內部構造出一個新的分支結構,同理elifelse中也可以再構造新的分支,我們稱之為嵌套的分支結構,也就是說上面的代碼也可以寫成下面的樣子。

"""
分段函數求值3x - 5	(x > 1)
f(x) =	x + 2	(-1 <= x <= 1)5x + 3	(x < -1)"""x = float(input('x = '))
if x > 1:y = 3 * x - 5
else:if x >= -1:y = x + 2else:y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

說明: 大家可以自己感受一下這兩種寫法到底是哪一種更好。在之前我們提到的Python之禪中有這么一句話“Flat is better than nested.”,之所以提倡代碼“扁平化”是因為嵌套結構的嵌套層次多了之后會嚴重的影響代碼的可讀性,所以能使用扁平化的結構時就不要使用嵌套。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37404.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37404.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37404.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

次序統計量

內容來源 概率論與數理統計教程&#xff08;第三版&#xff09; 茆詩松 高等教育出版社 數理統計學導論&#xff08;原書第7版&#xff09; 機械工業出版社 定義 設 X 1 , X 2 , ? , X n X_1,X_2,\cdots,X_n X1?,X2?,?,Xn? 是來自連續分布的隨機樣本 此分布具有 p d f…

【機器學習】Python reversed 函數

目錄&#xff1a; reversed()函數初探應用于列表和元組實戰演練&#xff1a;山海經故事文本處理 Python中的內置函數——reversed()。 這個函數能夠幫助你高效地處理序列類型數據&#xff0c;比如列表、元組、字符串等&#xff0c;通過它你可以輕松地反轉這些序列中的元素順…

JSON 簡述與應用

1. JSON 簡述 JSON&#xff08;JavaScript Object Notation&#xff09;是一種輕量級的數據交換格式&#xff0c;常用于客戶端與服務器之間的數據傳遞。它基于JavaScript對象表示法&#xff0c;但獨立于語言&#xff0c;可以被多種編程語言解析和生成。 1.1 特點 輕量級&#…

JS對數據類型的檢測方式

1. typeof()對于基本數據類型沒問題&#xff0c;遇到引用數據類型就不管用 console.log( typeof 666 ); // number console.log( typeof [1,2,3] ); // object 2. instanceof()只能判斷引用數據類型&#xff0c;不能判斷基本數據類型 console.log( [] instanceof Array ) // tr…

Unity--協程--Coroutine

Unity–協程–Coroutine 1. 協程的基本概念 基本概念:不是線程,將代碼按照劃分的時間來執行,這個時間可以是具體的多少秒,也可以是物理幀的時間,也可以是一幀的繪制結束的時間。 協程的寫法&#xff1a;通過返回IEnumerator的函數實現&#xff0c;使用yield return語句暫停執…

Golang | Leetcode Golang題解之第205題同構字符串

題目&#xff1a; 題解&#xff1a; func isIsomorphic(s, t string) bool {s2t : map[byte]byte{}t2s : map[byte]byte{}for i : range s {x, y : s[i], t[i]if s2t[x] > 0 && s2t[x] ! y || t2s[y] > 0 && t2s[y] ! x {return false}s2t[x] yt2s[y] …

python 查找輪廓

在Python中&#xff0c;查找圖像的輪廓通常使用OpenCV庫。以下是一個簡單的示例代碼&#xff0c;展示了如何使用OpenCV來查找并繪制圖像的輪廓&#xff1a; pythonimport cv2 import numpy as np# 讀取圖像 image cv2.imread(your_image.jpg, 0) # 請將your_image.jpg替換為您…

設備樹下的 platform 驅動編寫

設備樹下的 platform 驅動編寫 設備樹下的 platform 驅動簡介 platform 驅動框架分為總線、設備和驅動&#xff0c;其中總線不需要我們這些驅動程序員去管理&#xff0c;這個是 Linux 內核提供的&#xff0c;我們在編寫驅動的時候只要關注于設備和驅動的具體實現即可。在沒有…

《昇思25天學習打卡營第6天 | 函數式自動微分》

《昇思25天學習打卡營第6天 | 函數式自動微分》 目錄 《昇思25天學習打卡營第6天 | 函數式自動微分》函數式自動微分簡單的單層線性變換模型函數與計算圖微分函數與梯度計算Stop Gradient 函數式自動微分 神經網絡的訓練主要使用反向傳播算法&#xff0c;模型預測值&#xff0…

建站小記:遷移域名DNS到CloudFlare

CloudFlare一直有賽博菩薩之稱&#xff0c;據說用它做DNS解析服務又快又好又免費&#xff0c;還能防DDOS攻擊&#xff0c;并且可以提供頁面訪問統計功能。 正好我博客網頁打開略卡頓&#xff0c;所以決定將自己的DNS解析遷移到CloudFlare。 1.登錄CF控制臺&#xff0c;添加自己…

LeetCode-刷題記錄-二分法合集(本篇blog會持續更新哦~)

一、二分查找概述 二分查找&#xff08;Binary Search&#xff09;是一種高效的查找算法&#xff0c;適用于有序數組或列表。&#xff08;但其實只要滿足二段性&#xff0c;就可以使用二分法&#xff0c;本篇博客后面博主會持續更新一些題&#xff0c;來破除一下人們對“只有有…

(已解決)Adobe Flash Player已不再受支持

文章目錄 前言解決方案 前言 一般來說&#xff0c;很少遇到官方網站使用Adobe Flash Player來進行錄用名單公示了。但是&#xff0c;今天就偏偏遇到一次&#xff0c; 用谷歌瀏覽器打不開&#xff0c; 點了沒有反應&#xff0c;用其他的瀏覽器&#xff0c;例如windows自帶的那…

Golang | Leetcode Golang題解之第207題課程表

題目&#xff1a; 題解&#xff1a; func canFinish(numCourses int, prerequisites [][]int) bool {var (edges make([][]int, numCourses)indeg make([]int, numCourses)result []int)for _, info : range prerequisites {edges[info[1]] append(edges[info[1]], info[0]…

數據結構:期末考 第六次測試(總復習)

一、 單選題 &#xff08;共50題&#xff0c;100分&#xff09; 1、表長為n的順序存儲的線性表&#xff0c;當在任何位置上插入或刪除一個元素的概率相等時&#xff0c;插入一個元素所需移動元素的平均個數為&#xff08; D &#xff09;.&#xff08;2.0&#xff09; A、 &am…

在node環境使用MySQL

什么是Sequelize? Sequelize是一個基于Promise的NodeJS ORM模塊 什么是ORM? ORM(Object-Relational-Mapping)是對象關系映射 對象關系映射可以把JS中的類和對象&#xff0c;和數據庫中的表和數據進行關系映射。映射之后我們就可以直接通過類和對象來操作數據表和數據了, 就…

join()方法——連接字符串、元組、列表和字典

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 語法參考 join()方法用于連接字符串數組。將字符串、元組、列表中的元素以指定的字符&#xff08;分隔符&#xff09;連接生成一個新的字符串&#…

喜報 | 極限科技獲得北京市“創新型”中小企業資格認證

2024年6月20日&#xff0c;北京市經濟和信息化局正式發布《關于對2024年度4月份北京市創新型中小企業名單進行公告的通知》&#xff0c;極限數據&#xff08;北京&#xff09;科技有限公司憑借其出色的創新能力和卓越的企業實力&#xff0c;成功獲得“北京市創新型中小企業”的…

學會python——在excel中寫入數據(python實例十三)

目錄 1.認識Python 2.環境與工具 2.1 python環境 2.2 Visual Studio Code編譯 3 .想Excel中寫入數據 3.1 代碼構思 3.2 代碼實例 3.3 運行結果 4.總結 1.認識Python Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。 Python 的設計具有很強的…

數據結構算法之B樹

一、緒論 1.1 數據結構的概念和作用 1.2 B樹的起源和應用領域 二、B樹的基本原理 2.1 B樹的定義和特點 2.2 B樹的結構和節點組成 2.3 B樹的插入 2.4 B樹的刪除操作 三、B樹的優勢和應用 3.1 B樹在數據庫系統中的應用 3.2 B樹在文件系統中的應用 3.3 B樹在內存管理中…

HTML5的多線程技術:Shared Worker的使用示例

Shared Worker 與普通的 Web Worker 類似&#xff0c;但不同之處在于它可以被多個瀏覽器窗口、標簽頁或者iframe共享&#xff0c;使得這些上下文之間能夠相互通信。下面是一個使用 Shared Worker 的完整示例。共享Worker腳本&#xff08;sharedWorker.js&#xff09; self.add…