1.Hello,Python
本文為Kaggle Learn的Python課程的中文翻譯,原文鏈接為:https://www.kaggle.com/colinmorris/hello-python
歡迎來到Kaggle Learn的Python課程。本課程將介紹在開始使用Python進(jìn)行數(shù)據(jù)科學(xué)之前需要的基本Python技能。這些課程針對(duì)那些具有一些編程經(jīng)驗(yàn)的人,希望將Python添加到他們的項(xiàng)目中或提高他們的Python技能。?(如果你是第一次編程,你可能會(huì)發(fā)現(xiàn)這門課程節(jié)奏太快。你可以先看看這個(gè):these "Python for Non-Programmers" learning resources
第一課將簡要介紹Python語法,變量賦值和算術(shù)運(yùn)算符。 如果之前有Python經(jīng)驗(yàn),您可能希望直接跳到練習(xí)。練習(xí)鏈接如下:https://www.kaggle.com/account/login?ReturnUrl=%2fkernels%2ffork%2f1275163
這些課程借鑒和改編來自A Whirlwind Tour of Python的一些內(nèi)容。 感謝作者Jake VanderPlas在許可下發(fā)布它。 如果您對(duì)Python的更全面的理論基礎(chǔ)感興趣,我建議您查看WTOP。
Hello,Python!
Python是以英國喜劇團(tuán)體Monty Python的名字命名的,那么為什么不讓我們的第一個(gè)Python程序向他們著名Spam的短劇致敬呢?
只是為了好玩,嘗試閱讀下面的代碼并預(yù)測(cè)運(yùn)行時(shí)會(huì)發(fā)生什么。 (如果你不知道,那沒關(guān)系!)
[1]
spam_amount = 0 print(spam_amount)# Ordering Spam, egg, Spam, Spam, bacon and Spam (4 more servings of Spam) spam_amount = spam_amount + 4if spam_amount > 0:print("But I don't want ANY spam!")viking_song = "Spam " * spam_amount print(viking_song) 0 But I don't want ANY spam! Spam Spam Spam Spam這里有很多要介紹的東西! 這個(gè)愚蠢的程序演示了Python代碼的幾個(gè)重要方面:它的語法、以及它的工作原理(它的語義)。 讓我們從上到下運(yùn)行代碼。
[2]
spam_amount = 0變量賦值!我們創(chuàng)建一個(gè)變量名為spam_amount,使用Python的賦值運(yùn)算符“=”賦值為0。
注:如果您已經(jīng)使用其他語言編程(如Java或C ++),您可能會(huì)注意到Python不需要我們做的一些事情:
- ???????? 我們不需要在賦值之前聲明spam_amount
- ???????? 我們不需要告訴Python spam_amount屬于什么類型。 實(shí)際上,我們甚至可以繼續(xù)重新賦值spam_amount來引用不同類型的東西,比如字符串型或布爾型。
[3]
print(spam_amount) 0一個(gè)函數(shù)調(diào)用。 print是一個(gè)非常有用的內(nèi)置Python函數(shù),它顯示傳遞到屏幕上的值。 我們通過在函數(shù)名后面加上()來調(diào)用,并在其間輸入?yún)?shù)。
[4]
# Ordering Spam, egg, Spam, Spam, bacon and Spam (4 more servings of Spam) spam_amount = spam_amount + 4上面一行是一條注釋語句,在Python中,注釋是由#開頭。
接下來我們看一個(gè)重新賦值的例子。 重新賦值現(xiàn)有變量的值與創(chuàng)建變量的方式相同 - 它仍然使用“=”賦值運(yùn)算符。
在這種情況下,我們賦給spam_amount的值包含對(duì)其先前值的一些簡單算術(shù)。 當(dāng)遇到這一行時(shí),Python會(huì)計(jì)算右側(cè)表達(dá)式(0 + 4 = 4),然后將該值賦給左側(cè)的變量。
[5]
if spam_amount > 0:print("But I don't want ANY spam!") But I don't want ANY spam!我們會(huì)在后面再介紹條件語句,但是,即使你以前從未有過編程,你也可以猜到它的作用。 Python因其可讀性和語法的簡單性而備受推崇(有些人甚至將其稱為“可執(zhí)行偽代碼”)。
請(qǐng)注意我們?nèi)绾伪硎灸男┐a屬于if語句。 “But I don't want ANY spam!”僅當(dāng)spam_amount為正數(shù)時(shí)才打印。但是后面的代碼(比如print(viking_song))無論如何都會(huì)執(zhí)行。我們(和Python)如何知道這一點(diǎn)?
if行末尾的冒號(hào)(:)表示新的“代碼塊”即將出現(xiàn)。縮進(jìn)的后續(xù)行(以額外的4個(gè)空格開頭)是該代碼塊部分。您可能熟悉使用花括號(hào){}來標(biāo)記代碼塊的開頭和結(jié)尾。 Python對(duì)有意義的空白的使用通常對(duì)習(xí)慣于其他語言的程序員來說是令人驚訝的,但實(shí)際上它比不強(qiáng)制執(zhí)行代碼塊縮進(jìn)的語言更有一致性和可讀性。
處理viking_song的后續(xù)行沒有縮進(jìn)額外的4個(gè)空格,因此它們不是if語句代碼塊的一部分。稍后當(dāng)我們開始定義函數(shù)和使用循環(huán)時(shí),我們將看到更多縮進(jìn)代碼塊的示例。
這段代碼片段也是我們第一次看到Python中的字符串:
字符串可以用雙引號(hào)或單引號(hào)標(biāo)記。 (但是因?yàn)檫@個(gè)特定的字符串包含單引號(hào)字符,所以當(dāng)我們?cè)噲D用單引號(hào)括起來,會(huì)容易變得混淆,除非我們很小心。)
[6]
viking_song = "Spam " * spam_amount print(viking_song) Spam Spam Spam Spam星號(hào)*運(yùn)算符可用于兩個(gè)數(shù)字相乘(3 * 3的結(jié)果為9),但有趣的是,我們還可以將一個(gè)字符串乘以一個(gè)數(shù)字,以獲得多次重復(fù)的版本。 Python提供了許多像這樣節(jié)省時(shí)間的技巧,其中*和+運(yùn)算符具有不同的含義,具體取決于它們應(yīng)用于何種類型的東西。 (技術(shù)術(shù)語是運(yùn)算符重載)。
Python中的數(shù)字和算術(shù)
上面我們已經(jīng)看過一個(gè)包含數(shù)字變量的例子:
[7]
spam_amount = 0“Number”是一個(gè)很好的非正式名稱,但如果我們想要更具技術(shù)性,我們可以問Python怎樣去描述spam_amount的類型:
[8]
type(spam_amount) int它是短整型int,在Python中我們還經(jīng)常遇到另一種數(shù)字:
[9]
type(19.95) floatfloat是一個(gè)帶小數(shù)位的數(shù)字,對(duì)于表示權(quán)重或比例非常有用。
type()是我們見過的第二個(gè)內(nèi)置函數(shù)(在print()之后),它是另一個(gè)值得記住的函數(shù)。 能夠問Python“這是什么樣的東西?”非常有用。
?我們已經(jīng)看到+運(yùn)算符用于加法,而*運(yùn)算符用于乘法。 Python還為我們提供了計(jì)算器上其余基本按鈕的功能:
| 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 |
這里有一個(gè)有趣的觀察是,雖然你的計(jì)算器可能只有一個(gè)按鈕用于除法,但Python可以做兩種。 “True division /”基本上是你的計(jì)算器所做的:
[10]
print(5 / 2) print(6 / 2) 2.5 3.0得出的結(jié)果是浮點(diǎn)型。
//運(yùn)算符給我們一個(gè)向下舍入到下一個(gè)整數(shù)的結(jié)果。
[11]
print(5 // 2) print(6 // 2) 2 3你能想到這會(huì)有用嗎? 您可能很快就會(huì)在編程問題中看到一個(gè)例子。
Order of operations
我們?cè)谛W(xué)學(xué)到了算數(shù)運(yùn)算的順序。 有些人通過諸如PEMDAS之類的助記符來記住這些:?PEMDAS - Parentheses, Exponents, Multiplication/Division, Addition/Subtraction.
Python遵循類似規(guī)則。 他們大多非常直觀。
[12]
8 - 3 + 27 -3 + 4 * 25但有時(shí)默認(rèn)的運(yùn)算順序不是我們希望的:
[13]
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 ?括號(hào)是你的王牌。 您可以添加它們以強(qiáng)制Python以不同的順序評(píng)估子表達(dá)式(或者只是為了使代碼更易于閱讀)。
[14]
total_height_meters = (hat_height_cm + my_height_cm) / 100 print("Height in meters =", total_height_meters) Height in meters = 2.15Builtin functions for working with numbers
min 和max返回各自參數(shù)的最小和最大值...
[15]
print(min(1, 2, 3)) print(max(1, 2, 3))1 3abs返回絕對(duì)值:
[16]
print(abs(32)) print(abs(-32))32 32除了作為Python的兩個(gè)主要數(shù)字類型的名稱之外,int和float也可以作為將其參數(shù)轉(zhuǎn)換為相應(yīng)類型的函數(shù):
[17]
print(float(10)) print(int(3.33)) # They can even be called on strings! print(int('807') + 1)10.0 3 808Your turn!
轉(zhuǎn)到練習(xí)筆記本,以獲得一些使用語法,變量賦值和數(shù)字的實(shí)踐練習(xí)。
?
?
總結(jié)
以上是生活随笔為你收集整理的1.Hello,Python的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13.Data Leakage
- 下一篇: websocket python爬虫_p