[TOC]
在網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。成都創(chuàng)新互聯(lián)公司專業(yè)成都網(wǎng)站建設(shè)10多年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。#一 引子:
流程控制即控制流程,具體指控制程序的執(zhí)行流程,而程序的執(zhí)行流程分為三種結(jié)構(gòu):順序結(jié)構(gòu)(之前我們寫的代碼都是順序結(jié)構(gòu))、分支結(jié)構(gòu)(用到if判斷)、循環(huán)結(jié)構(gòu)(用到while與for)
插圖:惡搞圖20
#二 分支結(jié)構(gòu)
分支結(jié)構(gòu)就是根據(jù)條件判斷的真假去執(zhí)行不同分支對應(yīng)的子代碼
人類某些時候需要根據(jù)條件來決定做什么事情,比如:如果今天下雨,就帶傘
所以程序中必須有相應(yīng)的機制來控制計算機具備人的這種判斷能力
###2.3.1 if語法
插圖:惡搞圖18
用if關(guān)鍵字來實現(xiàn)分支結(jié)構(gòu),完整語法如下
if 條件1: # 如果條件1的結(jié)果為True,就依次執(zhí)行:代碼1、代碼2,......
代碼1
代碼2
......
elif 條件2: # 如果條件2的結(jié)果為True,就依次執(zhí)行:代碼3、代碼4,......
代碼3
代碼4
......
elif 條件3: # 如果條件3的結(jié)果為True,就依次執(zhí)行:代碼5、代碼6,......
代碼5
代碼6
......
else: # 其它情況,就依次執(zhí)行:代碼7、代碼8,......
代碼7
代碼8
......
# 注意:
# 1、python用相同縮進(4個空格表示一個縮進)來標識一組代碼塊,同一組代碼會自上而下依次運行
# 2、條件可以是任意表達式,但執(zhí)行結(jié)果必須為布爾類型
# 在if判斷中所有的數(shù)據(jù)類型也都會自動轉(zhuǎn)換成布爾類型
# 2.1、None,0,空(空字符串,空列表,空字典等)三種情況下轉(zhuǎn)換成的布爾值為False
# 2.2、其余均為True
###2.3.2 if應(yīng)用案例
插圖:惡搞圖19
案例1:
如果:女人的年齡>30歲,那么:叫阿姨
age_of_girl=31
if age_of_girl > 30:
print('阿姨好')
案例2:
如果:女人的年齡>30歲,那么:叫阿姨,否則:叫小姐
age_of_girl=18
if age_of_girl > 30:
print('阿姨好')
else:
print('小姐好')
案例3:
如果:女人的年齡>=18并且<22歲并且身高>170并且體重<100并且是漂亮的,那么:表白,否則:叫阿姨**
age_of_girl=18
height=171
weight=99
is_pretty=True
if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
print('表白...')
else:
print('阿姨好')
案例4:
如果:成績>=90,那么:優(yōu)秀
如果成績>=80且<90,那么:良好
如果成績>=70且<80,那么:普通
其他情況:很差
score=input('>>: ')
score=int(score)
if score >= 90:
print('優(yōu)秀')
elif score >= 80:
print('良好')
elif score >= 70:
print('普通')
else:
print('很差')
案例5:if嵌套
#在表白的基礎(chǔ)上繼續(xù):
#如果表白成功,那么:在一起
#否則:打印。。。
age_of_girl=18
height=171
weight=99
is_pretty=True
success=False
if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True:
if success:
print('表白成功,在一起')
else:
print('什么愛情不愛情的,愛nmlgb的愛情,愛nmlg啊...')
else:
print('阿姨好')
插圖:惡搞圖23
練習(xí)1: 登陸功能
name=input('請輸入用戶名字:').strip()
password=input('請輸入密碼:').strip()
if name == 'tony' and password == '123':
print('tony login success')
else:
print('用戶名或密碼錯誤')
練習(xí)2:
#!/usr/bin/env python
#根據(jù)用戶輸入內(nèi)容打印其權(quán)限
'''
egon --> 超級管理員
tom --> 普通管理員
jack,rain --> 業(yè)務(wù)主管
其他 --> 普通用戶
'''
name=input('請輸入用戶名字:')
if name == 'egon':
print('超級管理員')
elif name == 'tom':
print('普通管理員')
elif name == 'jack' or name == 'rain':
print('業(yè)務(wù)主管')
else:
print('普通用戶')
循環(huán)結(jié)構(gòu)就是重復(fù)執(zhí)行某段代碼塊
人類某些時候需要重復(fù)做某件事情
所以程序中必須有相應(yīng)的機制來控制計算機具備人的這種循環(huán)做事的能力
插圖:惡搞圖21
python中有while與for兩種循環(huán)機制,其中while循環(huán)稱之為條件循環(huán),語法如下
while 條件:
代碼1
代碼2
代碼3
......
# while的運行步驟:
# 步驟1:如果條件為真,那么依次執(zhí)行:代碼1、代碼2、代碼3、......
# 步驟2:執(zhí)行完畢后再次判斷條件,如果條件為True則再次執(zhí)行:代碼1、代碼2、代碼3、......,如果條件為False,則循環(huán)終止
插圖:while循環(huán)
插圖:惡搞圖19
案例一:while循環(huán)的基本使用
用戶認證程序
#用戶認證程序的基本邏輯就是接收用戶輸入的用戶名密碼然后與程序中存放的用戶名密碼進行判斷,判斷成功則登陸成功,判斷失敗則輸出賬號或密碼錯誤
username = "jason"
password = "123"
inp_name = input("請輸入用戶名:")
inp_pwd = input("請輸入密碼:")
if inp_name == username and inp_pwd == password:
print("登陸成功")
else:
print("輸入的用戶名或密碼錯誤!")
#通常認證失敗的情況下,會要求用戶重新輸入用戶名和密碼進行驗證,如果我們想給用戶三次試錯機會,本質(zhì)就是將上述代碼重復(fù)運行三遍,你總不會想著把代碼復(fù)制3次吧。。。。
username = "jason"
password = "123"
# 第一次驗證
inp_name = input("請輸入用戶名:")
inp_pwd = input("請輸入密碼:")
if inp_name == username and inp_pwd == password:
print("登陸成功")
else:
print("輸入的用戶名或密碼錯誤!")
# 第二次驗證
inp_name = input("請輸入用戶名:")
inp_pwd = input("請輸入密碼:")
if inp_name == username and inp_pwd == password:
print("登陸成功")
else:
print("輸入的用戶名或密碼錯誤!")
# 第三次驗證
inp_name = input("請輸入用戶名:")
inp_pwd = input("請輸入密碼:")
if inp_name == username and inp_pwd == password:
print("登陸成功")
else:
print("輸入的用戶名或密碼錯誤!")
#即使是小白的你,也覺得的太low了是不是,以后要修改功能還得修改3次,因此記住,寫重復(fù)的代碼是程序員最不恥的行為。
#那么如何做到不用寫重復(fù)代碼又能讓程序重復(fù)一段代碼多次呢? 循環(huán)語句就派上用場啦(使用while循環(huán)實現(xiàn))
username = "jason"
password = "123"
# 記錄錯誤驗證的次數(shù)
count = 0
while count < 3:
inp_name = input("請輸入用戶名:")
inp_pwd = input("請輸入密碼:")
if inp_name == username and inp_pwd == password:
print("登陸成功")
else:
print("輸入的用戶名或密碼錯誤!")
count += 1
案例二:while+break的使用
使用了while循環(huán)后,代碼確實精簡多了,但問題是用戶輸入正確的用戶名密碼以后無法結(jié)束循環(huán),那如何結(jié)束掉一個循環(huán)呢?這就需要用到break了!
username = "jason"
password = "123"
# 記錄錯誤驗證的次數(shù)
count = 0
while count < 3:
inp_name = input("請輸入用戶名:")
inp_pwd = input("請輸入密碼:")
if inp_name == username and inp_pwd == password:
print("登陸成功")
break # 用于結(jié)束本層循環(huán)
else:
print("輸入的用戶名或密碼錯誤!")
count += 1
案例三:while循環(huán)嵌套+break
如果while循環(huán)嵌套了很多層,要想退出每一層循環(huán)則需要在每一層循環(huán)都有一個break
username = "jason"
password = "123"
count = 0
while count < 3: # 第一層循環(huán)
inp_name = input("請輸入用戶名:")
inp_pwd = input("請輸入密碼:")
if inp_name == username and inp_pwd == password:
print("登陸成功")
while True: # 第二層循環(huán)
cmd = input('>>: ')
if cmd == 'quit':
break # 用于結(jié)束本層循環(huán),即第二層循環(huán)
print('run <%s>' % cmd)
break # 用于結(jié)束本層循環(huán),即第一層循環(huán)
else:
print("輸入的用戶名或密碼錯誤!")
count += 1
案例四:while循環(huán)嵌套+tag的使用
針對嵌套多層的while循環(huán),如果我們的目的很明確就是要在某一層直接退出所有層的循環(huán),其實有一個竅門,就讓所有while循環(huán)的條件都用同一個變量,該變量的初始值為True,一旦在某一層將該變量的值改成False,則所有層的循環(huán)都結(jié)束
username = "jason"
password = "123"
count = 0
tag = True
while tag:
inp_name = input("請輸入用戶名:")
inp_pwd = input("請輸入密碼:")
if inp_name == username and inp_pwd == password:
print("登陸成功")
while tag:
cmd = input('>>: ')
if cmd == 'quit':
tag = False # tag變?yōu)镕alse, 所有while循環(huán)的條件都變?yōu)镕alse
break
print('run <%s>' % cmd)
break # 用于結(jié)束本層循環(huán),即第一層循環(huán)
else:
print("輸入的用戶名或密碼錯誤!")
count += 1
案例五:while+continue的使用
break代表結(jié)束本層循環(huán),而continue則用于結(jié)束本次循環(huán),直接進入下一次循環(huán)
# 打印1到10之間,除7以外的所有數(shù)字
number=11
while number>1:
number -= 1
if number==7:
continue # 結(jié)束掉本次循環(huán),即本次循環(huán)continue之后的代碼都不會運行了,而是直接進入下一次循環(huán)
print(number)
案例五:while+else的使用
在while循環(huán)的后面,我們可以跟else語句,當(dāng)while 循環(huán)正常執(zhí)行完并且中間沒有被break 中止的話,就會執(zhí)行else后面的語句,所以我們可以用else來驗證,循環(huán)是否正常結(jié)束
count = 0
while count <= 5 :
count += 1
print("Loop",count)
else:
print("循環(huán)正常執(zhí)行完啦")
print("-----out of while loop ------")
輸出
Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
循環(huán)正常執(zhí)行完啦 #沒有被break打斷,所以執(zhí)行了該行代碼
-----out of while loop ------
如果執(zhí)行過程中被break,就不會執(zhí)行else的語句
count = 0
while count <= 5 :
count += 1
if count == 3:
break
print("Loop",count)
else:
print("循環(huán)正常執(zhí)行完啦")
print("-----out of while loop ------")
輸出
Loop 1
Loop 2
-----out of while loop ------ #由于循環(huán)被break打斷了,所以不執(zhí)行else后的輸出語句
插圖:惡搞圖23
練習(xí)1:
尋找1到100之間數(shù)字7大的倍數(shù)(結(jié)果是98)
number=100
while number>0:
if number%7==0:
print(number)
break
number-=1
練習(xí)2:
age=18
count=0
while count<3:
count+=1
guess = int(input(">>:"))
if guess > age :
print("猜的太大了,往小里試試...")
elif guess < age :
print("猜的太小了,往大里試試...")
else:
print("恭喜你,猜對了...")
插圖:惡搞圖22
循環(huán)結(jié)構(gòu)的第二種實現(xiàn)方式是for循環(huán),for循環(huán)可以做的事情while循環(huán)都可以實現(xiàn),之所以用for循環(huán)是因為在循環(huán)取值(即遍歷值)時for循環(huán)比while循環(huán)的使用更為簡潔,
for循環(huán)語法如下
for 變量名 in 可迭代對象: # 此時只需知道可迭代對象可以是字符串\列表\字典,我們之后會專門講解可迭代對象
代碼一
代碼二
...
#例1
for item in ['a','b','c']:
print(item)
# 運行結(jié)果
a
b
c
# 參照例1來介紹for循環(huán)的運行步驟
# 步驟1:從列表['a','b','c']中讀出第一個值賦值給item(item=‘a(chǎn)’),然后執(zhí)行循環(huán)體代碼
# 步驟2:從列表['a','b','c']中讀出第二個值賦值給item(item=‘b’),然后執(zhí)行循環(huán)體代碼
# 步驟3: 重復(fù)以上過程直到列表中的值讀盡
插圖:惡搞圖19
案例一:打印數(shù)字0-5
# 簡單版:for循環(huán)的實現(xiàn)方式
for count in range(6): # range(6)會產(chǎn)生從0-5這6個數(shù)
print(count)
# 復(fù)雜版:while循環(huán)的實現(xiàn)方式
count = 0
while count < 6:
print(count)
count += 1
案例二:遍歷字典
# 簡單版:for循環(huán)的實現(xiàn)方式
for k in {'name':'jason','age':18,'gender':'male'}: # for 循環(huán)默認取的是字典的key賦值給變量名k
print(k)
# 復(fù)雜版:while循環(huán)確實可以遍歷字典,后續(xù)將會迭代器部分詳細介紹
案例三:for循環(huán)嵌套
#請用for循環(huán)嵌套的方式打印如下圖形:
*****
*****
*****
for i in range(3):
for j in range(5):
print("*",end='')
print() # print()表示換行
注意:break 與 continue也可以用于for循環(huán),使用語法同while循環(huán)
插圖:惡搞圖23
練習(xí)一:
打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s' %(i,j,i*j),end=' ')
print()
練習(xí)二:
打印金字塔
# 分析
'''
#max_level=5
* # current_level=1,空格數(shù)=4,*號數(shù)=1
*** # current_level=2,空格數(shù)=3,*號數(shù)=3
***** # current_level=3,空格數(shù)=2,*號數(shù)=5
******* # current_level=4,空格數(shù)=1,*號數(shù)=7
********* # current_level=5,空格數(shù)=0,*號數(shù)=9
# 數(shù)學(xué)表達式
空格數(shù)=max_level-current_level
*號數(shù)=2*current_level-1
'''
# 實現(xiàn):
max_level=5
for current_level in range(1,max_level+1):
for i in range(max_level-current_level):
print(' ',end='') #在一行中連續(xù)打印多個空格
for j in range(2*current_level-1):
print('*',end='') #在一行中連續(xù)打印多個空格
print()
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章標題:04-5python語法入門之流程控制-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://jinyejixie.com/article40/djshho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、商城網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站策劃、定制網(wǎng)站、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容