1、你好,Python

AI算法蒋同学發表於2024-04-06

快速介紹 Python 語法、變數賦值和數字!

這門課程涵蓋了你在使用Python進行資料科學時所需的關鍵Python技能。該課程適合有一些先前編碼經驗的人,希望將Python新增到他們的技能庫中。(如果您是第一次編碼,建議您檢視我們的程式設計入門課程,該課程專為完全初學者設計,希望開始使用Python。)

我們將從Python語法、變數賦值和算術運算子的簡要概述開始。

目錄
  • 1.你好, Python!
    • 1.1數字和Python中的算術操作
      • 1.1.1運算順序
      • 1.1.2處理數字的內建函式

1.你好, Python!

Python的名字來源於英國喜劇團Monty Python,因此我們將把我們的第一個Python程式致敬給他們關於Spam的小品。

只是為了好玩,試著閱讀下面的程式碼,並預測在執行時它將執行什麼操作。(如果你一點都不知道,也沒關係!)

In [1]:

spam_amount = 0
print(spam_amount)

# Ordering Spam, egg, Spam, Spam, bacon and Spam (4 more servings of Spam)
spam_amount = spam_amount + 4

if spam_amount > 0:
    print("But I don't want ANY spam!")

viking_song = "Spam " * spam_amount
print(viking_song)

output

0
But I don't want ANY spam!
Spam Spam Spam Spam 

這裡有很多內容需要理解!這個簡單的程式展示了Python程式碼的許多重要方面以及它的工作原理。讓我們從上到下逐步審查程式碼。

In [2]:

spam_amount = 0

變數賦值: 在這裡,我們建立了一個名為 spam_amount 的變數,並使用 = 賦予它值為 0,= 被稱為賦值運算子。

  • 注意: 如果你之前在某些其他語言中程式設計過(比如Java或C++),你可能會注意到Python在這裡不需要我們做一些事情:

    • 我們不需要在賦值之前“宣告” spam_amount
    • 我們不需要告訴Python spam_amount 將引用的值的型別。實際上,我們甚至可以重新將 spam_amount 賦值為引用不同型別的東西,比如字串或布林值。

In [3]:

print(spam_amount)
0

函式呼叫: print 是一個Python函式,它在螢幕上顯示傳遞給它的值。我們透過在函式名後面加括號,並在括號中放入函式的輸入(或引數)來呼叫函式。

In [4]:

# Ordering Spam, egg, Spam, Spam, bacon and Spam (4 more servings of Spam)
spam_amount = spam_amount + 4

上面的第一行是一個註釋。在Python中,註釋以 # 符號開始。

接下來我們看到一個重新賦值的例子。重新賦值給現有變數的值看起來與建立變數一樣 - 仍然使用 = 賦值運算子。

在這種情況下,我們賦給 spam_amount 的值涉及到對其先前值進行一些簡單的算術運算。當遇到這行時,Python計算 = 右側的表示式(0 + 4 = 4),然後將該值賦給左側的變數。

In [5]:

if spam_amount > 0:
    print("But I don't want ANY spam!")

viking_song = "Spam Spam Spam"
print(viking_song)
But I don't want ANY spam!
Spam Spam Spam

我們在後面不會過多討論"條件語句",但即使你以前沒有程式設計經驗,你也可以猜到這是做什麼的。Python以其可讀性和簡潔性而受到讚賞。

請注意,我們指示哪些程式碼屬於 if。只有在 spam_amount 是正數時,才應該列印出 "But I don't want ANY spam!"。但是稍後的程式碼(比如 print(viking_song))應該無論如何都會執行。我們(以及Python)如何知道呢?

if 行的末尾的冒號(:)表示一個新的程式碼塊正在開始。縮排的後續行是該程式碼塊的一部分。

注意: 如果你之前有程式設計經驗,你可能知道其他一些語言使用 {花括號} 來標記程式碼塊的開始和結束。Python對有意義的空格的使用可能會讓習慣於其他語言的程式設計師感到驚訝,但實際上它可以產生比不強制縮排程式碼塊的語言更一致和可讀的程式碼。

稍後處理 viking_song 的行沒有額外縮排,因此它們不是 if 的程式碼塊的一部分。當我們定義函式和使用迴圈時,我們將看到更多縮排程式碼塊的示例。

