Python是一種計算機程序設計語言。你可能已經據說過不少種流行的編程語言,好比很是難學的C語言,很是流行的Java語言html
平常任務,好比自動備份;能夠用來作網站;雲計算最火的語言;運維人員必備語言等等等python
python目前有兩個版本,一個是python2.x 一個是python3.xexpress
關於python兩個版本區別此處描寫的更加詳細編程
http://www.cnblogs.com/codingmylife/archive/2010/06/06/1752807.htmlpython3.x
1 print('hello world!')
變量定義的規則:app
變量的賦值運維
name = 'ly'dom
用print()
在括號中加上字符串,就能夠向屏幕上輸出指定的文字。好比輸出'hello, world'
編程語言
Python提供了一個input()
,可讓用戶輸入字符串,並存放到一個變量裏。好比輸入用戶的名字:ide
>>> name=input('please input your name:') please input your name:ly >>> name 'ly'
input()的輸入的類型默認都是字符串
>>> num=input(':') :1 >>> type(num) <class 'str'>
格式化輸出字符串可使用%格式化輸出,例如
name = input('name:') age = int(input('age:')) score = float(input('score:')) info = (''' -------------info %s ------------- name:%s age:%d score:%.2f ----------------------------------- ''') % (name,name,age,score)
%s 字符串 %d 10進制整數 %f 浮點型(取兩位%.2f)
有的時候字符串裏面的%是一個普通字符,就須要轉義使用%%來表示%
格式化輸出還可使用.format方式
1 info1 = (''' 2 -------------info1 {name}------------ 3 name:{name} 4 age:{age:d} 5 score:{score:.2f} 6 ------------------------------------- 7 ''').format(name=name,age=age,score=score) 8 print('format的一種輸出方式',info1) 9 info2 = (''' 10 -------------info2 {0}------------- 11 name:{0} 12 age:{1:d} 13 score:{2:.2f} 14 ----------------------------------- 15 ''').format(name,age,score) 16 print('format的另外一種輸出方式',info2)
{}默認字符串{:d}整數型{:f}浮點型(取2位{:.2f})
可使用內部函數type()來查看數據的類型
7.1 字符串(str)
用單引號‘’或雙引號「」括起來的任意文本,字符串中包含轉義字符\,製表符\t,換行符\n
轉義字符\的使用方法,好比咱們要輸出一個\
>>> print('\\') \
打印D:\test的文件路徑也須要使用轉義
>>> print('D:\\test') D:\test
若是字符串中有許多字符都須要轉義的話,就須要加不少的\,爲了簡化python提供一種很是簡便的方式r' ',例如若是咱們要打印D:\test\test.txt時,能夠這麼寫
>>> print(r'D:\test\test.txt') D:\test\test.txt
若是字符串中有不少換行,寫在一行使用使用\n很差閱讀,爲了簡化python提供'''...'''的格式表示多行內容
>>> print('''line1) ... line2 ... line3''') line1) line2 line3
7.2布爾型(bool)
布爾型表示判斷只有True和Flase兩種值,布爾值可使用and、or、not計算
7.3整數型(int)
任意大小的整數,包含負整數
7.4浮點型(float)
小數
7.5列表(list)
一種有序的集合,使用[ ]定義能夠隨時添加和刪除其中的元素,好比建立0-9的整數集合
>>> num=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> num [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
能夠經過索引來訪問list中的每一個元素,索引默認從0開始,好比定義一個班級的列表
1 >>> classmates=['張三','李四','王五','趙六'] 2 >>> classmates 3 ['張三', '李四', '王五', '趙六'] 4 >>> classmates[0] 5 '張三' 6 #添加一個王二麻子 7 >>> classmates.append('王二麻子') 8 >>> classmates 9 ['張三', '李四', '王五', '趙六', '王二麻子'] 10 #刪除王五,使用remove,默認刪除第一個 11 >>> classmates.remove('王五') 12 >>> classmates 13 ['張三', '李四', '趙六', '王二麻子'] 14 #查看每一個元素對應的索引號可使用enumerate 15 >>> for obj,value in enumerate(classmates): 16 ... print(obj,'--',value) 17 ... 18 0 -- 張三 19 1 -- 李四 20 2 -- 趙六 21 3 -- 王二麻子 22 #刪除張三,使用pop方法,默認刪除最後一個元素 23 >>> classmates.pop(0) 24 '張三' 25 >>> classmates 26 ['李四', '趙六', '王二麻子']
要把某個元素替換成別的元素,能夠直接賦值給對應的索引位置
>>> classmates ['李四', '趙六', '王二麻子'] >>> classmates[2] = '週二' >>> classmates ['李四', '趙六', '週二']
list中全部元素也能夠是不一樣的數據類型例如:
>>> list = ['apple',1,True] >>> list ['apple', 1, True]
list元素也能夠是另外一個list
>>> list1 = ['red','blue',list] >>> list1 ['red', 'blue', ['apple', 1, True]]
python中列表的操做函數跟方法
len(list) 列表元素的個數
max(list) 返回列表元素的最大值
min(list) 返回列表元素的最小值
list() 修改其餘的數據類型爲list類型(不是全部數據類型均可轉換)
列表操做方法
list.append(obj) 在列表末尾添加新元素
list.count(obj) 統計某個元素在列表中出現的次數
list.extend() 追加,在列表末尾添加一個列表
list.index(obj) 從列表中找出某個元素對應的索引號
list.insert(index,obj) 將某個元素插入列表指定的索引位置
list.pop(index) 刪除列表中某個索引對應的元素,不寫默認刪除最後一位
list.remove(obj) 刪除列表中某個元素,不寫默認刪除第一位
list.reverse() 反向列表中元素
>>> a [0, 1, 2, 4, 5, 6, 7, 8] >>> a.reverse() >>> a [8, 7, 6, 5, 4, 2, 1, 0]
list.sort() 對列表中元素進行排序
>>> a [8, 7, 6, 5, 4, 2, 1, 0] >>> a.sort() >>> a [0, 1, 2, 4, 5, 6, 7, 8]
7.6元組(tuple)
另外一種有序的列表叫元組,元組跟列表很是類似,可是元組一旦初始化就不能修改,使用()定義,元組一樣能夠操做
若是元組中只有一個元素須要在元素後面添加,(逗號)
>>> b=('a') >>> b 'a' >>> type(b) <class 'str'> >>> b=('a',) >>> type(b) <class 'tuple'>
7.7字典(dict)
python內置了字典dict的支持,使用 鍵---值(key---value)的方式存儲,具備極快的查找速度
定義方法使用{}定義
>>> d = {'張三':90,'李四':58,'王五':65} >>> d {'張三': 90, '李四': 58, '王五': 65} >>> d['李四'] 58 >>>
根據key值直接拿到value,把數據放入dict的方法,除了初始化時指定以外,還能夠經過key放入
>>> d['週二']=100 >>> d {'張三': 90, '李四': 58, '王五': 65, '週二': 100}
若是屢次對一個key放入value,後面的值會把前面的沖掉,若是key不存在,dict就會報錯
>>> d['金三胖'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: '金三胖'
要避免key不存在的錯誤,有兩種方法,一種是in方法
>>> '金三胖' in d False >>> '週二' in d True
一種是經過dict提供的get方法,若是key不存在,能夠返回None或自定義value
>>> d.get('金三胖') >>> d.get('金三胖',0) 0
要刪除使用dict.pop(key)方法,對應的value也會從dict中刪除,注意dict內部存放的順序跟key放入的順序是沒有關係的
>>> d {'張三': 90, '李四': 58, '王五': 65, '週二': 100} >>> d.pop('王五') 65 >>> d {'張三': 90, '李四': 58, '週二': 100}
和list相比dict有如下幾個特色
a.查找和插入的速度極快,不會隨着key的增長而變慢
b.須要佔用大量的內存,內存浪費多
而list正好相反,因此dict是一種用空間換取時間的方法,須要牢記的是dict中key必須是不可變對象,list就不能做爲key,而字符串、整數、元組均可以做爲key
7.8 set
set和dict類型,也是一組key的集合,可是不存儲value,因爲key不能重複,因此,在set中沒有重複的key
要建立一個set須要提供一個list做爲輸入集合
>>> s = set([1,2,'a','b',2]) >>> s {'b', 1, 2, 'a'}
注意,傳入的參數是一個list,而顯示的{ }只是告訴你這個set內部有這幾種元素,顯示的順序也不表示set是有序的,而且重複元素會自動過濾
能夠經過add(key)添加元素到set,能夠重複添加,不會有效果,經過remove(key)刪除元素
>>> s.add(3) >>> s.add(3) >>> s {1, 2, 'a', 3, 'b'} >>> s.remove('b') >>> s {1, 2, 'a', 3}
set能夠看出是數學意義上無序和無重複的元素的集合,所以兩個set能夠作數學意義上的交集、並集等操做
>>> s1 {1, 2, 3} >>> s2 {2, 3, 4} >>> s1 & s2 {2, 3} >>> s1 | s2 {1, 2, 3, 4}
set和dict的惟一區別僅在於沒有存儲對應的value,可是set和dict同樣,一樣不可放入可變對象
7.9 空值(None)
空值是python中一個特殊的值,用None表示,None不能理解爲0,由於0是有意義的,而None是一個特殊的空值。
8.1 算數運算
+ 加法 - 減法 * 乘法 / 除(使用/除時,結果爲float類型) //地板除(結果爲整數int) % 取餘數 ** 次冪(2**2 表示2的2次冪結果4)
8.2 比較運算,輸出結果爲bool
== 等於 != 不等於(python3.0以後不能夠寫做<>) > 大於 < 小於 >= 大於等於 <=小於等於
8.3賦值運算
= 簡單的賦值運算符
+=加法賦值運算符 c+=a至關於c=c+a
-=減法賦值運算符 c-=a至關於c=c-a
*=乘法賦值運算符 c*=a至關於c=c*a
/=除法賦值運算符 c/=a至關於c=c/a
%=取餘賦值運算符 c%=a至關於c=c%a
除此以外還有**= //=
8.4邏輯運算符
and 布爾與 二者都是True纔是True,不然爲False
or 布爾或 二者都是False纔是False,不然爲True
not 布爾非 非True就是False,非False就是True
8.5成員運算
in 若是在指定的序列找到值,則返回True,不然爲False
not in 若是在指定的序列中沒有找到值,返回True,不然爲False
8.6身份運算
is is是判斷兩個標識符是否是引用一個對象
is not is not 是判斷兩個標識符是否是引用不一樣對象
8.7強制類型轉換符
不一樣數據類型之間能夠進行轉換
>>> a = '1' >>> type(a) <class 'str'> >>> int(a) 1 >>> b = int(a) >>> type(b) <class 'int'>
8.8 python中不一樣對象進行比較須要使用operator模塊
須要引入 operator 模塊,適合任何對象,包含的方法有:
import operator
operator.lt(a, b) a小於b? operator.le(a, b) a小於等於b? operator.eq(a, b) a等於b? operator.ne(a, b) a不等於b? operator.ge(a, b) a大於等於b? operator.gt(a, b) a大於b
運算符 | 描述 |
---|---|
lambda |
Lambda表達式 |
or |
布爾「或」 |
and |
布爾「與」 |
not x |
布爾「非」 |
in,not in |
成員測試 |
is,is not |
同一性測試 |
<,<=,>,>=,!=,== |
比較 |
| |
按位或 |
^ |
按位異或 |
& |
按位與 |
<<,>> |
移位 |
+,- |
加法與減法 |
*,/,% |
乘法、除法與取餘 |
+x,-x |
正負號 |
~x |
按位翻轉 |
** |
指數 |
x.attribute |
屬性參考 |
x[index] |
下標 |
x[index:index] |
尋址段 |
f(arguments...) |
函數調用 |
(experession,...) |
綁定或元組顯示 |
[expression,...] |
列表顯示 |
{key:datum,...} |
字典顯示 |
'expression,...' |
字符串轉換 |
python的語法比較簡單,採用縮進方式;已#開頭表示註釋,批量註釋使用'''。。。''',其餘每一行都是一個語句,當語句已冒號:結尾時,縮進的語句視爲代碼塊。按照約定俗成,縮進應始終堅持使用4個空格(不要tab鍵和空格混用,python是區分大小寫的)。
9.1判斷語句
簡單的if判斷語句爲
if 條件:#條件爲True
執行結果
else: #不然
執行結果
if中還可使用elif作更細緻的判斷,elif 是else if的縮寫,if語句是從上往下判斷,若是某個判斷上是True,就會執行相應的結果,執行完畢後會忽略掉接下來的elif和else
9.2循環語句for
for...in....語句能夠循環遍歷list或tuple,又稱做迭代,例:
names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name) #執行這段代碼,會依次打印names的每個元素: Michael Bob Tracy
若是要計算從1到100的數之和,咱們可使用for循環實現
sum=0 #range()函數能夠生成一個整數序列,range(1,101)表明從1開始取到100,至關於 #[1,2,3,4,5.....100]的一個列表 for i in range(1,101): sum = sum + i print(sum)
9.3循環語句while
while循環是,只要條件知足,就不斷循環,條件不知足時退出。例:
打印1到10的整數
>>> i=0 >>> while i <10: ... i = i + 1 ... print(i) ... 1 2 3 4 5 6 7 8 9 10
在循環中,可使用break和continue,須要配合if語句來使用,break是退出循環,continue是跳過當前循環
一個經典的猜數字的遊戲
1 #!/usr/bin/env python3 2 #-*- coding: utf-8 -*- 3 #經典猜數字遊戲 4 import random 5 #取一個隨機數(0-9) 6 num = random.randint(0,9) 7 #用戶輸入一個數字 8 #給3次機會判斷輸入的數字跟獲取的隨機數是否相等,並給出提示,超過次數提示機會已用盡 9 for i in range(3): 10 #用戶輸入一個數字 11 num_of_user = int(input('請輸入一個0-9的數字:')) 12 #首先判斷輸入的數值是否0-9之間 13 while True: 14 if num_of_user in range(10): 15 break 16 else: 17 print('輸入的數值超過0-9區間範圍!,請從新輸入') 18 num_of_user = int(input(':')) 19 if num_of_user == num: 20 print('恭喜你猜對了!') 21 break 22 elif num_of_user > num: 23 print('你猜想的數字過大!') 24 else: 25 print('你猜想的數字小了!') 26 27 else: 28 print('你的機會已用盡,對不起,你輸了!')
一個交互式的猜數字遊戲
#!/usr/bin/env python3 #-*- coding: utf-8 -*- #經典猜數字遊戲 import random #取一個隨機數(0-9) num = random.randint(0,9) #建立一個計數器 count = 0 while count<3: #用戶輸入一個數字 num_of_user = int(input('請輸入一個0-9的數字:')) #計數器循環+1 count += 1 #首先判斷輸入的數值是否0-9之間 while True: if num_of_user in range(10): break else: print('輸入的數值超過0-9區間範圍!,請從新輸入') num_of_user = int(input(':')) if num_of_user == num: print('恭喜你猜對了!') break elif num_of_user > num: print('你猜想的數字過大!') else: print('你猜想的數字小了!!') if count == 3: print('三次機會已用盡,請問你還想繼續玩嗎Y/N?') play_flag = input(':') if play_flag == 'Y': count = 0 elif play_flag == 'N': print('遊戲結束。') else: print('輸入的命令有誤,遊戲結束。')