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é)果:
用戶登錄驗(yàn)證案例:
#!/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")
#如上條件都為假時(shí) 則執(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)時(shí)退出循環(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時(shí) 執(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)時(shí) 對應(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)時(shí) 對應(yīng)的代碼塊內(nèi)容將被執(zhí)行
if name == 10:
#跳出整個(gè)循環(huán) 其后面的循環(huán)代碼將不執(zhí)行
break
name = name + 1
#跳出整個(gè)循環(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í)行,如果同時(shí)使用了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)時(shí),對應(yīng)的代碼塊內(nèi)容將被執(zhí)行
if start == 10:
#跳出整個(gè)循環(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 時(shí) 執(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í)行,這個(gè)必須要寫撒顿,如果不寫從語法上就報(bào)錯了
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í)行,這個(gè)必須要寫凤壁,如果不寫從語法上就報(bào)錯了
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("請輸入密碼:")
#判斷條件是否為真 為真輸出 "歡迎登錄!" 并 跳出 整個(gè)循環(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)可以遍歷任何序列里的每一個(gè)元素,如一個(gè)列表或者一個(gè)字符串唧席。
range()函數(shù)和xrange()函數(shù):
Python 2.7.2:
range()函數(shù):
說明: range(start=None, stop=None, step=None)
獲取指定范圍的整數(shù)擦盾,它的工作方式類似于分片,會生成一個(gè)列表對象淌哟, start
表示從什么開始迹卢,默認(rèn)從0開始, stop
表示結(jié)束徒仓,這個(gè)參數(shù)是必須輸入的腐碱, step
表示步進(jìn)值,默認(rèn)為1掉弛。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#一個(gè)參數(shù)時(shí) 表示從 0 開始
print(range(5))
print(type(range(5)))
#兩個(gè)參數(shù)時(shí) 第一個(gè)參數(shù)表示 起始值 第二參數(shù)表示 結(jié)束值
print(range(3,7))
#第三個(gè)參數(shù)為步進(jìn)值(步進(jìn)值默認(rèn)為1)
print(range(0,10,3))
運(yùn)行結(jié)果:
xrange()函數(shù):
說明: xrange(start, stop[, step])
症见,用法和 range()
函數(shù)相同,只不過所生成的不是一個(gè)數(shù)組殃饿,而是一個(gè)生成器谋作,只有通過 for
循環(huán)迭代它時(shí) xrange()
才會生成當(dāng)前的元素,xrange()
函數(shù)比 range()
函數(shù)的性能要優(yōu)化很多乎芳,因?yàn)椴恍枰簧蟻砭烷_辟一塊很大的內(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)建一個(gè)新的 range
對象, range
類型是一個(gè)表示整數(shù)范圍的類型携取,range
類型實(shí)際上是一個(gè)不可變的數(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是一個(gè)不可變的序列類型雷滋,所以可以進(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中只有一個(gè) range()
,但這個(gè) 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é)果: