(一)順序結(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í)行的代碼塊.
- while循環(huán)
- 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