這段程式碼片段還是我們在 Python 中第一次看到的字串

"But I don't want ANY spam!"

字串可以用雙引號或單引號括起來。(但是,由於此特定字串包含單引號字元,除非我們小心,否則用單引號括起來可能會讓 Python 感到困惑。)

In [6]:

viking_song = "Spam " * spam_amount
print(viking_song)
Spam Spam Spam Spam 

* 運算子可用於兩個數字的乘法(3 * 3 的值為 9),但我們還可以將一個字串乘以一個數字,以獲得重複了那麼多次的版本。Python 提供了許多類似的巧妙的小技巧,其中運算子如 *+ 根據它們應用於的物件型別而具有不同的含義。 (這個技術術語稱為運算子過載。)

1.1數字和Python中的算術操作

我們已經在上面看到了一個包含數字的變數:

In [7]:

spam_amount = 0

"Number"是一個很好的非正式名稱,但如果我們想更加技術化,我們可以詢問Python如何描述spam_amount的型別:

In [8]:

type(spam_amount)

Out[8]:

int

這是一個int - 表示整數。在Python中,我們常常遇到另一種數字:

In [9]:

type(19.95)

Out[9]:

float

float是帶有小數點的數字 - 用於表示重量或比例等非整數值非常有用。

type()是我們看到的第二個內建函式(在print()之後),也是另一個很好記住的函式。詢問Python“這是什麼型別的東西”非常有用。

對數字的自然操作之一是執行算術運算。我們已經看到了用於加法的+運算子和用於乘法的*運算子。對於計算器上的其他基本按鈕,Python也有相應的運算子:

Operator Name Description
a + b Addition Sum of a and b
a - b Subtraction Difference of a and b
a * b Multiplication Product of a and b
a / b True division Quotient of a and b
a // b Floor division Quotient of a and b, removing fractional parts
a % b Modulus Integer remainder after division of a by b
a ** b Exponentiation a raised to the power of b
-a Negation The negative of a

這裡的一個有趣觀察是,儘管您的計算器可能只有一個除法按鈕,但Python可以執行兩種型別的除法。“真除法”基本上就是您的計算器所做的:

In [10]:

print(5 / 2)
print(6 / 2)
2.5
3.0

它總是給我們一個float

// 運算子給我們一個向下取整到下一個整數的結果。

In [11]:

print(5 // 2)
print(6 // 2)
2
3

您能想到這在哪裡可能有用嗎?您很快將在編碼挑戰中看到一個例子。

1.1.1運算順序

我們在小學學到的算術有關操作的順序有一些慣例。有些人透過諸如 PEMDAS 的記憶口訣來記住這些規則 - Parentheses(括號), Exponents(指數,例如冪運算和平方根等), Multiplication(乘法)/Division(除法), Addition(加法)/Subtraction(減法)。

Python遵循類似的規則來決定首先執行哪些計算。它們大多數情況下都相當直觀。

In [12]:

8 - 3 + 2

Out[12]:

7

In [13]:

-3 + 4 * 2

Out[13]:

5

有時,預設的操作順序不是我們想要的:

In [14]:

hat_height_cm = 25
my_height_cm = 190
# How tall am I, in meters, when wearing my hat?
total_height_meters = hat_height_cm + my_height_cm / 100
print("Height in meters =", total_height_meters, "?")
Height in meters = 26.9 ?

括號在這裡很有用。您可以新增括號以強制 Python 以您想要的任何順序評估子表示式。

In [15]:

total_height_meters = (hat_height_cm + my_height_cm) / 100
print("Height in meters =", total_height_meters)
Height in meters = 2.15

1.1.2處理數字的內建函式

minmax分別返回它們的引數的最小值和最大值...

In [16]:

print(min(1, 2, 3))
print(max(1, 2, 3))
1
3

abs 返回引數的絕對值:

In [17]:

print(abs(32))
print(abs(-32))
32
32

除了作為 Python 的兩種主要數值型別的名稱之外,intfloat 也可以作為函式呼叫,將其引數轉換為相應的型別:

In [18]:

print(float(10))
print(int(3.33))
# They can even be called on strings!
print(int('807') + 1)
10.0
3
808

本文由部落格一文多發平臺 OpenWrite 釋出!