Python基礎(chǔ)(9)-流程控制

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é)果:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市实愚,隨后出現(xiàn)的幾起案子兼呵,更是在濱河造成了極大的恐慌,老刑警劉巖腊敲,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件击喂,死亡現(xiàn)場離奇詭異,居然都是意外死亡碰辅,警方通過查閱死者的電腦和手機(jī)懂昂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來没宾,“玉大人凌彬,你說我怎么就攤上這事⊙ィ” “怎么了铲敛?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長会钝。 經(jīng)常有香客問我伐蒋,道長,這世上最難降的妖魔是什么顽素? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任咽弦,我火速辦了婚禮徒蟆,結(jié)果婚禮上胁出,老公的妹妹穿的比我還像新娘。我一直安慰自己段审,他們只是感情好全蝶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寺枉,像睡著了一般抑淫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姥闪,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天始苇,我揣著相機(jī)與錄音,去河邊找鬼筐喳。 笑死催式,一個(gè)胖子當(dāng)著我的面吹牛函喉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荣月,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼管呵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哺窄?” 一聲冷哼從身側(cè)響起捐下,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎萌业,沒想到半個(gè)月后坷襟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咽白,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年啤握,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晶框。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡排抬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出授段,到底是詐尸還是另有隱情蹲蒲,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布侵贵,位于F島的核電站届搁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窍育。R本人自食惡果不足惜卡睦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漱抓。 院中可真熱鬧表锻,春花似錦、人聲如沸乞娄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仪或。三九已至确镊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間范删,已是汗流浹背蕾域。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留到旦,地道東北人旨巷。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓廓块,卻偏偏與公主長得像,于是被迫代替她去往敵國和親契沫。 傳聞我的和親對象是個(gè)殘疾皇子带猴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 注:本文的原文地址為 http://segmentfault.com/a/1190000000618286 許多 ...
    Michael_林閱讀 70,150評論 3 89
  • (三)娘子關(guān)東的短暫幸福 我兩歲多的夏天,在山西工作的父親決定要我們過去懈万,于是我們跨過娘子關(guān)與父親團(tuán)聚拴清,父母結(jié)束了...
    柳上聽黃鸝閱讀 221評論 0 0
  • 密密麻麻的夜,像密密麻麻的壓力將我包圍会通,張牙舞爪的將我吞噬口予,遠(yuǎn)處的高樓,冷漠的睜一只眼閉一只眼
    悠然繪夢閱讀 184評論 0 0
  • 致謝:感謝@蘇時(shí)@陳嵐@封隨意@冷風(fēng)過境_007@秋蕭蕭之平兒@007踐行者嬌兒等諸位朋友的反饋意見涕侈,我已經(jīng)努力做...
    月牙年輪閱讀 410評論 8 4