讀書計劃- 數(shù)據(jù)分析實(shí)戰(zhàn)45講?|?03丨Python基礎(chǔ)語法:開始你的Python之旅 20181225

一,Python 語言特點(diǎn)

Python 語言最大的優(yōu)點(diǎn)是簡潔,它雖然是 C 語言寫的,但是摒棄了 C 語言的指針,這就讓代碼非常簡潔明了。

當(dāng)然除了 Python 自身的特點(diǎn),Python 還有強(qiáng)大的開發(fā)者工具。在數(shù)據(jù)科學(xué)領(lǐng)域,Python 有許多非常著名的工具庫:比如科學(xué)計算工具 NumPy 和 Pandas 庫,深度學(xué)習(xí)工具 Keras 和 TensorFlow,以及機(jī)器學(xué)習(xí)工具 Scikit-learn,使用率都非常高。

二, Python 基礎(chǔ)語法

環(huán)境配置好后,我們就來快速學(xué)習(xí)幾個 Python 必會的基礎(chǔ)語法。我假設(shè)你是 Python 零基礎(chǔ),但已經(jīng)有一些其他編程語言的基礎(chǔ)。下面我們一一來看。

輸入與輸出

1

name = raw_input("What's your name?")

2

sum = 100+100

3

print ('hello,%s' %name)

4

print ('sum = %d' %sum)

復(fù)制代碼

raw_input 是 Python2.7 的輸入函數(shù),在 python3.x 里可以直接使用 input,賦值給變量 name,print 是輸出函數(shù),%name 代表變量的數(shù)值,因?yàn)槭亲址愋?,所以在前面用?%s 作為代替。

這是運(yùn)行結(jié)果:

1

What's your name?cy

2

hello,cy

3

sum = 200

復(fù)制代碼

判斷語句:if … else …

1

if score>= 90:

2

? ? ? print 'Excellent'

3

else:

4

? ? ? if score < 60:

5

? ? ? ? ? print 'Fail'

6

? ? ? else:

7

? ? ? ? ? print 'Good Job'

復(fù)制代碼

if … else … 是經(jīng)典的判斷語句,需要注意的是在 if expression 后面有個冒號,同樣在 else 后面也存在冒號。

另外需要注意的是,Python 不像其他語言一樣使用{}或者 begin…end 來分隔代碼塊,而是采用代碼縮進(jìn)和冒號的方式來區(qū)分代碼之間的層次關(guān)系。所以代碼縮進(jìn)在 Python 中是一種語法,如果代碼縮進(jìn)不統(tǒng)一,比如有的是 tab 有的是空格,會怎樣呢?會產(chǎn)生錯誤或者異常。相同層次的代碼一定要采用相同層次的縮進(jìn)。

循環(huán)語句:for … in

1

sum = 0

2

for number in range(11):

3

? ? sum = sum + number

4

print sum

復(fù)制代碼

運(yùn)行結(jié)果:

1

55

復(fù)制代碼

for 循環(huán)是一種迭代循環(huán)機(jī)制,迭代即重復(fù)相同的邏輯操作。如果規(guī)定循環(huán)的次數(shù),我們可以使用 range 函數(shù),它在 for 循環(huán)中比較常用。range(11) 代表從 0 到 10,不包括 11,也相當(dāng)于 range(0,11),range 里面還可以增加步長,比如 range(1,11,2) 代表的是 [1,3,5,7,9]。

循環(huán)語句: while

1

sum = 0

2

number = 1

3

while number < 11:

4

? ? ? sum = sum + number

5

? ? ? number = number + 1

6

print sum

復(fù)制代碼

運(yùn)行結(jié)果:

1

55

復(fù)制代碼

1 到 10 的求和也可以用 while 循環(huán)來寫,這里 while 控制了循環(huán)的次數(shù)。while 循環(huán)是條件循環(huán),在 while 循環(huán)中對于變量的計算方式更加靈活。因此 while 循環(huán)適合循環(huán)次數(shù)不確定的循環(huán),而 for 循環(huán)的條件相對確定,適合固定次數(shù)的循環(huán)。

