9.1-條件判斷:
python中是以縮進(jìn)來控制代碼的層級的,同一級代碼需要保持一致,下一級代碼要進(jìn)行縮進(jìn)。
if .... else .... 判斷就是如果怎樣否則怎樣。
條件本質(zhì)上即是True(真)或假(False)。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 條件為真 輸出 "123"
if True:
print("123")
else:
print("456")
print("-----" * 8)
# 條件為假 輸出 "456"
if False:
print("123")
else:
print("456")
運(yùn)行結(jié)果:

用戶登錄驗證案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
user = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
#如果 user等于root 并且 pwd等于root123 輸出 "歡迎登錄"
if user == "root" and pwd == "root123":
print("歡迎登陸!")
#否則 輸出 "用戶名或密碼錯誤"
else:
print("用戶名或密碼錯誤!")
運(yùn)行結(jié)果:

9.2-多條件判斷:
#首先判斷 條件1 為真 對應(yīng)語句塊內(nèi)容將會被執(zhí)行 如果 條件1為假 對應(yīng)語句塊(代碼塊)內(nèi)容不會被執(zhí)行
if 條件1:
print("1")
#如果 條件1 為假 將判斷 條件2 為真執(zhí)行 為假 繼續(xù)往下執(zhí)行
elif 條件2:
print("2")
#如果 條件2 為假 將判斷 條件3 為真執(zhí)行 為假 繼續(xù)往下執(zhí)行
elif 條件3:
print("3")
#如上條件都為假時 則執(zhí)行 else對應(yīng)的 代碼塊
else:
print("4")
根據(jù)用戶輸入的內(nèi)容輸出其成績案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
user = input("請輸入考生姓名:")
#如果 user等于 a 輸出 "99分"
if user == "a":
print("99分")
#如果 if 條件為假 并且 user 等于 "b" 輸出 "76分"
elif user == "b":
print("76分")
#如果上述條件為假 并且 user 等于 "c" 輸出 "32分"
elif user == "c":
print("32分")
#否則 輸出 "姓名輸入錯誤,不存在該考生成績!"
else:
print("姓名輸入錯誤,不存在該考生成績!")
運(yùn)行結(jié)果:

9.3-while循環(huán):
while循環(huán)只要條件滿足就會一直循環(huán)執(zhí)行,直到條件不滿足(為假False)時退出循環(huán),并執(zhí)行循環(huán)體后面的語句。
通過while循環(huán)可以讓你不斷地循環(huán)執(zhí)行一段代碼,若條件永遠(yuǎn)為真(True)則陷入死循環(huán)。
死循環(huán)案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#條件永遠(yuǎn)為真 將陷入死循環(huán)
while True:
print("1")
#while循環(huán)陷入死循環(huán),不會執(zhí)行循環(huán)體后面的語句
print("123456")
運(yùn)行結(jié)果:

解決死循環(huán):
#!/usr/bin/env python
# -*- coding:utf-8 -*-
name = True
# 條件為真 執(zhí)行while中的代碼塊
while name:
print("1")
#重新賦值
name = False
#while循環(huán) 條件不滿足 為False時 執(zhí)行循環(huán)體后面的語句
print("123456")
在內(nèi)存中的表示:

運(yùn)行結(jié)果:

無限循環(huán)輸出1、2、3、4、5、6、7 ............ 案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
name = 1
while True:
print(name)
#變量name的值 加 1 并賦值給 變量name
name = name + 1
運(yùn)行結(jié)果:

用while循環(huán)輸出1 2 3 4 5 6 7 8 9 10案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
name = 1
pwd = True
while pwd:
print(name)
#變量name的值為10(為True)時 對應(yīng)的代碼塊內(nèi)容將被執(zhí)行
if name == 10:
pwd = False
name = name + 1
print("end")
運(yùn)行結(jié)果:

break關(guān)鍵字:
break關(guān)鍵字是立即跳出當(dāng)前循環(huán),在其后面的循環(huán)代碼不會被執(zhí)行。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
name = 1
pwd = True
while pwd:
print(name)
#變量name的值為10(為True)時 對應(yīng)的代碼塊內(nèi)容將被執(zhí)行
if name == 10:
#跳出整個循環(huán) 其后面的循環(huán)代碼將不執(zhí)行
break
name = name + 1
#跳出整個循環(huán)后 直接往下執(zhí)行
print("end")
運(yùn)行結(jié)果:

