本節主要內容:html
計算機之因此能作不少自動化的任務,由於它能夠本身作條件判斷。python
好比,輸入用戶年齡,根據年齡打印不一樣的內容,在Python程序中,能夠用if語句實現:oop
age = 20 if age >= 18: print 'your age is', age print 'adult' print 'END'
Python代碼的縮進規則。具備相同縮進的代碼被視爲代碼塊,上面的3,4行 print 語句就構成一個代碼塊(但不包括第5行的print)。若是 if 語句判斷爲 True,就會執行這個代碼塊。ui
縮進請嚴格按照Python的習慣寫法:4個空格,不要使用Tab,更不要混合Tab和空格,不然很容易形成由於縮進引發的語法錯誤。atom
if 語句後接表達式,而後用:表示代碼塊開始。spa
若是你在Python交互環境下敲代碼,還要特別留意縮進,而且退出縮進須要多敲一行回車:code
不是每一個if語句都要有else。orm
if...else...邏輯是「非此即彼」的,要麼符合條件1,要麼符合條件2。else 後面有個「:」。htm
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Cathy Wu # 提示輸入用戶名和密碼 # 驗證用戶名和密碼 # 若是錯誤,則輸出用戶名或密碼錯誤 # 若是成功,則輸出 歡迎,XXX! #import getpass _name = "Cathy" _password = "123456" username = input("username:") password = input("password") #password = getpass.getpass("password") if username == _name and password == _password: print("welcome user {name} login ...".format(name=username)) else: print("invalid username or password!")
運行結果以下:blog
username:cathywu
password123
invalid username or password! Process finished with exit code 0
在程序裏設定好你的年齡,而後啓動程序讓用戶猜想,用戶輸入後,根據他的輸入提示用戶輸入的是否正確,若是錯誤,提示是猜大了仍是小了
my_age = 28 user_input = int(input("input your guess num:")) if user_input == my_age: print("Congratulations, you got it !") elif user_input < my_age: print("think bigger!") else: print("think smaller!")
外層變量,能夠被內層代碼使用.
內層變量,不該被外層代碼使用.
list或tuple能夠表示一個有序集合。若是咱們想依次訪問一個list中的每個元素呢?好比 list:
L = ['Adam', 'Lisa', 'Bart'] print L[0] print L[1] print L[2]
若是list只包含幾個元素,這樣寫還行,若是list包含1萬個元素,咱們就不可能寫1萬行print。
這時,循環就派上用場了。
Python的 for 循環就能夠依次把list或tuple的每一個元素迭代出來:
L = ['Adam', 'Lisa', 'Bart'] for name in L: print name
name 這個變量是在 for 循環中定義的,意思是,依次取出list中的每個元素,並把元素賦值給 name,而後執行for循環體(就是縮進的代碼塊)。
這樣一來,遍歷一個list或tuple就很是容易了。
班裏考試後,老師要統計平均成績,已知4位同窗的成績用list表示以下:
L = [75, 92, 59, 68]
請利用for循環計算出平均成績。
L = [75, 92, 59, 68] sum = 0.0 for i in L: sum = sum + i print sum / 4
打印0,2,4,6,8。
for i in range(0,10,2): print("loop",i)
和 for 循環不一樣的另外一種循環是 while 循環,while 循環不會迭代 list 或 tuple 的元素,而是根據表達式判斷循環是否結束。
好比要從 0 開始打印不大於 N 的整數:
N = 10 x = 0 while x < N: print x x = x + 1
while循環每次先判斷 x < N,若是爲True,則執行循環體的代碼塊,不然,退出循環。
在循環體內,x = x + 1 會讓 x 不斷增長,最終由於 x < N 不成立而退出循環。
若是沒有這一個語句,while循環在判斷 x < N 時老是爲True,就會無限循環下去,變成死循環,因此要特別留意while循環的退出條件。
利用while循環計算100之內奇數的和。
sum = 0 x = 1 while x < 100: sum = sum + x x = x+2 print sum
用 for 循環或者 while 循環時,若是要在循環體內直接退出循環,可使用 break 語句。
好比計算1至100的整數和,咱們用while來實現:
sum = 0 x = 1 while True: sum = sum + x x = x + 1 if x > 100: break print sum
咋一看, while True 就是一個死循環,可是在循環體內,咱們還判斷了 x > 100 條件成立時,用break語句退出循環,這樣也能夠實現循環的結束。
利用 while True 無限循環配合 break 語句,計算 1 + 2 + 4 + 8 + 16 + ... 的前20項的和。
sum = 0 x = 1 n = 1 while True: if n > 20: break sum = sum + x x= x * 2 n= n + 1 print (sum)
在循環過程當中,能夠用break退出當前循環,還能夠用continue跳事後續循環代碼,繼續下一次循環。
假設咱們已經寫好了利用for循環計算平均分的代碼:
L = [75, 98, 59, 81, 66, 43, 69, 85] sum = 0.0 n = 0 for x in L: sum = sum + x n = n + 1 print (sum / n)
如今老師只想統計及格分數的平均分,就要把 x < 60 的分數剔除掉,這時,利用 continue,能夠作到當 x < 60的時候,不繼續執行循環體的後續代碼,直接進入下一次循環:
for x in L: if x < 60: continue sum = sum + x n = n + 1
對已有的計算 0 - 100 的while循環進行改造,經過增長 continue 語句,使得只計算奇數的和:
sum = 0 x = 1 while True: sum = sum + x x = x + 1 if x > 100: break print sum
修改後以下:
sum = 0 x = 0 while True: x = x + 1 if x > 100: break if x % 2 == 0: continue sum = sum + x print (sum)