博客專欄

EEPW首頁 > 博客 > Python 基礎(chǔ)知識:語法、數(shù)據(jù)類型和控制結(jié)構(gòu)

Python 基礎(chǔ)知識:語法、數(shù)據(jù)類型和控制結(jié)構(gòu)

發(fā)布人:ygtu 時間:2023-09-11 來源:工程師 發(fā)布文章
推薦:使用NSDT場景編輯器快速搭建3D應(yīng)用場景

如果開發(fā)和環(huán)境中已安裝 Python,請啟動 Python REPL 和代碼。或者,如果您想跳過安裝并立即開始編碼,我建議您前往Google Colab并一起編碼。

你好,Python!

在我們用Python編寫經(jīng)典的“Hello,world!”程序之前,這里有一些關(guān)于語言的信息。Python是一種解釋型語言。這是什么意思?

在任何編程語言中,您編寫的所有源代碼都應(yīng)翻譯成機器語言。雖然像C和C++這樣的編譯語言在程序運行之前需要整個機器代碼,但解釋器會解析源代碼并動態(tài)解釋它。

創(chuàng)建一個 Python 腳本,鍵入以下代碼并運行它:

print("Hello, World!")

為了打印出Hello, World!,我們使用了“print()”函數(shù),這是Python中眾多內(nèi)置函數(shù)之一。

在這個超級簡單的示例中,請注意“Hello, World!”是一個序列 - 一串字符。Python 字符串由一對單引號或雙引號分隔。因此,要打印出任何消息字符串,您可以使用“print(”<message_string>“)”。

讀取用戶輸入

現(xiàn)在讓我們更進一步,使用 'input()' 函數(shù)讀取用戶的一些輸入。應(yīng)始終提示用戶讓他們知道應(yīng)輸入的內(nèi)容

這是一個簡單的程序,它將用戶名作為輸入并問候他們。

注釋通過向用戶提供其他上下文來幫助提高代碼的可讀性。Python 中的單行注釋以 # 開頭。

請注意,下面代碼片段中的字符串前面有一個“f”。此類字符串稱為格式化字符串或 f 字符串。若要替換 f 字符串中變量的值,請在一對大括號內(nèi)指定變量的名稱,如下所示:

# Get user input
user_name = input("Please enter your name: ")

# Greet the user
print(f"Hello, {user_name}! Nice to meet you!")

運行程序時,系統(tǒng)將首先提示您輸入,然后打印出問候消息:

Please enter your name: Bala
Hello, Bala! Nice to meet you!

讓我們繼續(xù)學(xué)習(xí) Python 中的變量和數(shù)據(jù)類型。

Python 中的變量和數(shù)據(jù)類型

在任何編程語言中,變量都像存儲信息的容器。在我們到目前為止編寫的代碼中,我們已經(jīng)創(chuàng)建了一個變量 'user_name'。當(dāng)用戶輸入其名稱(字符串)時,它將存儲在“user_name”變量中。

Python 中的基本數(shù)據(jù)類型

讓我們來看看 Python 中的基本數(shù)據(jù)類型:“int”、“float”、“str”和“bool”,使用相互構(gòu)建的簡單示例:

整數(shù)('int'):整數(shù)是沒有小數(shù)點的整數(shù)。您可以創(chuàng)建整數(shù)并將它們分配給變量,如下所示:

age = 25
discount= 10

這些是將值賦給變量的賦值語句。在 C 等語言中,聲明變量時必須指定數(shù)據(jù)類型,但 Python 是一種動態(tài)類型語言。它從值推斷數(shù)據(jù)類型。因此,您可以重新分配一個變量來保存完全不同的數(shù)據(jù)類型的值:

number = 1
number = 'one'

您可以使用“type”函數(shù)檢查Python中任何變量的數(shù)據(jù)類型:

number = 1
print(type(number))

“數(shù)字”是一個整數(shù):

Output >>> <class 'int'>

我們現(xiàn)在為“數(shù)字”分配一個字符串值:

number = 'one'
print(type(number))
Output >>> <class 'str'>

浮點數(shù)(“float”):浮點數(shù)表示帶有小數(shù)點的實數(shù)。您可以創(chuàng)建“float”數(shù)據(jù)類型的變量,如下所示:

height = 5.8
pi = 3.14159

您可以對數(shù)值數(shù)據(jù)類型執(zhí)行各種運算(加法、減法、下限除法、冪等)。以下是一些示例:

# 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 在處理不同數(shù)據(jù)類型方面的靈活性使您可以有效地存儲、執(zhí)行各種操作和操作數(shù)據(jù)。

下面是一個示例,將我們迄今為止學(xué)到的所有數(shù)據(jù)類型放在一起:

