Python 基礎知識:語(yǔ)法、數據類(lèi)型和控制結構
推薦:使用NSDT場(chǎng)景編輯器快速搭建3D應用場(chǎng)景
如果開(kāi)發(fā)和環(huán)境中已安裝 Python,請啟動(dòng) Python REPL 和代碼?;蛘?,如果您想跳過(guò)安裝并立即開(kāi)始編碼,我建議您前往Google Colab并一起編碼。
你好,Python!在我們用Python編寫(xiě)經(jīng)典的“Hello,world!”程序之前,這里有一些關(guān)于語(yǔ)言的信息。Python是一種解釋型語(yǔ)言。這是什么意思?
在任何編程語(yǔ)言中,您編寫(xiě)的所有源代碼都應翻譯成機器語(yǔ)言。雖然像C和C++這樣的編譯語(yǔ)言在程序運行之前需要整個(gè)機器代碼,但解釋器會(huì )解析源代碼并動(dòng)態(tài)解釋它。
創(chuàng )建一個(gè) Python 腳本,鍵入以下代碼并運行它:
print("Hello, World!")
為了打印出Hello, World!,我們使用了“print()”函數,這是Python中眾多內置函數之一。
在這個(gè)超級簡(jiǎn)單的示例中,請注意“Hello, World!”是一個(gè)序列 - 一串字符。Python 字符串由一對單引號或雙引號分隔。因此,要打印出任何消息字符串,您可以使用“print(”<message_string>“)”。
讀取用戶(hù)輸入現在讓我們更進(jìn)一步,使用 'input()' 函數讀取用戶(hù)的一些輸入。應始終提示用戶(hù)讓他們知道應輸入的內容。
這是一個(gè)簡(jiǎn)單的程序,它將用戶(hù)名作為輸入并問(wèn)候他們。
注釋通過(guò)向用戶(hù)提供其他上下文來(lái)幫助提高代碼的可讀性。Python 中的單行注釋以 # 開(kāi)頭。
請注意,下面代碼片段中的字符串前面有一個(gè)“f”。此類(lèi)字符串稱(chēng)為格式化字符串或 f 字符串。若要替換 f 字符串中變量的值,請在一對大括號內指定變量的名稱(chēng),如下所示:
# Get user input user_name = input("Please enter your name: ") # Greet the user print(f"Hello, {user_name}! Nice to meet you!")
運行程序時(shí),系統將首先提示您輸入,然后打印出問(wèn)候消息:
Please enter your name: Bala Hello, Bala! Nice to meet you!
讓我們繼續學(xué)習 Python 中的變量和數據類(lèi)型。
Python 中的變量和數據類(lèi)型在任何編程語(yǔ)言中,變量都像存儲信息的容器。在我們到目前為止編寫(xiě)的代碼中,我們已經(jīng)創(chuàng )建了一個(gè)變量 'user_name'。當用戶(hù)輸入其名稱(chēng)(字符串)時(shí),它將存儲在“user_name”變量中。
Python 中的基本數據類(lèi)型讓我們來(lái)看看 Python 中的基本數據類(lèi)型:“int”、“float”、“str”和“bool”,使用相互構建的簡(jiǎn)單示例:
整數('int'):整數是沒(méi)有小數點(diǎn)的整數。您可以創(chuàng )建整數并將它們分配給變量,如下所示:
age = 25 discount= 10
這些是將值賦給變量的賦值語(yǔ)句。在 C 等語(yǔ)言中,聲明變量時(shí)必須指定數據類(lèi)型,但 Python 是一種動(dòng)態(tài)類(lèi)型語(yǔ)言。它從值推斷數據類(lèi)型。因此,您可以重新分配一個(gè)變量來(lái)保存完全不同的數據類(lèi)型的值:
number = 1 number = 'one'
您可以使用“type”函數檢查Python中任何變量的數據類(lèi)型:
number = 1 print(type(number))
“數字”是一個(gè)整數:
Output >>> <class 'int'>
我們現在為“數字”分配一個(gè)字符串值:
number = 'one' print(type(number))
Output >>> <class 'str'>
浮點(diǎn)數(“float”):浮點(diǎn)數表示帶有小數點(diǎn)的實(shí)數。您可以創(chuàng )建“float”數據類(lèi)型的變量,如下所示:
height = 5.8 pi = 3.14159
您可以對數值數據類(lèi)型執行各種運算(加法、減法、下限除法、冪等)。以下是一些示例:
# Define numeric variables x = 10 y = 5 # Addition add_result = x + y print("Addition:", add_result) # Output: 15 # Subtraction sub_result = x - y print("Subtraction:", sub_result) # Output: 5 # Multiplication mul_result = x * y print("Multiplication:", mul_result) # Output: 50 # Division (floating-point result) div_result = x / y print("Division:", div_result) # Output: 2.0 # Integer Division (floor division) int_div_result = x // y print("Integer Division:", int_div_result) # Output: 2 # Modulo (remainder of division) mod_result = x % y print("Modulo:", mod_result) # Output: 0 # Exponentiation exp_result = x ** y print("Exponentiation:", exp_result) # Output: 100000
字符串('str'):字符串是字符序列,括在單引號或雙引號中。
name = "Alice" quote = 'Hello, world!'
布爾值(“bool”):布爾值表示“真”或“假”,表示條件的真值。
is_student = True has_license = False
Python 在處理不同數據類(lèi)型方面的靈活性使您可以有效地存儲、執行各種操作和操作數據。
下面是一個(gè)示例,將我們迄今為止學(xué)到的所有數據類(lèi)型放在一起:
# Using different data types together age = 30 score = 89.5 name = "Bob" is_student = True # Checking if score is above passing threshold passing_threshold = 60.0 is_passing = score >= passing_threshold print(f"{name=}") print(f"{age=}") print(f"{is_student=}") print(f"{score=}") print(f"{is_passing=}")
這是輸出:
Output >>> name='Bob' age=30 is_student=True score=89.5 is_passing=True超越基本數據類(lèi)型
假設您正在管理課堂上有關(guān)學(xué)生的信息。創(chuàng )建一個(gè)集合(存儲所有學(xué)生的信息)會(huì )比為每個(gè)學(xué)生重復定義變量更有幫助。
列表列表是項的有序集合,括在一對方括號內。列表中的項都可以是相同或不同的數據類(lèi)型。列表是可變的,這意味著(zhù)您可以在創(chuàng )建后更改其內容。
在這里,“student_names”包含學(xué)生的姓名:
# List student_names = ["Alice", "Bob", "Charlie", "David"]元組
元組是類(lèi)似于列表的有序集合,但它們是不可變的,這意味著(zhù)您在創(chuàng )建后無(wú)法更改其內容。
假設您希望“student_scores”成為包含學(xué)生考試成績(jì)的不可變集合。
# Tuple student_scores = (85, 92, 78, 88)字典
字典是鍵值對的集合。字典的鍵應該是唯一的,并且它們映射到相應的值。它們是可變的,允許您將信息與特定鍵相關(guān)聯(lián)。
在這里,“student_info”包含有關(guān)每個(gè)學(xué)生的信息(姓名和分數)作為鍵值對:
student_info = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}
但是等等,有一種更優(yōu)雅的方法可以在 Python 中創(chuàng )建字典。
我們即將學(xué)習一個(gè)新概念:字典理解。如果不是馬上就清楚了,不要擔心。您可以隨時(shí)了解更多信息并在以后處理它。
但是理解是非常直觀(guān)的理解。如果您希望“student_info”詞典將學(xué)生姓名作為鍵,并將他們相應的考試成績(jì)作為值,則可以像這樣創(chuàng )建字典:
# Using a dictionary comprehension to create the student_info dictionary student_info = {name: score for name, score in zip(student_names, student_scores)} print(student_info)
請注意我們如何使用 'zip()' 函數同時(shí)遍歷 'student_names' 列表和 'student_scores' 元組。
Output >>> {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}
在此示例中,字典理解直接將“student_names”列表中的每個(gè)學(xué)生姓名與“student_scores”元組中的相應考試分數配對,以創(chuàng )建“student_info”字典,其中姓名作為鍵,分數作為值。
現在您已經(jīng)熟悉了原始數據類(lèi)型和一些序列/可迭代對象,讓我們繼續討論的下一部分:控制結構。
Python 中的控制結構運行 Python 腳本時(shí),代碼執行按順序執行,順序與代碼在腳本中執行的順序相同。
有時(shí),您需要實(shí)現邏輯來(lái)根據某些條件控制執行流,或者循環(huán)通過(guò)可迭代對象來(lái)處理其中的項。
我們將了解 if-else 語(yǔ)句如何促進(jìn)分支和條件執行。我們還將學(xué)習如何使用循環(huán)迭代序列,循環(huán)控制語(yǔ)句中斷并繼續。
如果語(yǔ)句當僅當特定條件為真時(shí)才需要執行代碼塊時(shí),可以使用“if”語(yǔ)句。如果條件的計算結果為 false,則不執行代碼塊。
圖片來(lái)源:作者
請考慮以下示例:
score = 75 if score >= 60: print("Congratulations! You passed the exam.")
在此示例中,僅當“score”大于或等于 60 時(shí),才會(huì )執行“if”塊中的代碼。由于“分數”是 75,因此消息“恭喜!你通過(guò)了考試“,將打印出來(lái)。
Output >>> Congratulations! You passed the exam.If-else 條件語(yǔ)句
“if-else”語(yǔ)句允許您在條件為真時(shí)執行一個(gè)代碼塊,如果條件為假,則執行另一個(gè)代碼塊。
圖片來(lái)源:作者
讓我們以測試分數示例為基礎:
score = 45 if score >= 60: print("Congratulations! You passed the exam.") else: print("Sorry, you did not pass the exam.")
在這里,如果“分數”小于 60,則將執行“else”塊中的代碼:
Output >>> Sorry, you did not pass the exam.If-elif-else Ladder
當您有多個(gè)條件要檢查時(shí),將使用“if-elif-else”語(yǔ)句。它允許您測試多個(gè)條件,并為遇到的第一個(gè) true 條件執行相應的代碼塊。
如果 'if' 和所有 'elif' 語(yǔ)句中的條件計算結果為 false,則執行 'else' 塊。
圖片來(lái)源:作者
score = 82 if score >= 90: print("Excellent! You got an A.") elif score >= 80: print("Good job! You got a B.") elif score >= 70: print("Not bad! You got a C.") else: print("You need to improve. You got an F.")
在此示例中,程序根據多個(gè)條件檢查“分數”。將執行第一個(gè) true 條件塊中的代碼。由于“分數”是 82,我們得到:
Output >>> Good job! You got a B.嵌套 If 語(yǔ)句
當您需要檢查另一個(gè)條件中的多個(gè)條件時(shí),使用嵌套的“if”語(yǔ)句。
name = "Alice" score = 78 if name == "Alice": if score >= 80: print("Great job, Alice! You got an A.") else: print("Good effort, Alice! Keep it up.") else: print("You're doing well, but this message is for Alice.")
在此示例中,有一個(gè)嵌套的“if”語(yǔ)句。首先,程序檢查“名稱(chēng)”是否為“愛(ài)麗絲”。如果為 true,則檢查“分數”。由于“分數”為 78,因此執行內部的“else”塊,打印“努力好,愛(ài)麗絲!堅持下去。
Output >>> Good effort, Alice! Keep it up.
Python 提供了幾個(gè)循環(huán)構造來(lái)迭代集合或執行重復性任務(wù)。
對于循環(huán)在 Python 中,“for”循環(huán)提供了一個(gè)簡(jiǎn)潔的語(yǔ)法,讓我們迭代現有的可迭代對象。我們可以像這樣迭代“student_names”列表:
student_names = ["Alice", "Bob", "Charlie", "David"] for name in student_names: print("Student:", name)
上面的代碼輸出:
Output >>> Student: Alice Student: Bob Student: Charlie Student: David而循環(huán)
如果你想在條件為真的情況下執行一段代碼,你可以使用“while”循環(huán)。
讓我們使用相同的“student_names”列表:
# Using a while loop with an existing iterable student_names = ["Alice", "Bob", "Charlie", "David"] index = 0 while index < len(student_names): print("Student:", student_names[index]) index += 1
在此示例中,我們有一個(gè)包含學(xué)生姓名的列表“student_names”。我們使用“while”循環(huán)通過(guò)跟蹤“index”變量來(lái)迭代列表。
只要“索引”小于列表的長(cháng)度,循環(huán)就會(huì )繼續。在循環(huán)中,我們打印每個(gè)學(xué)生的姓名并遞增“索引”以移動(dòng)到下一個(gè)學(xué)生。請注意使用“l(fā)en()”函數來(lái)獲取列表的長(cháng)度。
這實(shí)現了與使用“for”循環(huán)遍歷列表相同的結果:
Output >>> Student: Alice Student: Bob Student: Charlie Student: David
讓我們使用一個(gè) 'while' 循環(huán),從列表中彈出元素,直到列表為空:
student_names = ["Alice", "Bob", "Charlie", "David"] while student_names: current_student = student_names.pop() print("Current Student:", current_student) print("All students have been processed.")
列表方法“pop”刪除并返回列表中存在的最后一個(gè)元素。
在此示例中,只要“student_names”列表中存在元素,“while”循環(huán)就會(huì )繼續。在循環(huán)中,“pop()”方法用于刪除并返回列表中的最后一個(gè)元素,并打印當前學(xué)生的姓名。
循環(huán)將繼續,直到所有學(xué)生都已處理完畢,并在循環(huán)外打印最后一條消息。
Output >>> Current Student: David Current Student: Charlie Current Student: Bob Current Student: Alice All students have been processed.
“for”循環(huán)通常更簡(jiǎn)潔,更易于閱讀,用于迭代現有的可迭代對象(如列表)。但是,當循環(huán)條件更復雜時(shí),“while”循環(huán)可以提供更多的控制。
循環(huán)控制語(yǔ)句“break”過(guò)早退出循環(huán),“continue”跳過(guò)當前迭代的其余部分并移動(dòng)到下一個(gè)迭代。
下面是一個(gè)示例:
student_names = ["Alice", "Bob", "Charlie", "David"] for name in student_names: if name == "Charlie": break print(name)
當“名字”是查理時(shí),控件脫離循環(huán),給我們輸出:
Output >>> Alice Bob模擬執行時(shí)循環(huán)行為
在Python中,沒(méi)有像其他一些編程語(yǔ)言那樣的內置“do-while”循環(huán)。但是,您可以使用帶有“break”語(yǔ)句的“while”循環(huán)來(lái)實(shí)現相同的行為。以下是在 Python 中模擬“do-while”循環(huán)的方法:
while True: user_input = input("Enter 'exit' to stop: ") if user_input == 'exit': break
在此示例中,循環(huán)將無(wú)限期地繼續運行,直到用戶(hù)進(jìn)入“exit”。循環(huán)至少運行一次,因為條件最初設置為“True”,然后在循環(huán)內檢查用戶(hù)的輸入。如果用戶(hù)輸入“exit”,則執行“break”語(yǔ)句,退出循環(huán)。
下面是一個(gè)示例輸出:
Output >>> Enter 'exit' to stop: hi Enter 'exit' to stop: hello Enter 'exit' to stop: bye Enter 'exit' to stop: try harder! Enter 'exit' to stop: exit
請注意,此方法類(lèi)似于其他語(yǔ)言中的“do-while”循環(huán),其中循環(huán)體保證在檢查條件之前至少執行一次。
總結和后續步驟我希望您能夠毫無(wú)困難地編寫(xiě)本教程的代碼?,F在您已經(jīng)了解了 Python 的基礎知識,是時(shí)候開(kāi)始編寫(xiě)一些超級簡(jiǎn)單的項目了,應用您學(xué)到的所有概念。
原文鏈接:Python 基礎知識:語(yǔ)法、數據類(lèi)型和控制結構 (mvrlink.com)
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。