打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python

Python是一個強大、快速、簡單易讀的程式語言

轉換到Python之後就回不去C/C 了,尤其在入手Mac之後,不用安裝任何軟體,也不需要編譯
對於Python的依賴程度越來越重,越是喜愛就越想推廣Python給身旁的朋友。

What Can Python Do?

最近找尋了不少資料,許多線上教學都是按部就班,
對於已有程式基礎,想要快速入門Python還是比較麻煩
因此寫了這一篇,給「已經學過C/C ,Java等程式語言」快速轉換Python的文件

如果是任何程式語言都沒有學過,
建議可以從以下資源一步步學習Python,對於建立起程式設計的概念比較有幫助:


Let's Start!

[安裝]

  • Windows:官網下載2.7.x版本。在環境變數加上C:\Python27;C:\Python27\Scripts
  • Mac 內建2.7.5
  • Unix:內建3.x
  • Online:Koding

執行第一個程式Hello World

有兩種選擇:

  • 直接開啟直譯器上輸入一行行程式碼,Enter執行
    • Windows:開啟Python(command line)
    • Mac/Unix:Terminal輸入python-輸入print 'Hello World'
  • 跟以往一樣寫一個.py的檔案,執行python my_first_python.py
my_first_python.py
# encoding: utf-8print 'Hello World'

!!!注意中文的檔案要加上# encoding: utf-8

Windows

Mac/Unix

//2014-10-20補充
網路上看到一張圖片大約40行的code也可以很清楚的供有程式基礎的人快速了解Python 簡中對照版

之後的部分,會更詳細介紹Python好用的功能,將以.py的檔案形式展示程式碼。

[語法]

python不需要任何代表結尾的符號(ex;)
python不需要先指定變數的型態,之後也可以任意轉換型態
python可以透過=, =,-=直接賦值,也可同時給多個變數賦值
單行註解為#,多行註解則用'''開頭與結尾,多運用註解可以幫助你或其他人看懂你的程式碼。

# encoding: utf-8'''這是一個簡單的python程式介紹基本的語法'''x = 3x = 2x -= 1 print xx,y = 99.99,5 print x,y

Output:
4
99.99 5

[數據類型]

list是可以隨意更動大小的陣列,可透過append增加。
python的list提供很多好用函式:

  • len()可以算list長度
  • sum()可以計算list中所有數值的加總(但list中的元素都需為數值,不可與字串混合)
  • count則是可以計算list中某個元素出現次數
# encoding: utf-8my_list = []my_list.append(1) my_list.append(2) my_list2 = [55.55,'Hi',3,99,222,222]my_list2[0]=333.333print len(my_list),sum(my_list),my_list2.count(222)print my_list2[0],my_list2[-1],my_list2[1:3],my_list2[2:]

Output:
2 3 2
333.333 222 ['Hi', 3] [3, 99, 222, 222]

dictionary像是hash-table一樣有一個key對應一個變數

# encoding: utf-8passwd={'Mars':00000,'Mark':56680}passwd['Happy']=9999 passwd['Smile']=123456del passwd['Mars']passwd['Mark']=passwd['Mark'] 1print passwdprint passwd.keys()print passwd.get('Tony')

Output:
{'Happy': 9999, 'Smile': 123456, 'Mark': 56681}
['Happy', 'Smile', 'Mark']
None

set則是集合,可以進行聯集、交集、差集等運算

# encoding: utf-8admins = set()users = {'Smile', 'Tony','Happy','Sherry','Allen','Andy', 'Mars'}admins.add('ihc')admins.add('Mars')print admins & usersprint admins | usersprint admins ^ usersprint admins - users print users - admins

Output:
set(['Mars'])
set(['Allen', 'Andy', 'Smile', 'Mars', 'Tony', 'ihc', 'Happy', 'Sherry'])
set(['Andy', 'Allen', 'Tony', 'Smile', 'Happy', 'ihc', 'Sherry'])
set(['ihc'])
set(['Sherry', 'Andy', 'Allen', 'Tony', 'Smile', 'Happy'])

[字串]

字串可用雙引號'或用單引號'來進行標示

# encoding: utf-8s = 'Hello' s = 'World's1 = 'HelloWorld'.replace('ll','1')s2 = 'Hello'[0] 'i' print s,s1,s2,len(s)

Output:
HelloWorld He1oWorld Hi 10

其中python字串內建的分割函式string.split()很好用,可以將字串依指定的字元(字串)切割

s3 = 'This is a sentence.'s3_split=s3.split(' ')print s3_split

Output:
['This', 'is', 'a', 'sentence.']

而中文的處理,我們可以透過unicode的編解碼來處理

# encoding: utf-8s='台灣'u = s.decode('utf8')print '台',s[0],u[0] print u[0]==u'台'

Output:
台 ? 台 #沒有解碼過的s是顯示不出來每一個'中文字'的
True

[型別轉換、基本運算符]

要注意的是,由於python不用特別宣告變數,要注意不能讓不同型別的變數同時運算
ex: x s會出錯,因為整數型態與字串型態,兩者是不能同時運算的

# encoding: utf-8x=2**3y=3/2s='3'print ord('a'),ord('c'),chr(ord('a') 2) print y,int(s)/2,float(s)/2,3%2print str(x y),str(x) str(y)

Output:
97 99 c
1 1 1.5 1
9 81

