一、條件語句ifphp
依據某個條件,知足這個條件後執行下面的內容python
>>> if bool(conj): #語法 do something >>> a = 8 >>> if a == 8: print(a) 8
1.1 if...elif...elsegit
基本結構:github
if 條件 1: 語句塊1 elif 條件2: 語句塊2 elif 條件3: 語句塊3 ... else 語句塊4
if使用示例程序web
#!/usr/bin/env python #調用系統環境的python #coding:utf-8 #支持中文 python3可省略 print("清輸入任意一個整數數字:") number = int(input()) #用戶交互輸入函數 if number == 10: print("您輸入的數字是:{}".format(number)) print("You are SMART") elif number > 10: print("您輸入的數字是:{}".format(number)) print("This number is more than 10.") else: print("您輸入的數字是:{}".format(number)) print("This number is less than 10.")
1.2三元操做符app
三元操做,是條件語句中比較簡練的一種賦值方式:less
>>> name = "qiwsir" if 29 > 21 else "github" >>> name 'qiwsir'
若是抽象成爲一個公式,三元操做符就是這樣的: A = Y if X else Zdom
若是X爲真,那麼就執行 A = Y函數
若是X爲假,就執行A = Zspa
>>> x = 2 >>> y = 8 >>> a = "python" if x > y else "qiwsir" >>> a 'qiwsir' >>> b = "python" if x < y else "tajzhang" >>> b 'python'
二、for循環
for 循環規則: 操做語句
2.1實例:
>>> hello = "world" #賦值語句 >>> for i in hello: #必須是可迭代的類型 print(i) w o r l d
>>> for i in range(len(hello)): #獲得hello引用字符串長度 爲5 print(hello[i]) #對應每一個索引輸出值,直到最後一個 i=4爲止 w o r l d
2.2多種序列類型for循環:
1)循環列表:
>>> names = ["Newton","Einstein","Hertz","Maxwell","Bohr","Cavendish","Feynman"] >>> for name in names: print(name,end="-*-") #end方法help(print) Newton-*-Einstein-*-Hertz-*-Maxwell-*-Bohr-*-Cavendish-*-Feynman-*- >>> for i in range(len(names)): print(names[i]) Newton Einstein Hertz Maxwell Bohr Cavendish Feynman >>>
2)循環字典:
>>> d = dict([("website","www.itdiffer.com"),("lang","python"),("author","laoqi")]) >>> d {'website': 'www.itdiffer.com', 'lang': 'python', 'author': 'laoqi'} >>> for k in d: #獲取key print(k) website lang author >>> d.keys() dict_keys(['website', 'lang', 'author']) >>> for k in d.keys(): #相同方法 print(k) website lang author >>> for k,v in d.items(): #獲取鍵值 print (k + "-->" + v) website-->www.itdiffer.com lang-->python author-->laoqi
2.3判斷對象是不是可迭代的
>>> import collections >>> isinstance(321,collections.Iterable) False >>> isinstance([1,2,3],collections.Iterable) True >>> isinstance({"name":"canglaoshi","work":"php"},collections.Iterable) True
2.4 range(start,stop[,step])
start:開始數值,默認爲0,也就是若是不寫這項,則認爲start=0
stop:結束的數值,這是必需要寫的
step:變化的步長,默認是1,堅定不能爲0
>>> range(0,9,2) range(0, 9, 2) >>> type(range(0,9,2)) #是一個Range類型的對象 <class 'range'>
>>> list(range(0,9,2))
[0, 2, 4, 6, 8
若是是從0開始,步長爲1,能夠寫成range(9)
start=0,step=2,stop=9,值從0開始 結束是start + (n-1)step
>>> range(0,-9,-1) range(0, -9, -1) >>> list(range(0,-9,-1)) [0, -1, -2, -3, -4, -5, -6, -7, -8]
2.5並行迭代
可迭代(iterable):在python中的表現就是用for循環,從對象中得到必定數量的元素.
求兩個可迭代對象每一個元素的和zip():
>>> c = [1,2,3] >>> d = [9,8,7,6] >>> zip(c,d) <zip object at 0x105912b88> >>> list(zip(c,d)) [(1, 9), (2, 8), (3, 7)] >>> list(zip(d,c)) [(9, 1), (8, 2), (7, 3)] >>> m = {"name","lang"} >>> n = {"tajzhang","python"} >>> list(zip(m,n)) [('name', 'tajzhang'), ('lang', 'python')] >>> s = {"name":"tajzhang"} >>> t = {"lang":"python"} >>> list(zip(s,t)) [('name', 'lang')] >>> a = 'tajzhang' >>> c = [1,2,3] >>> list(zip(c)) [(1,), (2,), (3,)] >>> list(zip(a)) [('t',), ('a',), ('j',), ('z',), ('h',), ('a',), ('n',), ('g',)]
>>> a = [1,2,3,4,5] >>> b = [9,8,7,6,5] >>> d = [] >>> for x,y in zip(a,b): #使用zip使列表相加 d.append(x+y) >>> d [10, 10, 10, 10, 10]
zip擴展用法
>>> for x,y in zip(a,b): d.append(str(x) + ":" +y) >>> d ['1:python', '2:www.itdiffer.com', '3:tajzhang'] >>> result = [(2,11),(4,13),(6,15),(8,17)] >>> list(zip(*result)) [(2, 4, 6, 8), (11, 13, 15, 17)]
使用zip解決字典key value調換
方法1:使用for循環
>>> myinfor = {"name":"tajzhang","stie":"www.bokey.io","lang":"python"} >>> infor = {} >>> for k,v in myinfor.items(): infor[v] =k >>> infor {'tajzhang': 'name', 'www.bokey.io': 'stie', 'python': 'lang'}
方法2:使用zip()
>>> dict(zip(myinfor.values(),myinfor.keys())) {'tajzhang': 'name', 'www.bokey.io': 'stie', 'python': 'lang'}
解析
>>> myinfor.values() dict_values(['tajzhang', 'www.bokey.io', 'python']) >>> myinfor.keys() dict_keys(['name', 'stie', 'lang']) >>> temp = zip(myinfor.values(),myinfor.keys()) #壓縮成一個列表,每一個元素是一個元祖,元祖中第一個是值,第二個是鍵 >>> temp <zip object at 0x10239ee08> >>> dict(temp) #這是函數dict()的功能 {'tajzhang': 'name', 'www.bokey.io': 'stie', 'python': 'lang'}
2.6 enumerate()
功能:相似同事獲得元素索引和元素
>>> for i in range(len(week)): print(week[i] + 'is' + str(i) ) mondayis0 sundayis1 fridayis2 >>> for (i,day) in enumerate(week): print(day + 'is' + str(i)) mondayis0 sundayis1 fridayis2
使用舉例:
>>> seasons = ['Spring','Summer','Fall','Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons,start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')] >>> mylist = ["tajzhang",703,"python"] >>> enumerate(mylist) <enumerate object at 0x1023b6288> >>> list(enumerate(mylist)) [(0, 'tajzhang'), (1, 703), (2, 'python')]
使用練習:
2.7列表解析
先獲得1-9每一個整數的平方
>>> power2 = [] >>> for i in range(1,10): power2.append(i*i) >>> power2 [1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> squares = [x**2 for x in range(1,10)] #更pythonic的用法 >>> squares [1, 4, 9, 16, 25, 36, 49, 64, 81] >>> mybag = [' glass',' apple',' green leaf'] >>> [one.strip() for one in mybag] ['glass', 'apple', 'green leaf']
三、while循環
原理圖
3.1猜數遊戲:
#!/usr/bin/env python3 #coding:UTF-8 import random i = 0 while i < 4: print('*****************') num = int(input('請輸入0-9任意一個數字')) xnum = random.randint(0,9) x = 3 - i if num == xnum: print('運氣真好,猜對了!') break elif num > xnum: print('''您猜大了!\n 正確答案是:%s\n 您還有%s 次機會''' %(xnum,x)) elif num < xnum: print('''您猜小了!\n 正確答案是:%s\n 您還有%s 次機會''' %(xnum,x)) print('******************') i += 1
當用戶不輸入純數字時候
num_input = "12123" if not num_input.isdigit(): #判斷輸入字符串內是不是純數字 print('Please input interger.') elif int(num_input)<0 and int(num_input)>=100: print("The number should be in 1 to 100.") else: print("xxx")
強化版猜數
#!/usr/bin/env python3 #coding:utf-8 import random number = random.randint(1,100) guess = 0 while True: num_input = input("please input one integer that is in 1 to 100:") guess += 1 if not num_input.isdigit(): print("Please input interger.") elif int(num_input) < 0 or int(num_input) >= 100: print("The number should be in 1 to 100.") else: if number == int(num_input): print("OK,you are good. It is only %d,then you successed" % guess) elif number > int(num_input): print("your number is smaller.") elif number < int(num_input): print("your number is bigger.") else: print("There is something bad,I will not work")
3.2break 和 continue
break:跳出循環體
continue:返回循環開始繼續執行
break
#!/usr/bin/env python3 #coding:utf-8 a = 9 while a: if a%2 == 0: break else: print("{} is odd number".format(a)) a -= 1 print("{} is even number".format(a))
continue
#!/usr/bin/env python3 #coding:utf-8 a = 9 while a: if a%2 == 0: a -= 1 continue else: print("{} is odd number".format(a)) a -= 1
3.3while..else
#!/usr/bin/env python3 count = 0 while count < 5: print(conut,"is less than 5") count = count + 1 else: #遇到else就意味着已經不在while循環內了 print(count,"is not less than 5")
3.4for..else 與上同樣,也是跳出循環以後作的事
#!/usr/bin/env python3 from math import sqrt for n in range(99,1,-1): root = sqrt(n) if root == int(root): print(n) break else: print("Nothing")