# 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
超越基本數(shù)據(jù)類型

假設(shè)您正在管理課堂上有關(guān)學(xué)生的信息。創(chuàng)建一個集合(存儲所有學(xué)生的信息)會比為每個學(xué)生重復(fù)定義變量更有幫助。

列表

列表是項的有序集合,括在一對方括號內(nèi)。列表中的項都可以是相同或不同的數(shù)據(jù)類型。列表是可變的,這意味著您可以在創(chuàng)建后更改其內(nèi)容。

在這里,“student_names”包含學(xué)生的姓名:

# List
student_names = ["Alice", "Bob", "Charlie", "David"]
元組

元組是類似于列表的有序集合,但它們是不可變的,這意味著您在創(chuàng)建后無法更改其內(nèi)容。

假設(shè)您希望“student_scores”成為包含學(xué)生考試成績的不可變集合。

# Tuple
student_scores = (85, 92, 78, 88)
字典

字典是鍵值對的集合。字典的鍵應(yīng)該是唯一的,并且它們映射到相應(yīng)的值。它們是可變的,允許您將信息與特定鍵相關(guān)聯(lián)。

在這里,“student_info”包含有關(guān)每個學(xué)生的信息(姓名和分?jǐn)?shù))作為鍵值對:

student_info = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

但是等等,有一種更優(yōu)雅的方法可以在 Python 中創(chuàng)建字典。

我們即將學(xué)習(xí)一個新概念:字典理解。如果不是馬上就清楚了,不要擔(dān)心。您可以隨時了解更多信息并在以后處理它。

但是理解是非常直觀的理解。如果您希望“student_info”詞典將學(xué)生姓名作為鍵,并將他們相應(yīng)的考試成績作為值,則可以像這樣創(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)

請注意我們?nèi)绾问褂?'zip()' 函數(shù)同時遍歷 'student_names' 列表和 'student_scores' 元組。

Output >>>

{'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

在此示例中,字典理解直接將“student_names”列表中的每個學(xué)生姓名與“student_scores”元組中的相應(yīng)考試分?jǐn)?shù)配對,以創(chuàng)建“student_info”字典,其中姓名作為鍵,分?jǐn)?shù)作為值。

現(xiàn)在您已經(jīng)熟悉了原始數(shù)據(jù)類型和一些序列/可迭代對象,讓我們繼續(xù)討論的下一部分:控制結(jié)構(gòu)。

Python 中的控制結(jié)構(gòu)

運行 Python 腳本時,代碼執(zhí)行按順序執(zhí)行,順序與代碼在腳本中執(zhí)行的順序相同。

有時,您需要實現(xiàn)邏輯來根據(jù)某些條件控制執(zhí)行流,或者循環(huán)通過可迭代對象來處理其中的項。

我們將了解 if-else 語句如何促進分支和條件執(zhí)行。我們還將學(xué)習(xí)如何使用循環(huán)迭代序列,循環(huán)控制語句中斷并繼續(xù)。

如果語句

當(dāng)僅當(dāng)特定條件為真時才需要執(zhí)行代碼塊時,可以使用“if”語句。如果條件的計算結(jié)果為 false,則不執(zhí)行代碼塊。

Python 基礎(chǔ)知識:語法、數(shù)據(jù)類型和控制結(jié)構(gòu)


圖片來源:作者

請考慮以下示例:

score = 75

if score >= 60:
    print("Congratulations! You passed the exam.")

在此示例中,僅當(dāng)“score”大于或等于 60 時,才會執(zhí)行“if”塊中的代碼。由于“分?jǐn)?shù)”是 75,因此消息“恭喜!你通過了考試“,將打印出來。

Output >>> Congratulations! You passed the exam.
If-else 條件語句

“if-else”語句允許您在條件為真時執(zhí)行一個代碼塊,如果條件為假,則執(zhí)行另一個代碼塊。

Python 基礎(chǔ)知識:語法、數(shù)據(jù)類型和控制結(jié)構(gòu)


圖片來源:作者

讓我們以測試分?jǐn)?shù)示例為基礎(chǔ):

score = 45

if score >= 60:
    print("Congratulations! You passed the exam.")
else:
    print("Sorry, you did not pass the exam.")

在這里,如果“分?jǐn)?shù)”小于 60,則將執(zhí)行“else”塊中的代碼:

Output >>> Sorry, you did not pass the exam.
If-elif-else Ladder

當(dāng)您有多個條件要檢查時,將使用“if-elif-else”語句。它允許您測試多個條件,并為遇到的第一個 true 條件執(zhí)行相應(yīng)的代碼塊。

如果 'if' 和所有 'elif' 語句中的條件計算結(jié)果為 false,則執(zhí)行 'else' 塊。