[Flow Control:判斷式、迴圈]

再來就進入到程式設計中很重要的部分:流程控制
也可以從這部分開始看到Python之所以容易閱讀的原因,
每個流程的結尾是用冒號:
屬於該流程底下的執行動作不需要任何括號,而是使用縮排
縮排可以使用Tab或四格Space,但不可混用,建議是把編輯器設定成Tab對應四格空白
縮排可以讓程式碼更容易閱讀,了解整個程式的架構&邏輯,也是寫程式重要的習慣之一。

在python的判斷式中,and,or,not是邏輯運算子。
python提供一個很好的函式range,範圍是左邊數字到右邊數字-1,在撰寫迴圈時可以更加快速。
另外in函式可以用來判斷某個型別中是否有某個元素,非常的方便!

# encoding: utf-8my_list=[]for i in range(0,10): '''//for(i=0;i<10;i )''' my_list.append(i 1)if my_list[0]==1 and len(my_list)<10: my_list[0] =1 print '1 state'elif (10 in my_list) or not(len(my_list)==10): print '2 state' print 'range(i,j) is i~j-1'else: print '3 state' print 'none of above'for i in my_list: '''//for(i=0;i<my_list.length();i )''' print i, '''//cout<<my_list[i]'''print

Output:
2 state
range(i,j) is i~j-1
1 2 3 4 5 6 7 8 9 10

[自定義函式Function]

python定義函式用def開頭,同樣以冒號:結尾,還有縮排。

def my_function(x,y): return x-10,y 10x,y = my_function(10,20)print x,y

Output:
0 30

[類別Class]

Class的初始化函式是由兩條底線包含著init做宣告。

# encoding: utf-8class Student: def __init__(self, name, grade, age): self.name = name self.grade = grade self.age = age def set_name(self, name): self.name = name student_objects=[]student_objects.append( Student('john', 'B', 15) )student_objects.append( Student('dave', 'A', 12) )student_objects.append( Student('jane', 'A', 10) )student_objects[0].set_name('John')for i in student_objects: print i.name,i.grade,i.age

Output:
John B 15
dave A 12
jane A 10

[導入外部資源import]

可以用import直接導入整個python檔中所有的函式
或是用from檔案import函式,插入特定的函式

# encoding: utf-8import sys '''插入sys檔案中所有函式,使用sys檔中的write函式前須加檔名'''from time import time '''從time檔案插入time()函式,使用time()前不需要加檔名'''sys.stdout.write( str(time()) '\n' )

Output:
1409796132.99 #當下的time

[I/O]

前例中已經看到很多使用print當Output的案例
print預設是印每一行就會加一個換行,要使用,才會在每次印出之間以空格取代
要更自由一點,可以使用library中的write函式。

# encoding: utf-8import sysfile_in = file('db.txt','r')file_out = file('copy.txt','w')for line in file_in: for i in range(0,len(line)): if line[i]!='\n': sys.stdout.write(line[i] ',') else: sys.stdout.write(line[i]) file_out.write(line[i])sys.stdout.write('\n')file_in.close()file_out.close()'''# db.txt11112222sssswwww5555'''

Output:
1,1,1,1,
2,2,2,2,
s,s,s,s,
w,w,w,w,
5,5,5,5,
copy.txt內容和db.txt一樣。

[例外處理 Exceptions Handling]

# encoding: utf-8def my_divide(): try: 10 / 0 #會讓程式出錯,所以需要特別handle except ZeroDivisionError: print '不能除以0!!!' else: print '沒有任何錯誤' finally: print '無論有沒有例外都會執行這一行'my_divide()

Output:
不能除以0!!!
無論有沒有例外都會執行這一行

[排序]

排序是用程式處理資料中最常用到功能,python提供了很方便的sort函式
lambda是簡易型函式,只能回傳一個值,因此如果需要兩個值以上的排列順序,會用attrgetter

# encoding: utf-8class Student: def __init__(self, name, grade, age): self.name = name self.grade = grade self.age = age def set_name(self, name): self.name = name student_objects=[]student_objects.append( Student('john', 'B', 15) )student_objects.append( Student('dave', 'A', 12) )student_objects.append( Student('jane', 'A', 10) )student_objects.sort(key=lambda i: i.grade) for i in student_objects: print i.name,i.grade,i.age printfrom operator import attrgetter student_objects.sort(key=attrgetter('grade', 'age'),reverse=True) for i in student_objects: print i.name,i.grade,i.age print

Output:
dave A 12
jane A 10
john B 15

john B 15
dave A 12
jane A 10


以上介紹包含了一些最常用到的python功能,給想快速轉換python的人一個入門文章。

What's Next?

有了以前學C的基礎後,其實後來要碰任何程式語言都很快,
最快學習的方法都是「動手做」一個Project,邊做邊google該語言的程式語法
之後再從頭開始「看文件」,從官網或是書上一步步把該程式語言的基礎打好

動手做

提供一些遊戲化的關卡來當作練習

看文件


參考

Tutorial - Learn Python in 10 minutes

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
完全小白该怎么来学习python呢?一篇文章带你找到方向!
SyntaxError: Non-ASCII character Python、Unicode和中文
Python文本处理
python中的编码问题:以ascii和unicode为主线
Python里的string 和 unicode (一)
python笔记65 - Python3 subprocess执行命令行获取返回结果
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服