Python快速精通3 - 流程控制

(一)順序結(jié)構(gòu)

從上到下一行行執(zhí)行,沒(méi)有任何判斷和跳轉(zhuǎn)

(二)分支結(jié)構(gòu)

使用布爾表達(dá)式或布爾值作為分支條件來(lái)進(jìn)行分支控制

分支形式1:

if 布爾判斷:
語(yǔ)句塊
例如: 公園門(mén)口對(duì)游客國(guó)籍身份進(jìn)行判斷,如果是島國(guó)人,不讓進(jìn)

nationality = input('What is your nationality?')
if nationality == 'Japan':
    print('Please go away!')
What is your nationality?xxx

分支形式2:

nationality = input('What is your nationality?')
if nationality == 'Japan':
    print('Please go away')
else:
    print('Welcome...')
    
What is your nationality?xxx
Welcome...

分支形式3:

nationality = input('What is your nationality?')
if nationality == 'Japan':
    print('Japan and Dog,Please go away!')
elif nationality == 'Dog':
    print('Japan and Dog,Please go away!')
else:
    print('Welcome...')
What is your nationality?xxx
Welcome...

if表達(dá)式 (類(lèi)似其它編程語(yǔ)言的三目運(yùn)算符)

age = 20
man = '青少年' if age<18 else '成年人'
print(man)
成年人

斷言(也是一種分支控制)

斷言是這樣的結(jié)構(gòu)
assert bool表達(dá)式 <- -在這里為T(mén)rue才會(huì)往下繼續(xù)執(zhí)行,否則會(huì)拋出一個(gè)AssertionError錯(cuò)誤

age = 18
assert 18<=age<=80
print('是成年人了,可以單獨(dú)旅行.')
是成年人了,可以單獨(dú)旅行.

(三)循環(huán)結(jié)構(gòu)

  • 循環(huán)結(jié)構(gòu): 就在滿足循環(huán)條件的情況下,反復(fù)執(zhí)行一段代碼塊.
  • 循環(huán)條件: 布爾表達(dá)式.
  • 循環(huán)體: 反復(fù)執(zhí)行的代碼塊.
  1. while循環(huán)
  2. for循環(huán)

3.1 while循環(huán)

語(yǔ)法形式
while 循環(huán)條件:
循環(huán)體

while循環(huán)在每次執(zhí)行循環(huán)體之前,對(duì)"循環(huán)條件"進(jìn)行判斷,如果循環(huán)條件為真,則執(zhí)行循環(huán)體部分;
循環(huán)體一般包括: 要執(zhí)行的功能,另外一般包括對(duì)循環(huán)條件的控制,如果沒(méi)有對(duì)循環(huán)條件的控制,這個(gè)循環(huán)就會(huì)無(wú)限執(zhí)行下去,成為死循環(huán)

下面分別舉例:
例,銀行賬戶登錄,如果連續(xù)輸入錯(cuò)誤三次,賬戶鎖定

password = '123456'
errorTimes = 0
while errorTimes<3:
    passwd = input('請(qǐng)輸入賬戶密碼: ')
    if passwd==password:
        print('密碼驗(yàn)證通過(guò),業(yè)務(wù)邏輯完成!')
        errorTimes=0
        break
    else:
        errorTimes+=1
        msg = '密碼錯(cuò)誤次數(shù)到達(dá)3次,賬戶鎖定.'if errorTimes==3 else '密碼錯(cuò)誤{0}次!'.format(errorTimes)
        print(msg)
        
請(qǐng)輸入賬戶密碼: 123456
密碼驗(yàn)證通過(guò),業(yè)務(wù)邏輯完成!

例,通過(guò)while循環(huán)遍歷列表(元組一樣)

language = ['C','C++','Java','Python','JavaScript','Scala','Swift','kotlin','R','Julia']
index=0
while index<len(language):
    print('Index: {0},\t Element: {1}'.format(index,language[index]))
    index+=1
Index: 0,    Element: C
Index: 1,    Element: C++
Index: 2,    Element: Java
Index: 3,    Element: Python
Index: 4,    Element: JavaScript
Index: 5,    Element: Scala
Index: 6,    Element: Swift
Index: 7,    Element: kotlin
Index: 8,    Element: R
Index: 9,    Element: Julia

例,猜數(shù)字(提示大小)

result = 99
times = 0
while times<7:
    number = int(input('請(qǐng)輸入一個(gè)數(shù)字:'))
    if number>result:
        times+=1
        print('猜大了,還有{0}次機(jī)會(huì)'.format(7-times))
    elif number<result:
        times+=1
        print('猜小了,還有{0}次機(jī)會(huì)'.format(7-times))
    else:
        times+=1
        print('結(jié)果正確,用了{(lán)0}次機(jī)會(huì)猜到正確結(jié)果'.format(times))
        break

總之,循環(huán)會(huì)自動(dòng)在每次執(zhí)行循環(huán)體之前判斷一下循環(huán)條件是否為T(mén)rue,來(lái)決定是否執(zhí)行循環(huán)體.while循環(huán)適用于,不確定次數(shù)的循環(huán),例如,我不清楚將要進(jìn)行多少次嘗試才會(huì)猜中數(shù)字,但是我只有一個(gè)邊界條件,那就是小于7次,那就交給while自己去判斷邊界條件吧.

3.2 for循環(huán)

for循環(huán)用于遍歷可迭代的對(duì)象
可迭代對(duì)象: 列表list,元組tuple,字典dict,集合set,字符串string,區(qū)間range都屬于可迭代對(duì)象
先初步了解一下,可迭代對(duì)象中包含一個(gè)iter方法,該方法返回值一個(gè)對(duì)象實(shí)例,包含next()方法語(yǔ)法形式
for 變量(循環(huán)計(jì)數(shù)器) in 可迭代對(duì)象:
循環(huán)體

變量: 在每次循環(huán)中,自動(dòng)被賦值,這個(gè)值就是可迭代對(duì)象中的每一個(gè)元素.
例,計(jì)算階乘

num_input = input('Please input a number:')
nums = int(num_input)
result = 1
for i in range(1,nums+1):
    result*=i
print('Factorial is: {0}'.format(result))
Please input a number:5
Factorial is: 120
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Swift 提供了類(lèi)似 C 語(yǔ)言的流程控制結(jié)構(gòu),包括可以多次執(zhí)行任務(wù)的for和while循環(huán),基于特定條件選擇執(zhí)行...
    窮人家的孩紙閱讀 777評(píng)論 1 1
  • [The Swift Programming Language 中文版]本頁(yè)包含內(nèi)容: Swift提供了多種流程控...
    風(fēng)林山火閱讀 672評(píng)論 0 0
  • 思考:平常針對(duì)業(yè)務(wù)需求編寫(xiě)的代碼通常以行為單位,那么代碼的執(zhí)行邏輯是什么樣子的呢? 引入:正常情況下,代碼就是按照...
    好像在哪見(jiàn)過(guò)你丶閱讀 728評(píng)論 0 0
  • Swift提供了多種控制流聲明。包括while循環(huán)來(lái)多次執(zhí)行一個(gè)任務(wù);if,guard和switch聲明來(lái)根據(jù)確定...
    BoomLee閱讀 2,069評(píng)論 0 3
  • 控制流 [TOC] Swift提供了多種流程控制結(jié)構(gòu),包括可以多次執(zhí)行任務(wù)的while循環(huán),基于特定條件選擇執(zhí)行不...
    伍哥___閱讀 578評(píng)論 0 0

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