一、Python簡介? ? ? ? Python 是一種解釋型語言,在 Python 中,由于內存管理是由 Python 解釋器負責的。? ? ? ? Python 提供了“安全合理”的退出機制,讓程序員能掌控局面。一旦你的 Python 由于錯誤崩潰,解釋程序就會轉出一個“堆棧跟蹤”,那里面有可用到的全部信息,包括你程序崩潰的原因以及是那段代碼(文件名、行數、行數調用等等)出錯了。這些錯誤被稱為異常。如果在運行時發生這樣的錯誤,Python 使你能夠監控這些錯誤并進行處理。? ? ? ? Python 是用 C 寫的,又由于 C 的可移植性,使得 Python 可以運行在任何帶有 ANSI C 編譯器的平臺上。盡管有一些針對不同平臺開發的特有模塊,但是在任何一個平臺上用 Python 開發的通用軟件都可以稍事修改或者原封不動的在其他平臺上運行。這種可移植性既適用于不同的架構,也適用于不同的操作系統。? ? ? ? Python 的面向對象的特性是與生俱來的。然而,Python 絕不想 Java 或 Ruby 僅僅是一門面向對象語言,事實上它融匯了多種編程風格。例如,它甚至借鑒了一些像 Lisp 和 Haskell 這樣的函數語言的特性。? ? ? ? 文件擴展名? ? ? ? Python 源文件通常用.py 擴展名。當源文件被解釋器加載或者顯式地進行字節碼編譯的時候會被編譯成字節碼。由于調用解釋器的方式不同,源文件會被編譯成帶有.pyc 或.pyo 擴展名的文件。1.Python可以做什么?? - 日常任務,小工具,eg:備份mp3,系統管理員需要的腳本任務? ? - 做網站,eg:YouTube,國內的豆瓣,Google,Yahoo? ? - 網絡游戲的后臺? ? - 爬蟲? 2.python不可以做什么?? ? - 操作系統只能用C語言編寫? ? - 手機應用,iOS用Object-C, Android用Java? ? - 3D游戲,最好用C,C++3.各系統下的Python的開發環境:? Windows: 網頁鏈接Linux: yum install python -y? ? Mac:自帶python2.7(OS>10.8)4.python編輯器? ? linux:vim,emacs,gedit? windows:不要用記事本,會在每個文件的開始加一個特殊字符0xefbbbf,? ? ? ? ? ? ? ? ? ? notepad++? ? ? ? ? ? ? ? ? ? sublime? ? ? ? ? ? ? ? ? ? atom5. python解釋器? ? cpython? ? ipython:基于cpython,交互方式有所增強? ? pypy: 對代碼進行動態編譯,JIT技術(just-in-time compiler,即時編譯器),顯著提高代碼執行速度。? ? Jpython: java平臺上的python解釋器,將python代碼編譯成java字節碼執行。? ? IronPython: 直接將python代碼編譯成.net的字節碼6.安裝python[root@localhost ~]# yum install python[root@localhost ipython]# yum install *[root@localhost ~]# python? ? ? ? ? ? ? ? ##啟動python要訪問 Python, 除非你已經將 Python 所在路徑添加到系統搜索路徑之中, 否則就必須輸入 Python 的完整路徑名才可以啟動 Python。Python 一般安裝在 /usr/bin 或/usr/local/bin子目錄中。7.安裝ipython? #yum install *openpgm-5.2.122-2.el7.x86_64.rpmpython-ipython-3.2.1-1.el7.noarch.rpmpython-ipython-console-3.2.1-1.el7.noarch.rpmpython-ipython-gui-3.2.1-1.el7.noarch.rpmpython-jsonschema-2.3.0-1.el7.noarch.rpmpython-mistune-0.5.1-1.el7.x86_64.rpmpython-path-5.2-1.el7.noarch.rpmpython-pip-7.1.0-1.el7.noarch.rpmpython-pygments-1.4-9.el7.noarch.rpmpython-simplegeneric-0.8-7.el7.noarch.rpmpython-zmq-14.3.1-1.el7.x86_64.rpmzeromq3-3.2.5-1.el7.x86_64.rpm? ? #ipython? ? ? ? ? ? ? ? ? ##啟動ipython二、Python基礎知識1.Python輸出print:? ? 注意:不加引號默認是變量? ? 可以作運算:? In [2]: a=hello? ? ? ? ? ? ? ? ? ? ##不加引號默認是變量? ? ---------------------------------------------------------------------------? ? NameError? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Traceback (most recent call last)in()? ? ----> 1 a=hello
NameError: name 'hello' is not defined
In [3]: a="hello"? ? ? ? ? ? ? ? ? ##定義字符串變量a
In [4]: print a? ? ? ? ? ? ? ? ? ? ? ? ? hello
In [5]: print 100+100? ? ? ? ? ##做運算? ? 200
In [6]:
print 語句,與字符串格式運算符(% )結合使用,可實現字符串替換功能
示例:
>>> print "%s is number %d!" % ("Python", 1)Python is number 1!
2.輸入:raw_input()
下劃線(_)在解釋器中有特別的含義,表示最后一個表達式的值。
示例:
In [19]: 9-3Out[19]: 6
In [20]: _Out[20]: 6
練習1:輸入兩個數字,相加后輸出:
#!/usr/bin/python
a = raw_input("input first number:")
b = raw_input("input second number:")
print int(a)+int(b)
3.Python腳本
1)Python 腳本使用擴展名 .py
2)腳本啟動行
#!/usr/bin/python? ? ##!后面跟的路徑是你python解釋器的絕對路徑
當你不能確定 Python 的具體路徑或者 Python 的路徑經常變化時(但不能挪到系統搜索路徑之外), env 就非常有用。它會幫你在系統搜索路徑中找到 python 解釋器。
如果你的系統擁有 env, 你的啟動行就可以改為下面這樣:
!/usr/bin/env python
或者, 如果你的 env 位于 /bin 的話,
#!/bin/env python
3)當python腳本中有中文時,需要制定編碼格式:
#coding:utf-8
#coding=utf-8
#encoding:utf-8
#encoding=utf-8
#-*-coding:utf-8-*-
4)執行python腳本
a.不管哪種 Unix 平臺, Python 腳本都可以象下面這樣,在命令行上通過解釋器執行:$ python script.py
b.給python腳本一個執行權限,直接用絕對路徑的方式執行
$ ./script.py? ? ? ? ? ##當前工作路徑在腳本所在路徑時,可以這樣執行
5).python IDE
安裝pycharm:
a.安裝包pycharm-community-4.0.1.tar.gz
b.解壓縮
[root@localhost software]# tar zxf pycharm-community-4.0.1.tar.gz -C /mnt/c.進入解壓后目錄
[root@localhost bin]# cd /mnt/pycharm-community-4.0.1/bind.[root@localhost bin]# ./pycharm.sh
之后就進入圖形窗口
4.注釋和大部分腳本及 Unix-shell 語言一樣,Python 也使用 # 符號標示注釋,從 # 開始,直到一行結束的內容都是注釋。
5.變量定義原則
首字母小寫,見名知義,駝峰標示,數字不能作首字母
python變量名是大小寫敏感的
Python 是動態類型語言, 也就是說不需要預先聲明變量的類型。 變量的類型和值在賦值那一刻被初始化。
Python 不支持 C 語言中的自增 1 和自減 1 運算符, 這是因為 + 和 - 也是單目運算符,Python 會將 --n 解釋為-(-n) 從而得到 n , 同樣 ++n 的結果也是 n.
Python 也支持增量賦值,也就是運算符和等號合并在一起
注意:python中兩個變量相同時,兩個名字指向的同一個內存地址
練習2:
交互模式:計算一月和四月分別有多少分鐘,使用變量daysPerMonth,hoursPerDay,minutesPerHour? ? 寫腳本:
#!/usr/bin/python
#coding=utf-8
daysPerMonth1=31
daysPerMonth2=30
hoursPerDay=24
minutesPerHour=60
print "1月有",daysPerMonth1*hoursPerDay*minutesPerHour,"分鐘"
print "4月有",daysPerMonth2*hoursPerDay*minutesPerHour,"分鐘"
6.數值類型
(1)整形int:
(2)長整形long:
定義一個long變量a=1L
In [14]: a=1L
In [15]: type(a)
Out[15]: long
從長遠來看, 整型與長整型正在逐步統一為一種整數類型。從 Python2.3 開始,再也不會報整型溢出錯誤, 結果會自動的被轉換為長整數。在未來版本的 Python 中, 兩種整數類型將會無縫結合, 長整數后綴 “L”也會變得可有可無。
(3)浮點型float:
In [9]: a=5? ? ? ? In [10]: type (2)? ? ? ? Out[10]: int
In [11]: print a/2? ? ? ? 2? ? ? ? ? ? ? ? ? ? ? ##除數被除數都是整形時,結果為整形,當二者其一是浮點型,答案為浮點型? ? ? ? In [6]: a=1.4
In [7]: type (a)? ? ? ? Out[7]: float
In [8]: print a/2? ? ? ? 0.7
浮點型的另一種表示方法:科學計數法? ? ? ? ? ? In [12]: a=1.2e-3
In [13]: print a? ? ? ? ? ? 0.0012
(4)復數:complex? ? ? ? 定義一個復數:? ? ? ? In [16]: a=2j-3? ? ? ? In [18]: type(a)? ? ? ? Out[18]: complex
(5)布爾值:True,False
7.運算符和表達式:
邏輯運算符:not,or,and
算術運算符:+,-,*,/,%,**
關系運算符:>,<,>=,<=,!=,==
賦值運算符:=,+=,-=*=,/=,%=
練習3:四則表達式,用if語句實現? ? if判斷語句后要加:表示縮進
#!/usr/bin/python
#coding=utf-8
num1 = raw_input("input first number:")
operator = raw_input("input operater:")
num2 = raw_input("input second number:")
if operator == "+":
print num1,operator,num2,"=",int(num1)+int(num2)
elif operator == "-":
print num1,operator,num2,"=",int(num1)-int(num2)
elif operator == "*":
print num1,operator,num2,"=",int(num1)*int(num2)
elif operator == "/":
print num1,operator,num2,"=",float(num1)/float(num2)
else :? ? ? ? ? ? print "operator error!"
三、序列
1.字符串
定義:
1)str = “hello”
2)str = ‘hello’
3)str = """hello""" 或 str = '''hello'''? ##不會改變引號內的格式
In [1]: str = "hello"
In [2]: print str? ? ? ? ? ? hello
In [3]: str = 'hello'
In [4]: print str? ? ? ? ? ? hello
In [5]: str = """hello? ? ? ? ? ? ? ...:? ? ? ? i? ? ? ? ? ? ? ...:? ? ? ? am? ? ? ? ? ? ? ...: """
In [6]: print str? ? ? ? ? ? hello? ? ? ? ? ? ? ? i? ? ? ? ? ? ? ? am
In [7]: str = '''hello? ? ? ? ? ? ? ...:? ? ? ? i? ? ? ? ? ? ? ...:? ? ? ? am? ? ? ? ? ? ? ...: '''
In [8]: print str? ? ? ? ? ? hello? ? ? ? ? ? ? ? i? ? ? ? ? ? ? ? am
索引:
In [38]: a[1]
Out[38]: 'b'
字符串連接:
In [39]: a[1]+a[4]
Out[39]: 'be'
切片:
In [40]: a[1:4]
Out[40]: 'bcd'
In [41]: a[1:4:2]? ? ? ? Out[41]: 'bd'
In [42]: a[-1:-4]? ? ? ? Out[42]: ''
In [43]: a[-1:-4:-1]? ? ? ? Out[43]: 'edc'
In [44]: a[-1:-4:-2]? ? ? ? Out[44]: 'ec'
In [45]: a[:]? ? ? ? Out[45]: 'abcde'
求字符串長度:
In [1]: a="oiuy"
In [2]: len(a)
Out[2]: 4
*字符串重復:
In [3]: print "wu"*20
wuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwu
判斷字符串是否在某個字符串內:
In [1]: a="oiuy"
In [4]: "ad" in a
Out[4]: False
In [5]: "oi" in a
Out[5]: True
練習4:輸入一個字符,判斷是否在字符串中
#!/usr/bin/env python
str1="ljsoioi"
a=raw_input("input a word:")
if a in str1:
#print str1," has ",a
print "%s has %s" %(str1,a)? ? ##兩個都可以
else:
#print str1," has not ",a
print "%s has not %s" %(str1,a)
字符串內容的比較:
In [1]: str1="2531424"
In [2]: max(str1)? ? ##求字符串里的最大值
Out[2]: '5'
In [3]: min(str1)? ? ##求字符串里的最小值
Out[3]: '1'
In [4]: str1="45"
In [5]: str2="123"
In [6]: cmp(str1,str2)? ? ##比較倆個字符串的大小,一位一位比
Out[6]: 1? ? ? ? ##4>5,所以是1
可以將列表和元組當成普通的“數組”,它能保存任意數量任意類型的 Python 對象。和數組一樣,通過從 0 開始的數字索引訪問元素,但是列表和元組可以存儲不同類型的對象。列表和元組有幾處重要的區別。列表元素用中括號( [ ])包裹,元素的個數及元素的值可以改變。元組元素用小括號(( ))包裹,不可以更改(盡管他們的內容可以)。元組可以看成是只讀的列表。通過切片運算( [ ] 和 [ : ] )可以得到子集,這一點與字符串的使用方法一樣。
學好python你需要一個良好的環境,一個優質的開發交流群,群里都是那種相互幫助的人才是可以的,我有建立一個python學習交流群,在群里我們相互幫助,相互關心,相互分享內容,這樣出問題幫助你的人就比較多,群號是301,還有056,最后是051,這樣就可以找到大神聚合的群,如果你只愿意別人幫助你,不愿意分享或者幫助別人,那就請不要加了,你把你會的告訴別人這是一種分享。如果你看了覺得還可以的麻煩給我點個贊謝謝
。
學習是對自己最好的投資,而機會屬于有準備的人,這是一個看臉的時代,但最終拼的是實力。人和人之間的差距不在于智商,而在于如何利用業余時間,所以沒有等出來的輝煌,只有干出來的精彩。其實只要你想學習,什么時候開始都不晚,不要擔心這擔心那,你只需努力,剩下的交給時間,而你之所以還沒有變強,只因你還不夠努力,要記得付出不亞于任何人的努力。