Python教程(15)——Python流程式控制制語句詳解

来源:https://www.cnblogs.com/kiwiblog/archive/2023/10/22/17780232.html
-Advertisement-
Play Games

Python流程式控制制是Python編程中非常重要的一部分,它用於控製程序的執行流程。Python提供了多種流程式控制制語句,包括if語句、while迴圈、for迴圈、break和continue語句等。這種流程式控制制在各個語言中都是大同小異的,如果你已經學過其他的語言,那麼這章節就可以直接跳過。 if語句 ...


Python流程式控制制是Python編程中非常重要的一部分,它用於控製程序的執行流程。Python提供了多種流程式控制制語句,包括if語句、while迴圈、for迴圈、break和continue語句等。這種流程式控制制在各個語言中都是大同小異的,如果你已經學過其他的語言,那麼這章節就可以直接跳過。

if語句

if語句用於根據條件執行不同的代碼塊。condition是一個布爾表達式,後面一定要加冒號,這是python語法規定。if語句後面的條件表達式是可以加括弧的,但並不是必須的。使用括弧可以使代碼更加清晰易讀,特別是在複雜的條件表達式中。然而,括弧並不是語法要求,可以根據個人編碼風格和團隊約定進行選擇。

if condition:
    # code to be executed if condition is True
else:
    # code to be executed if condition is False

下麵的代碼演示瞭如何使用if語句來判斷一個數是否為正數:

num = int(input("請輸入一個整數:"))
if num > 0:
    print("輸入的數是正數")
else:
    print("輸入的數不是正數")

else if語句

else if語句用於在if語句之後添加多個條件分支,使用方式和if語句是一樣的。另外需要註意的是最後的else語句是直接在else後面加冒號的,應該後面已經沒有判斷條件了。

if condition1:
    # code to be executed if condition1 is True
elif condition2:
    # code to be executed if condition1 is False and condition2 is True
else:
    # code to be executed if condition1 and condition2 are False

condition1condition2是兩個布爾表達式,如果它們的值為True,則執行相應的代碼塊;否則執行else語句中的代碼塊。下麵的代碼演示瞭如何使用else if語句來判斷一個數是否為偶數:

num = int(input("請輸入大於0的數:"))
if num > 0:
    print("輸入的數大於0")
else if num < 0:
    print("輸入的數小於0")
else:
    print("輸入的數等於0")

for迴圈

for迴圈用於遍歷一個序列(如列表、元組或字元串)中的元素。它的語法如下:

for element in sequence:
    # code to be executed for each element in sequence

其中,element是當前遍歷到的序列元素的值,sequence是一個序列(如列表、元組或字元串)。迴圈體內的代碼塊可以包含任意Python語句。在每次迴圈迭代中,element的值都會被更新為下一個序列元素的值。

遍歷類型

for迴圈是可以用於遍歷各種序列,主要有列表、元組、字元串、字典等。

  1. 遍歷列表:
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
   print(fruit)
  1. 遍歷元組:
numbers = (1, 2, 3, 4, 5)
for num in numbers:
   print(num)
  1. 遍歷字元串:
word = "Python"
for char in word:
   print(char)
  1. 遍歷字典的鍵:
ages = {"John": 25, "Alice": 28, "Bob": 30}
for name in ages:
   print(name)

range關鍵字

以上是for迴圈遍歷列表元組相關操作,有時候我們又需要遍歷序列,這時候就需要range關鍵字了。在 Python中,range() 是一個內置函數,用於生成一個整數序列。它可以通過指定起始值、結束值和步長來生成相應的序列。

range() 函數的語法如下:

range(stop)
range(start, stop)
range(start, stop, step)

參數說明:

  • start(可選):起始值,預設為 0。
  • stop:結束值,生成的序列不包括該值。
  • step(可選):步長,預設為 1。

range() 函數返回的是一個可迭代對象,通常與 for 迴圈結合使用。當只傳遞一個參數時,預設是作為結束值;當傳遞兩個參數時,第一個參數作為起始值,第二個參數作為結束值;當傳遞三個參數時,第一個參數作為起始值,第二個參數作為結束值,第三個參數作為步長。

以下是一些使用 range() 函數的示例:

# 生成 0 至 4 的整數序列
numbers1 = range(5)
print(list(numbers1))  # [0, 1, 2, 3, 4]

# 生成 1 至 10 的整數序列
numbers2 = range(1, 11)
print(list(numbers2))  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 生成 0 至 10 的偶數序列
numbers3 = range(0, 11, 2)
print(list(numbers3))  # [0, 2, 4, 6, 8, 10]

for element in range(start, stop, step):
    # 在此處執行迴圈體語句

需要註意的是,range() 函數生成的是惰性序列(lazy sequence),它並不會一次性地將所有的值都存儲在記憶體中,而是在需要的時候才生成新的值。如果想要立即獲取包含所有整數的列表,可以使用 list(range(start, stop, step)) 的方式進行轉換。

# 遍歷 1 至 10 的整數,步長為 1
for num in range(1, 11, 1):
    print(num)

# 遍歷 0 至 10 的偶數,步長為 2
for num in range(0, 11, 2):
    print(num)

# 遍歷 10 至 1 的整數,步長為 -1
for num in range(10, 0, -1):
    print(num)

while迴圈

while迴圈用於重覆執行一段代碼,直到滿足某個條件為止。它的語法如下:

while condition:
    # code to be executed repeatedly until condition is False

