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

用戶登錄驗證案例:

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容