數(shù)據(jù)類型:列表、元組、字典、集合

列表:[]

1

lists = ['a','b','c']

2

lists.append('d')

3

print lists

4

print len(lists)

5

lists.insert(0,'mm')

6

lists.pop()

7

print lists

復(fù)制代碼

運(yùn)行結(jié)果:

1

['a', 'b', 'c', 'd']

2

4

3

['mm', 'a', 'b', 'c']

復(fù)制代碼

列表是 Python 中常用的數(shù)據(jù)結(jié)構(gòu),相當(dāng)于數(shù)組,具有增刪改查的功能,我們可以使用 len() 函數(shù)獲得 lists 中元素的個數(shù);使用 append() 在尾部添加元素,使用 insert() 在列表中插入元素,使用 pop() 刪除尾部的元素。

元組 (tuple)

1

tuples = ('tupleA','tupleB')

2

print tuples[0]

復(fù)制代碼

運(yùn)行結(jié)果:

1

tupleA

復(fù)制代碼

元組 tuple 和 list 非常類似,但是 tuple 一旦初始化就不能修改。因?yàn)椴荒苄薷乃詻]有 append(), insert() 這樣的方法,可以像訪問數(shù)組一樣進(jìn)行訪問,比如 tuples[0],但不能賦值。

字典 {dictionary}

1

# -*- coding: utf-8 -*

2

# 定義一個 dictionary

3

score = {'guanyu':95,'zhangfei':96}

4

# 添加一個元素

5

score['zhaoyun'] = 98

6

print score

7

# 刪除一個元素

8

score.pop('zhangfei')

9

# 查看 key 是否存在

10

print 'guanyu' in score

11

# 查看一個 key 對應(yīng)的值

12

print score.get('guanyu')

13

print score.get('yase',99)

復(fù)制代碼

運(yùn)行結(jié)果:

1

{'guanyu': 95, 'zhaoyun': 98, 'zhangfei': 96}

2

True

3

95

4

99

復(fù)制代碼

字典其實(shí)就是{key, value},多次對同一個 key 放入 value,后面的值會把前面的值沖掉,同樣字典也有增刪改查。增加字典的元素相當(dāng)于賦值,比如 score[‘zhaoyun’] = 98,刪除一個元素使用 pop,查詢使用 get,如果查詢的值不存在,我們也可以給一個默認(rèn)值,比如 score.get(‘yase’,99)。

集合:set

1

s = set(['a', 'b', 'c'])

2

s.add('d')

3

s.remove('b')

4

print s

5

print 'c' in s

復(fù)制代碼

運(yùn)行結(jié)果:

1

set(['a', 'c', 'd'])

2

True

復(fù)制代碼

集合 set 和字典 dictory 類似,不過它只是 key 的集合,不存儲 value。同樣可以增刪查,增加使用 add,刪除使用 remove,查詢看某個元素是否在這個集合里,使用 in。

注釋:#

注釋在 python 中使用 #,如果注釋中有中文,一般會在代碼前添加 # -- coding: utf-8 -。

如果是多行注釋,使用三個單引號,或者三個雙引號,比如:

1

# -*- coding: utf-8 -*

2

'''

3

這是多行注釋,用三個單引號

4

這是多行注釋,用三個單引號

5

這是多行注釋,用三個單引號

6

'''

復(fù)制代碼

引用模塊 / 包:import

1

# 導(dǎo)入一個模塊

2

import model_name

3

# 導(dǎo)入多個模塊

4

import module_name1,module_name2

5

# 導(dǎo)入包中指定模塊

6

from package_name import moudule_name

7

# 導(dǎo)入包中所有模塊

8

from package_name import *

復(fù)制代碼