condition是一個布爾表達式,如果它的值為True,則執行迴圈體內的代碼塊;否則跳出迴圈。迴圈體內的代碼塊可以包含任意Python語句。

下麵的代碼演示瞭如何使用while迴圈來計算1到100的和:

total = 0
i = 1
while i <= 100:
    total += i
    i += 1
print("1到100的和為:", total)

註意,在while迴圈中,一定要確保在迴圈體中更新迴圈條件的值,以避免無限迴圈的情況發生。如果條件永遠為真,會導致代碼陷入無限迴圈的狀態,程式無法繼續向下執行。
為了避免無限迴圈,可以在迴圈體內使用適當的條件控制語句(如break)來跳出迴圈,或者在外部設定一個計數器,並確保在合適的時機更新計數器的值。

break語句

break 是一種控制流語句,在迴圈中使用它可以立即終止迴圈並跳出迴圈體,進而執行迴圈外的下一條語句。當 break 語句被執行時,程式將會跳出迴圈,繼續執行迴圈後面的代碼。它可以用於 while 迴圈、for 迴圈等迴圈結構。

fruits = ["apple", "banana", "cherry", "date"]

for fruit in fruits:
    if fruit == "cherry":
        break
    print(fruit)

print("Loop ends")

輸出結果為:

apple
banana
Loop ends

在上面的示例中,當迴圈遍歷到 "cherry" 時,滿足條件 fruit == "cherry"break 被執行,立即終止了迴圈。因此,後續的 "date" 不會被輸出。

使用 break 語句可以在滿足特定條件時,提前退出迴圈,從而減少不必要的迭代。在某些情況下,特定條件的出現可能會導致迴圈無需執行其餘部分,這時可以利用 break 來提前終止迴圈,節省計算資源。

continue語句

在Python中,continue語句用於跳過當前迴圈中的剩餘代碼,並繼續執行下一次迴圈。當continue語句被執行時,程式將立即跳轉到迴圈的開頭,而不執行continue語句之後的代碼。它通常用於條件判斷內部,用來控制迴圈的執行流程。

for i in range(1, 11):
    if i % 2 == 1:
        continue
    print(i)

上述代碼將輸出偶數的數字,而跳過了奇數。輸出結果如下:

2
4
6
8
10

在上述示例中,迴圈從1到10,當遇到奇數時,continue語句將會跳過print(i)的執行,直接進入下一次迴圈,從而實現了只輸出偶數的效果。

需要註意的是,continue語句只會跳過當前迴圈內部的剩餘代碼,不會終止整個迴圈。如果要徹底終止迴圈,可以使用break語句。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2023年6月19日決定對rust做一個重新的梳理,整理今年4月份做完的rustlings,根據自己的理解來寫一份題解,記錄在此。 周折很久,因為中途經歷了推免的各種麻煩事,以及選擇資料庫作為未來研究方向後的一段適應過程,耽擱了很久。 2023年10月份秋冬季的開源操作系統訓練營又開始了,所以我回來 ...
  • 在⾯試過程中,應聘者可能想要從對公司環境的觀察以及對⾯試官的提問當中獲取公司相關的信息,以此來判斷這家公司靠不靠譜,⾃⼰值不值得去。但這種信息可能會帶有⼀定的⽚⾯性,畢竟 應聘者沒有在公司實際體驗過⼯作的內容,很難通過⼀兩次⾯試就能看出公司的實際情況。這些細節⼀般只能給予應聘者⼀點有效信息,雖然並不 ...
  • 實戰準備:要爬取的url:https://www.shicimingju.com/book/sanguoyanyi.html 實戰要求:爬取詩詞名句網站中的三國演義文章,將每章的標題和內容寫入自己的項目文件(sanguo.txt) (本次爬取使用bs4) 1 import requests 2 # ...
  • 編寫頁面這個程式設計工程師嘴上的口頭禪是在 2016 年在建行剛開始最開發的時候聽到的, 因為大學的時候學習的程式設計語言是一 C++為主,對於前端頁面這種能看到效果只是一種很難體會的概念。學習 C 語言程式設計的時候顯示在眼前的是一個命令行黑屏,學 C++, C#都是。作為大學生初學程式設計開發, ...
  • 我們通過類構造函數來創建對象,上文(第14天)我們學到,與Java不同,創建Dart對象時可以省略構造函數之前的new關鍵字。同時,Dart語言除預設構造函數外,還有命名構造函數,重定向構造函數,常量構造函數和工廠構造函數等…… ...
  • 高精度(加減乘除) 高精度的核心思想就是利用數組去儲存大數,然後通過模擬手動計算的方式,來進行計算。 主要分三個模塊: 1.讀入數據並轉換為(int)類型儲存 高精度加法 核心思想:將每個位上的數字都+起來,如果大於10就進位。 核心代碼如下: c[i]+=a[i]+b[i];//兩數相加 c[i+ ...
  • Go的map是一種高效的數據結構,用於存儲鍵值對。其底層實現是一個哈希表(hash table),下麵是有關map底層實現的詳細介紹: 哈希表: map的底層實現是一個哈希表,也稱為散列表。哈希表是一個數組,其中每個元素被稱為"桶",用於存儲鍵值對。 哈希表的大小是可動態調整的,當存儲的鍵值對數量達 ...
  • 函數是一段代碼塊,只有在調用時才會運行。您可以將數據(稱為參數)傳遞給函數。 函數可以返回數據作為結果。 創建函數 在Python中,使用def關鍵字定義函數: 示例 def my_function(): print("Hello from a function") 調用函數 要調用函數,請使用函數 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...