Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)示例代碼
一、分支結(jié)構(gòu):
Python中的分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)是編寫程序時(shí)常用的控制結(jié)構(gòu)。在Python中,分支結(jié)構(gòu)通過if、elif和else關(guān)鍵字來實(shí)現(xiàn)條件判斷。在使用if語句時(shí),程序會(huì)根據(jù)條件表達(dá)式的真假執(zhí)行相應(yīng)的代碼塊。
if condition1: # 如果條件1為真,則執(zhí)行這里的代碼 elif condition2: # 如果條件1為假,條件2為真,則執(zhí)行這里的代碼 else: # 如果以上條件都不滿足,則執(zhí)行這里的代碼
1.if語句的使用
在Python中,要構(gòu)造分支結(jié)構(gòu)可以使用if
、elif
和else
關(guān)鍵字。所謂關(guān)鍵字就是有特殊含義的單詞,像if
和else
就是專門用于構(gòu)造分支結(jié)構(gòu)的關(guān)鍵字,很顯然你不能夠使用它作為變量名。下面的例子中演示了如何構(gòu)造一個(gè)分支結(jié)構(gòu)。
username = input('請(qǐng)輸入用戶名: ') password = input('請(qǐng)輸入口令: ') # 用戶名是admin且密碼是123456則身份驗(yàn)證成功否則身份驗(yàn)證失敗 if username == 'admin' and password == '123456': print('身份驗(yàn)證成功!') else: print('身份驗(yàn)證失敗!')
1.1if 語句
if語句是最簡單的條件判斷語句,它可以控制程序的執(zhí)行流程。
if 判斷條件: 滿足條件時(shí)要做的事情1… 滿足條件時(shí)要做的事情2… ...(省略)... 滿足條件時(shí)要做的事情n…
1.2if-else語句
if 條件: 滿足條件時(shí)要做的事情1 滿足條件時(shí)要做的事情2 ...(省略)... 滿足條件時(shí)要做的事情3 else: 不滿足條件時(shí)要做的事情1 不滿足條件時(shí)要做的事情2 ...(省略)... 不滿足條件時(shí)要做的事情n
1.3if-elif語句
if 判斷條件1: 滿足條件1時(shí)要做的事情 elif 判斷條件2: 滿足條件2時(shí)要做的事情 elif 判斷條件3: 滿足條件3時(shí)要做的事情
- 當(dāng)滿足判斷條件1時(shí),執(zhí)行滿足條件1時(shí)要做的事情,然后整個(gè)if結(jié)束;
- 如果不滿足判斷條件1,那么判斷是都滿足條件2,如果滿足判斷條件2,就執(zhí)行滿足條件2時(shí)要做的事情,然后整個(gè)if結(jié)束
- 當(dāng)不滿足判斷條件1和判斷條件2,如果滿足判斷條件3,則執(zhí)行滿足判斷條件3時(shí)要做的事情,然后整個(gè)if結(jié)束。
1.4if嵌套
日常案例:坐車流程
if嵌套
指的是在if或者if-else語句里面包含if或者if-else。
if 條件1: 滿足條件1 做的事情1 滿足條件1 做的事情2 ...(省略)... if 條件2: 滿足條件2 做的事情1 滿足條件2 做的事情2 ...(省略)...
2.if語句實(shí)際操作
2.1英制單位英寸與公制單位厘米互換。
value = float(input('請(qǐng)輸入長度: ')) unit = input('請(qǐng)輸入單位: ') if unit == 'in' or unit == '英寸': print('%f英寸 = %f厘米' % (value, value * 2.54)) elif unit == 'cm' or unit == '厘米': print('%f厘米 = %f英寸' % (value, value / 2.54)) else: print('請(qǐng)輸入有效的單位')
2.2百分制成績轉(zhuǎn)換為等級(jí)制成績。
要求:如果輸入的成績?cè)?0分以上(含90分)輸出A;80分-90分(不含90分)輸出B;70分-80分(不含80分)輸出C;60分-70分(不含70分)輸出D;60分以下輸出E。
score = float(input('請(qǐng)輸入成績: ')) if score >= 90: grade = 'A' elif score >= 80: grade = 'B' elif score >= 70: grade = 'C' elif score >= 60: grade = 'D' else: grade = 'E' print('對(duì)應(yīng)的等級(jí)是:', grade)
2.3輸入三條邊長,如果能構(gòu)成三角形就計(jì)算周長和面積。
a = float(input('a = ')) b = float(input('b = ')) c = float(input('c = ')) if a + b > c and a + c > b and b + c > a: peri = a + b + c print(f'周長: {peri}') half = peri / 2 area = (half * (half - a) * (half - b) * (half - c)) ** 0.5 print(f'面積: {area}') else: print('不能構(gòu)成三角形')
二、循環(huán)結(jié)構(gòu):
我們?cè)趯懗绦虻臅r(shí)候,一定會(huì)遇到需要重復(fù)執(zhí)行某條指令或某些指令的場(chǎng)景。如果要實(shí)現(xiàn)每隔1秒中在屏幕上打印一次“hello, world”并持續(xù)打印一個(gè)小時(shí),我們肯定不能夠直接把print('hello, world')
這句代碼寫3600遍,這里我們需要構(gòu)造循環(huán)結(jié)構(gòu)。所謂循環(huán)結(jié)構(gòu),就是程序中控制某條或某些指令重復(fù)執(zhí)行的結(jié)構(gòu)。Python提供了兩種主要的循環(huán)結(jié)構(gòu),分別是for循環(huán)和while循環(huán)。
1.while循環(huán)
while循環(huán)語法格式:
while 條件表達(dá)式: 條件滿足,執(zhí)行循環(huán)語句
條件表達(dá)式永遠(yuǎn)為true,無限循環(huán)。
如果要構(gòu)造不知道具體循環(huán)次數(shù)的循環(huán)結(jié)構(gòu),我們推薦使用while
循環(huán)。while
循環(huán)通過一個(gè)能夠產(chǎn)生bool
值的表達(dá)式來控制循環(huán),當(dāng)表達(dá)式的值為True
時(shí)則繼續(xù)循環(huán),當(dāng)表達(dá)式的值為False
時(shí)則結(jié)束循環(huán)。
下面我們通過一個(gè)“猜數(shù)字”的小游戲來看看如何使用while
循環(huán)。猜數(shù)字游戲的規(guī)則是:計(jì)算機(jī)出一個(gè)1
到100
之間的隨機(jī)數(shù),玩家輸入自己猜的數(shù)字,計(jì)算機(jī)給出對(duì)應(yīng)的提示信息(大一點(diǎn)、小一點(diǎn)或猜對(duì)了),如果玩家猜中了數(shù)字,計(jì)算機(jī)提示用戶一共猜了多少次,游戲結(jié)束,否則游戲繼續(xù)。
import random # 產(chǎn)生一個(gè)1-100范圍的隨機(jī)數(shù) answer = random.randint(1, 100) counter = 0 while True: counter += 1 number = int(input('請(qǐng)輸入: ')) if number < answer: print('大一點(diǎn)') elif number > answer: print('小一點(diǎn)') else: print('恭喜你猜對(duì)了!') break # 當(dāng)退出while循環(huán)的時(shí)候顯示用戶一共猜了多少次 print(f'你總共猜了{(lán)counter}次')
2.for循環(huán)
Python中的for循環(huán)可以遍歷任何序列的項(xiàng)目:
語法格式:
for 變量 in 序列: 循環(huán)語句
例如:
for i in [0,1,2]: print(i)
考慮到我們使用的數(shù)值范圍經(jīng)常變化,Python提供了一個(gè)內(nèi)置range()函數(shù)
,它可以生成一個(gè)數(shù)字序列。
語法格式:
for i in range(start,end): 執(zhí)行循環(huán)語句
- 程序在執(zhí)行for循環(huán)時(shí):
- 循環(huán)計(jì)時(shí)器變量i被設(shè)置為start;
- 執(zhí)行循環(huán)語句;
- i 遞增
- 每設(shè)置一個(gè)新值都會(huì)執(zhí)行一次循環(huán)
- 當(dāng)i等于end時(shí),循環(huán)結(jié)束。
3.while嵌套
while嵌套指的是while循環(huán)里面還包含while循環(huán)。
while 條件1: 條件1滿足時(shí),做的事情1 條件1滿足時(shí),做的事情2 條件1滿足時(shí),做的事情3 ...(省略)... while 條件2: 條件2滿足時(shí),做的事情1 條件2滿足時(shí),做的事情2 條件2滿足時(shí),做的事情3 ...(省略)...
三、Python的其他語句
1.break語句
break語句用于結(jié)束整個(gè)循環(huán)
。 輪詢列表變量ls,當(dāng)輪詢到"深"這個(gè)字時(shí)候,直接結(jié)束整個(gè)for循環(huán),從而只打印"深"之前的"桃花潭水":
ls=["桃","花","潭","水","深","千","尺"] s="" for i in ls: if i == "深": break s = s + i print(s)
我們對(duì)比一下兩個(gè)程序:
第一個(gè):
for i in range(5): print("-------") print (i)
第二個(gè):
i=1 for i in range(5): i+=1 print("-------") if i==3: break print(i)
第一個(gè)是輸出五次-------
和數(shù)字,而第二次是循環(huán)前三次,第三次時(shí)i=3,觸發(fā)break語句,結(jié)束遍歷。
2.continue語句
continue的作用是用來結(jié)束本次循環(huán),緊接著執(zhí)行下一次的循環(huán)。for循環(huán)遍歷字符串s,當(dāng)遍歷到字符等于"l"的時(shí)候,continue關(guān)鍵字僅僅只結(jié)束當(dāng)前這一輪循環(huán),而不會(huì)結(jié)束全部循環(huán),所以當(dāng)?shù)谌谒拇伪闅v到"l"以后,for循環(huán)會(huì)繼續(xù)遍歷列表下一個(gè)字符,即"o"。所以最終納入n=n+1統(tǒng)計(jì)的字符是"heoword",一共7
個(gè)。
s="helloworld" n=0 for i in s: if i == "l": continue n = n + 1 print(n)
對(duì)比一下這兩個(gè)語句有啥不同:
第一個(gè):
for i in range(5): print("-------") print i
第二個(gè):
i=1 for i in range(5): i+=1 print("-------") if i==3: continue print(i)
第一個(gè)就是正常輸出五次-------
和數(shù)字,而第二次第三次遍歷因?yàn)槭艿絚ontinue語句影響,第三次循環(huán)中間中斷,不需要打印數(shù)字,直接進(jìn)行第四次循環(huán)。
3.pass語句
pass是空語句,它是為了保持程序結(jié)構(gòu)完整性。
pass語句不做任何事情,用作占位
。
for letter in 'Runoob': if letter == 'o': pass print ('執(zhí)行 pass 塊') print ('當(dāng)前字母 :', letter) print ("Good bye!")
4.else語句
else語句可以和循環(huán)語句結(jié)合使用,并且else語句旨在循環(huán)完成后執(zhí)行。
四、嵌套的循環(huán)結(jié)構(gòu)
和分支結(jié)構(gòu)一樣,循環(huán)結(jié)構(gòu)也是可以嵌套的,也就是說在循環(huán)中還可以構(gòu)造循環(huán)結(jié)構(gòu)。下面的例子演示了如何通過嵌套的循環(huán)來輸出一個(gè)乘法口訣表(九九表)。
for i in range(1, 10): for j in range(1, i + 1): print(f'{i}*{j}={i * j}', end='\t') print()
很顯然,在上面的代碼中,外層循環(huán)用來控制一共會(huì)產(chǎn)生9
行的輸出,而內(nèi)層循環(huán)用來控制每一行會(huì)輸出多少列。內(nèi)層循環(huán)中的輸出就是九九表一行中的所有列,所以在內(nèi)層循環(huán)完成時(shí),有一個(gè)print()
來實(shí)現(xiàn)換行輸出的效果。
五、循環(huán)的例子
1.輸入一個(gè)正整數(shù)判斷它是不是素?cái)?shù)。
提示:素?cái)?shù)指的是只能被1和自身整除的大于1的整數(shù)。
num = int(input('請(qǐng)輸入一個(gè)正整數(shù): ')) end = int(num ** 0.5) is_prime = True for x in range(2, end + 1): if num % x == 0: is_prime = False break if is_prime and num != 1: print(f'{num}是素?cái)?shù)') else: print(f'{num}不是素?cái)?shù)')
2.輸入兩個(gè)正整數(shù),計(jì)算它們的最大公約數(shù)和最小公倍數(shù)。
提示:兩個(gè)數(shù)的最大公約數(shù)是兩個(gè)數(shù)的公共因子中最大的那個(gè)數(shù);兩個(gè)數(shù)的最小公倍數(shù)則是能夠同時(shí)被兩個(gè)數(shù)整除的最小的那個(gè)數(shù)。
x = int(input('x = ')) y = int(input('y = ')) for factor in range(x, 0, -1): if x % factor == 0 and y % factor == 0: print(f'{x}和{y}的最大公約數(shù)是{factor}') print(f'{x}和{y}的最小公倍數(shù)是{x * y // factor}') break
如果知道循環(huán)的次數(shù),我們通常使用for
循環(huán);如果循環(huán)次數(shù)不能確定,可以用while
循環(huán)。在循環(huán)中還可以使用break
來提前結(jié)束循環(huán)。
通過合理地運(yùn)用分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),可以使程序按照不同條件做出相應(yīng)的處理,并且重復(fù)執(zhí)行特定的代碼塊,從而實(shí)現(xiàn)更加復(fù)雜和靈活的邏輯控制。這些控制結(jié)構(gòu)是編寫Python程序時(shí)的基礎(chǔ),掌握好它們能夠幫助開發(fā)者編寫出更加高效、功能完善的程序。
到此這篇關(guān)于Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Python分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PyQt5如何將.ui文件轉(zhuǎn)換為.py文件的實(shí)例代碼
這篇文章主要介紹了PyQt5之如何將.ui文件轉(zhuǎn)換為.py文件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05celery異步定時(shí)任務(wù)訂單定時(shí)回滾
這篇文章主要為大家介紹了celery異步定時(shí)任務(wù)訂單定時(shí)回滾的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04Python matplotlib實(shí)時(shí)畫圖案例
這篇文章主要介紹了Python matplotlib實(shí)時(shí)畫圖案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04python基于pygame實(shí)現(xiàn)響應(yīng)游戲中事件的方法(附源碼)
這篇文章主要介紹了python基于pygame實(shí)現(xiàn)響應(yīng)游戲中事件的方法,實(shí)例分析了Python基于pygame針對(duì)鍵盤及鼠標(biāo)事件的響應(yīng)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11