Python 語言中 import 的使用很簡單,直接使用 import module_name 語句導(dǎo)入即可。這里 import 的本質(zhì)是什么呢?import 的本質(zhì)是路徑搜索。import 引用可以是模塊 module,或者包 package。

針對 module,實(shí)際上是引用一個.py 文件。而針對 package,可以采用 from … import …的方式,這里實(shí)際上是從一個目錄中引用模塊,這時目錄結(jié)構(gòu)中必須帶有一個 __init__.py 文件。

函數(shù):def

1

def addone(score):

2

? return score + 1

3

print addone(99)

復(fù)制代碼

運(yùn)行結(jié)果:

1

100

復(fù)制代碼

函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號,在圓括號里是傳進(jìn)來的參數(shù),然后通過 return 進(jìn)行函數(shù)結(jié)果得反饋。

A+B Problem

上面的講的這些基礎(chǔ)語法,我們可以用 sumlime text 編輯器運(yùn)行 Python 代碼。另外,告訴你一個相當(dāng)高效的方法,你可以充分利用一個刷題進(jìn)階的網(wǎng)址: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1 ,這是浙江大學(xué) ACM 的 OnlineJudge。

什么是 OnlineJudge 呢?它實(shí)際上是一個在線答題系統(tǒng),做題后你可以在后臺提交代碼,然后 OnlineJudge 會告訴你運(yùn)行的結(jié)果,如果結(jié)果正確就反饋:Accepted,如果錯誤就反饋:Wrong Answer。

不要小看這樣的題目,也會存在編譯錯誤、內(nèi)存溢出、運(yùn)行超時等等情況。所以題目對編碼的質(zhì)量要求還是挺高的。下面我就給你講講這道 A+B 的題目,你可以自己做練習(xí),然后在后臺提交答案。

題目:A+B

輸入格式:有一系列的整數(shù)對 A 和 B,以空格分開。

輸出格式:對于每個整數(shù)對 A 和 B,需要給出 A 和 B 的和。

輸入輸出樣例:

1

INPUT

2

1 5

3

OUTPUT

4

6

復(fù)制代碼

針對這道題,我給出了下面的答案:

1

while True:

2

? ? ? try:

3

? ? ? ? ? ? ? line = raw_input()

4

? ? ? ? ? ? ? a = line.split()

5

? ? ? ? ? ? ? print int(a[0]) + int(a[1])

6

? ? ? except:

7

? ? ? ? ? ? ? break

復(fù)制代碼

當(dāng)然每個人可以有不同的解法,官方也有 Python 的答案,這里給你介紹這個 OnlineJudge 是因?yàn)椋?/p>

1. 可以在線得到反饋,提交代碼后,系統(tǒng)會告訴你對錯。而且你能看到每道題的正確率,和大家提交后反饋的狀態(tài);

2. 有社區(qū)論壇可以進(jìn)行交流學(xué)習(xí);

3. 對算法和數(shù)據(jù)結(jié)構(gòu)的提升大有好處,當(dāng)然對數(shù)據(jù)挖掘算法的靈活運(yùn)用和整個編程基礎(chǔ)的提升都會有很大的幫助。

三,總結(jié)

在日常工作中,我們解決的問題都不屬于高難度的問題,大部分人做的都是開發(fā)工作而非科研項(xiàng)目。所以我們要提升的主要是熟練度,而通往熟練度的唯一路徑就是練習(xí)、練習(xí)、再練習(xí)!

我在文章中多次強(qiáng)調(diào)練習(xí)的作用,這樣可以增加你對數(shù)據(jù)分析相關(guān)內(nèi)容的熟練度。所以我給你出了兩道練習(xí)題,你可以思考下如何來做,歡迎把答案放到評論下面,我也會和你一起在評論區(qū)進(jìn)行討論。

1. 如果我想在 Python 中引用 scikit-learn 庫該如何引用?

2. 求 1+3+5+7+…+99 的求和,用 Python 該如何寫?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容