Python 基礎(chǔ)知識:語法、數(shù)據(jù)類型和控制結(jié)構(gòu)


圖片來源:作者

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.")

在此示例中,程序根據(jù)多個條件檢查“分?jǐn)?shù)”。將執(zhí)行第一個 true 條件塊中的代碼。由于“分?jǐn)?shù)”是 82,我們得到:

Output >>> Good job! You got a B.
嵌套 If 語句

當(dāng)您需要檢查另一個條件中的多個條件時,使用嵌套的“if”語句。

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.")

在此示例中,有一個嵌套的“if”語句。首先,程序檢查“名稱”是否為“愛麗絲”。如果為 true,則檢查“分?jǐn)?shù)”。由于“分?jǐn)?shù)”為 78,因此執(zhí)行內(nèi)部的“else”塊,打印“努力好,愛麗絲!堅持下去。

Output >>> Good effort, Alice! Keep it up.

Python 提供了幾個循環(huán)構(gòu)造來迭代集合或執(zhí)行重復(fù)性任務(wù)。

對于循環(huán)

在 Python 中,“for”循環(huán)提供了一個簡潔的語法,讓我們迭代現(xiàn)有的可迭代對象。我們可以像這樣迭代“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)

如果你想在條件為真的情況下執(zhí)行一段代碼,你可以使用“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

在此示例中,我們有一個包含學(xué)生姓名的列表“student_names”。我們使用“while”循環(huán)通過跟蹤“index”變量來迭代列表。

只要“索引”小于列表的長度,循環(huán)就會繼續(xù)。在循環(huán)中,我們打印每個學(xué)生的姓名并遞增“索引”以移動到下一個學(xué)生。請注意使用“l(fā)en()”函數(shù)來獲取列表的長度。

這實現(xiàn)了與使用“for”循環(huán)遍歷列表相同的結(jié)果:

Output >>>

Student: Alice
Student: Bob
Student: Charlie
Student: David

讓我們使用一個 '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”刪除并返回列表中存在的最后一個元素。

在此示例中,只要“student_names”列表中存在元素,“while”循環(huán)就會繼續(xù)。在循環(huán)中,“pop()”方法用于刪除并返回列表中的最后一個元素,并打印當(dāng)前學(xué)生的姓名。

循環(huán)將繼續(xù),直到所有學(xué)生都已處理完畢,并在循環(huán)外打印最后一條消息。

Output >>>

Current Student: David
Current Student: Charlie
Current Student: Bob
Current Student: Alice
All students have been processed.

“for”循環(huán)通常更簡潔,更易于閱讀,用于迭代現(xiàn)有的可迭代對象(如列表)。但是,當(dāng)循環(huán)條件更復(fù)雜時,“while”循環(huán)可以提供更多的控制。

循環(huán)控制語句

“break”過早退出循環(huán),“continue”跳過當(dāng)前迭代的其余部分并移動到下一個迭代。

下面是一個示例:

student_names = ["Alice", "Bob", "Charlie", "David"]

for name in student_names:
    if name == "Charlie":
        break
    print(name)

當(dāng)“名字”是查理時,控件脫離循環(huán),給我們輸出:

Output >>>
Alice
Bob
模擬執(zhí)行時循環(huán)行為

在Python中,沒有像其他一些編程語言那樣的內(nèi)置“do-while”循環(huán)。但是,您可以使用帶有“break”語句的“while”循環(huán)來實現(xiàn)相同的行為。以下是在 Python 中模擬“do-while”循環(huán)的方法:

while True:
    user_input = input("Enter 'exit' to stop: ")
    if user_input == 'exit':
        break

在此示例中,循環(huán)將無限期地繼續(xù)運行,直到用戶進入“exit”。循環(huán)至少運行一次,因為條件最初設(shè)置為“True”,然后在循環(huán)內(nèi)檢查用戶的輸入。如果用戶輸入“exit”,則執(zhí)行“break”語句,退出循環(huán)。

下面是一個示例輸出:

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

請注意,此方法類似于其他語言中的“do-while”循環(huán),其中循環(huán)體保證在檢查條件之前至少執(zhí)行一次。

總結(jié)和后續(xù)步驟

我希望您能夠毫無困難地編寫本教程的代碼。現(xiàn)在您已經(jīng)了解了 Python 的基礎(chǔ)知識,是時候開始編寫一些超級簡單的項目了,應(yīng)用您學(xué)到的所有概念。

原文鏈接:Python 基礎(chǔ)知識:語法、數(shù)據(jù)類型和控制結(jié)構(gòu) (mvrlink.com)


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: 數(shù)據(jù)分析 python

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