continue關(guān)鍵字:
continue關(guān)鍵字是用于跳出本次循環(huán),繼續(xù)下一次循環(huán)。
如果遇到continue關(guān)鍵字,會終止本次循環(huán),continue后面剩余的語句將會被忽略,回到循環(huán)頂端,繼續(xù)下一次循環(huán)。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
while True:
print("1")
time.sleep(0.2)
#跳出本次循環(huán) 后面的語句將被忽略 回到循環(huán)頂端進(jìn)行下一次循環(huán)
continue
print("2")
運(yùn)行結(jié)果:

else子句:
在python中,可以在while和for循環(huán)中使用else子句,它只是在循環(huán)結(jié)束之后才會被執(zhí)行,如果同時使用了break語句那么else子句塊會被跳過。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
start = 0
while start < 3:
name = int(input("請輸入數(shù)字進(jìn)行猜解:"))
if name == 7:
print("猜解正確")
break
elif name > 7:
print("數(shù)字過大,請猜小一些")
else:
print("數(shù)字過小,請猜大一些")
start += 1
#條件不成立,執(zhí)行下列代碼,只有使用break語句跳出,下列代碼才不會執(zhí)行
else:
print("猜解次數(shù)過多")
運(yùn)行結(jié)果:

練習(xí)題:
輸入除了7以外的所有1~10以內(nèi)的正整數(shù)案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
start = 1
while True:
#判斷 條件 是否為真 為真 執(zhí)行對應(yīng)代碼塊內(nèi)容 否則忽略
if start == 7:
start += 1
#跳出本次循環(huán) 其后面的循環(huán)代碼將被忽略 回到循環(huán)頂端進(jìn)行下一次循環(huán)
continue
print(start)
#變量start的值為10(為True)時,對應(yīng)的代碼塊內(nèi)容將被執(zhí)行
if start == 10:
#跳出整個循環(huán) 其后面的循環(huán)代碼將不執(zhí)行
break
start += 1
運(yùn)行結(jié)果:

求1-100的所有數(shù)的和案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
sum = 0
start = 1
while True:
sum += start
# 判斷條件為 True 時 執(zhí)行對應(yīng)代碼塊內(nèi)容 否則 忽略
if start == 100:
print(sum)
break
start += 1
運(yùn)行結(jié)果:

輸出1~100內(nèi)的所有奇數(shù)案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#1-首先循環(huán)輸出1-100
#2-判斷是奇數(shù)還是偶數(shù),只顯示奇數(shù)
start = 1
#判斷條件是否為 True 為True 執(zhí)行 否則忽略
while start < 101:
#變量than 等于 start % 2 的余數(shù)
than = start % 2
#判斷 條件是否為 True 為 True 執(zhí)行對應(yīng)代碼塊內(nèi)容 否則忽略
#余數(shù)等于0即偶數(shù),為1即奇數(shù)
if than == 1:
print(start)
else:
#pass語句表示什么都不執(zhí)行,這個必須要寫,如果不寫從語法上就報錯了
pass
start += 1
運(yùn)行結(jié)果:

輸出 1-100 內(nèi)的所有偶數(shù)案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
start = 1
#判斷條件是否為 True 為True 執(zhí)行 否則忽略
while start < 101:
#變量than 等于 start % 2 的余數(shù)
than = start % 2
#判斷 條件是否為 True 為 True 執(zhí)行對應(yīng)代碼塊內(nèi)容 否則忽略
#余數(shù)等于0即偶數(shù),為1即奇數(shù)
if than == 0:
print(start)
else:
#pass語句表示什么都不執(zhí)行,這個必須要寫,如果不寫從語法上就報錯了
pass
start += 1
運(yùn)行結(jié)果:

求1-2+3-4+5 ... 99的所有數(shù)的和案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#1-首先輸出1-99所有數(shù)的和
#判斷是奇數(shù)還是偶數(shù) 偶數(shù)- 奇數(shù)+
sum = 0
start = 1
while start < 100:
than = start % 2
#如果 條件為True 執(zhí)行
if than == 1:
sum = sum + start
#否則 執(zhí)行
else:
sum = sum - start
start += 1
print(sum)
運(yùn)行結(jié)果:

用戶登陸(三次機(jī)會重試)案例:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#循環(huán)有 3次 登錄的機(jī)會
#循環(huán)里面等待用戶輸入賬號及密碼
#判斷條件為真 則輸出 "歡迎登錄!" 否則 輸出 "用戶名或密碼錯誤,請重新登錄...." 并且減少一次循環(huán)機(jī)會
start = 0
while start < 3:
#等待用戶輸入用戶名 和 密碼
user = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
#判斷條件是否為真 為真輸出 "歡迎登錄!" 并 跳出 整個循環(huán)
if user == "root" and pwd == "root123":
print("歡迎登陸!")
break
#否則 輸出 "用戶名或密碼錯誤,請重新登錄...." 并且循環(huán)次數(shù)減少一次
else:
print("用戶名或密碼錯誤,請重新登錄....")
start += 1
continue
運(yùn)行結(jié)果:

9.4-for循環(huán):
for循環(huán)可以遍歷任何序列里的每一個元素,如一個列表或者一個字符串。
range()函數(shù)和xrange()函數(shù):
Python 2.7.2:
range()函數(shù):
說明: range(start=None, stop=None, step=None) 獲取指定范圍的整數(shù),它的工作方式類似于分片,會生成一個列表對象, start 表示從什么開始,默認(rèn)從0開始, stop 表示結(jié)束,這個參數(shù)是必須輸入的, step 表示步進(jìn)值,默認(rèn)為1。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#一個參數(shù)時 表示從 0 開始
print(range(5))
print(type(range(5)))
#兩個參數(shù)時 第一個參數(shù)表示 起始值 第二參數(shù)表示 結(jié)束值
print(range(3,7))
#第三個參數(shù)為步進(jìn)值(步進(jìn)值默認(rèn)為1)
print(range(0,10,3))
運(yùn)行結(jié)果:

xrange()函數(shù):
說明: xrange(start, stop[, step]),用法和 range() 函數(shù)相同,只不過所生成的不是一個數(shù)組,而是一個生成器,只有通過 for 循環(huán)迭代它時 xrange() 才會生成當(dāng)前的元素,xrange() 函數(shù)比 range() 函數(shù)的性能要優(yōu)化很多,因為不需要一上來就開辟一塊很大的內(nèi)存空間。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
print(xrange(10))
# xrange()雖然也是內(nèi)置函數(shù),但是它被定義成了Python里一種類型,這種類型就叫xrange
print(type(xrange(10)))
for i in xrange(10):
print(i)
運(yùn)行結(jié)果:

注:xrange() 只有在Python2.7中適用,Python3中已經(jīng)沒有了。
Python 3.5.1:
range()函數(shù):
說明: range(start, stop[, step]) 創(chuàng)建一個新的 range 對象, range 類型是一個表示整數(shù)范圍的類型,range 類型實際上是一個不可變的數(shù)字序列,和 Python2.7中的 xrange() 類似。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
r1 = range(10)
print(r1)
print(type(r1))
for i in r1:
print(i)
# 由于range是一個不可變的序列類型,所以可以進(jìn)行索引、切片等序列操作,但不能對其中的元素進(jìn)行修改
# 索引
r2 = r1[3]
print("索引:",r2)
#切片
r3 = r1[1:6]
print("切片:",r3)
print(type(r3))
for i in r3:
print(i)
運(yùn)行結(jié)果:

從大到小進(jìn)行取值:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
for i in range(10,0,-1):
print(i)
print("____" * 8)
for i in range(10,0,-2):
print(i)
運(yùn)行結(jié)果:

Python2和Python3的區(qū)別:
Python3中只有一個 range() ,但這個 range() 等同于 Python2.7的 xrange() 。
range()在for循環(huán)中的作用
可以根據(jù)range()函數(shù)給定的次數(shù)重復(fù)循環(huán)。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
for i in range(3):
user = int(input("請輸入數(shù)字:"))
if user == 7:
print("猜正確了")
break
elif user > 7:
print("猜大了")
else:
print("猜小了")
else:
print("猜解次數(shù)過多")
運(yùn)行結(jié)果:

練習(xí)題:
輸出列表中所有元素的索引:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
li = [11,22,33,44]
# 取列表 li 的長度
ret = len(li)
for i in range(0,ret):
print("索引:",i,"值:",li[i])
運(yùn)行結(jié)果:
