一、分支結(jié)構(gòu)
分支結(jié)構(gòu): 某段代碼是否執(zhí)行看條件 (if語句)
備注:python代碼默認(rèn)情況下是從第一行開始從上往下依次執(zhí)行的,每一條語句都會(huì)執(zhí)行
1. if結(jié)構(gòu) - 滿足條件就執(zhí)行某個(gè)操作,不滿足就不執(zhí)行
1). 語法:
if 條件語句:
? 代碼段
其他代碼
2). 說明:
if:
關(guān)鍵字,固定寫法
條件語句:
任何有結(jié)果的表示都可以,例如: 數(shù)據(jù)、已經(jīng)聲明過的變量、運(yùn)算表達(dá)式(不能是賦值)等
:
固定寫法; (一般出現(xiàn)冒號的位置,后面都會(huì)換成產(chǎn)生縮進(jìn))
代碼段:
和if保持一個(gè)縮進(jìn)的一條或者多條語句; 需要滿足條件才執(zhí)行的代碼
2). 執(zhí)行過程:
先判斷條件語句的結(jié)果是否為True(如果條件語句的結(jié)果不是布爾值,就先轉(zhuǎn)換成布爾再看);
如果為True就執(zhí)行代碼段, 否則代碼段不執(zhí)行
num = 10
if num & 1 == 0:
print('偶數(shù)')
print('++++')
print('======')
2.if-else結(jié)構(gòu) -- 滿足條件執(zhí)行某個(gè)操作,不滿足條件的時(shí)候執(zhí)行另外一個(gè)操作
1)語法:
if 條件語句:
?代碼段1(滿足條件要執(zhí)行的代碼)
else:
?代碼段2(不滿足條件要執(zhí)行的代碼)
2). 執(zhí)行過程:
先判斷條件語句是否為True, 如果為True就執(zhí)行代碼段1, 否則執(zhí)行代碼段2
age = 10
# 根據(jù)年齡值的范圍打印'成年'或者'未成年'
if age >= 18:
print('成年')
else:
print('未成年')
3.if-elif-else結(jié)構(gòu)
1). 語法:
1)語法:
if 條件語句1:
? 代碼段1
elif 條件語句2:
? 代碼段2
elif 條件語句3:
? 代碼段3
...
else:
?代碼段N
其他語句
2). 執(zhí)行過程:
先判斷條件語句1是否為True,為True就執(zhí)行代碼段1,然后整個(gè)if-elif-else結(jié)構(gòu)結(jié)束;
如果為False,就判斷條件語句2是否為True, 為True就執(zhí)行代 碼段2,然后整個(gè)if-elif-else結(jié)構(gòu)結(jié)束;
如果是False,就判斷條件語句3是否為True, 為True就執(zhí)行代碼段3,然后整個(gè)if-elif-else結(jié)構(gòu)結(jié)束;
以此類推
如果所有的條件語句都不成立,執(zhí)行else后面的代碼段
根據(jù)年齡范圍打印: 少年(14以下)、青年 (14~25)、壯年 (26~35)、中年 (36 ~ 50)、老年 (50以上)
age = 30
if age < 14:
print('少年')
elif age <= 25:
print('青年')
elif age <= 35:
print('壯年')
elif age <= 50:
print('中年')
else:
print('老年')
4.if嵌套
備注:if結(jié)構(gòu)中的代碼塊中可以再出現(xiàn)其他的if語句
判斷一個(gè)數(shù)是否是偶數(shù),并且再判斷這個(gè)數(shù)是否是4的倍數(shù);并打印出結(jié)論
num = 13
# 方法一:
if num & 1 == 0:
print('偶數(shù)')
else:
print('奇數(shù)')
if num % 4 == 0:
print('是4的倍數(shù)!')
# 方法二:
print('====================')
if num & 1 == 0:
print('偶數(shù)')
if num % 4 == 0:
print('是4的倍數(shù)!')
print('++++')
else:
print('奇數(shù)')
if num % 10 == 3:
print('個(gè)位數(shù)是3')
二、循環(huán)結(jié)構(gòu):for循環(huán)和while循環(huán)
1.for循環(huán)
1)語法:
for 變量名 in 序列:
?循環(huán)體
2)說明:
for ------ 關(guān)鍵字,固定寫法
變量名 -----和聲明變量時(shí)的要求是一樣的
in ------關(guān)鍵字,固定寫法
序列 --容器型數(shù)據(jù);字符串、列表、字典、元組、集合、迭代器、生成器、range
: -----固定寫法
循環(huán)體 -----和for保持一個(gè)縮進(jìn)的一條或者多條語句;需要重復(fù)執(zhí)行的語句
3)執(zhí)行過程:
讓變量去序列中取值,一個(gè)一個(gè)取,取完為止;沒取一個(gè)值,執(zhí)行一次循環(huán)體
(for)循環(huán)可以通過控制序列中元素的個(gè)數(shù)來控制循環(huán)的次數(shù)
for x in 'abc12':
print('x=:', x)
print('+++++')
print('======')
x = 'a'; print('x=:',x); print('+++++'); print('======')
x = 'b'; print('x=:',x); print('+++++'); print('======')
x = 'c'; print('x=:',x); print('+++++'); print('======')
x = '1'; print('x=:',x); print('+++++'); print('======')
x = '2'; print('x=:',x); print('+++++'); print('======')
2.range函數(shù) - 為了讓for更加方便的控制次數(shù)
1). range(N) - 產(chǎn)生0 ~ N-1的數(shù)字序列
例如: range(4) -> 0,1,2,3
2). range(M,N) - 產(chǎn)生M ~ N-1的數(shù)字序列
例如: range(3, 10) -> 3,4,5,6,7,8,9
3). range(M,N,step) - 從M開始每隔step產(chǎn)生下一個(gè)數(shù)字,到N前一個(gè)數(shù)為止
例如: range(0, 10, 2) -> 0, 2, 4, 6, 8
作用: 1.產(chǎn)生指定的數(shù)字序列 2.控制循環(huán)次數(shù)
for x in range(4):
print(x)
print('===============')
for x in range(3, 10):
print(x)
print('===============')
for x in range(0, 10, 2):
print(x)
注意: 如果for中變量取出來的值在循環(huán)體中無用,這個(gè)變量可以直接用_來命名
for _ in range(100):
print('+++++++')
練習(xí)1: 打印0~100中所有能被3整除的數(shù)
# 方法一:
for x in range(101):
if x % 3 == 0:
print(x)
# 方法二:
print('===============')
for x in range(0, 101, 3):
print(x)
練習(xí)2: 打印0~100中所有能被3整除的數(shù)
print('================')
count = 0
for x in range(1, 101):
if x % 4 == 0 and x % 10 == 2:
# print(x)
count += 1
print('個(gè)數(shù):', count)
練習(xí)3: 打印0~100中所有能被3整除的數(shù)
sum1 = 0 # 保存最后的和
for x in range(1, 101):
sum1 += x
print('和:', sum1)
sum1 = 0
x = 1; sum1 += x -> sum1 = sum1 + x -> sum1 = 0 + 1 = 1
x = 2; sum1 += x -> sum1 = sum1 + x -> sum1 = 1 + 2
x = 3; sum1 += x -> sum1 = sum1 + x -> sum1 = 1 + 2 + 3
x = 4; sum1 += x -> sum1 = sum1 + x -> sum1 = 1 + 2 + 3 + 4
...
print('和:', sum1)
2. while循環(huán)
1)語法:
while 條件語句::
?循環(huán)體
2)說明:
while - 關(guān)鍵字;固定寫法
條件語句 - 任何有結(jié)果的表達(dá)式;數(shù)據(jù)、已經(jīng)聲明過的變量、運(yùn)算符表達(dá)式(不能是賦值語句)等
: - 固定寫法
循環(huán)體 - 和while保持一個(gè)縮進(jìn)的一條或者多條語句;(需要重復(fù)指定的語句)
3)執(zhí)行過程:
先判斷條件語句是否True,如果為True就執(zhí)行循環(huán)體;執(zhí)行完循環(huán)體再判斷條件語句是否為True,
為True又執(zhí)行循環(huán)體,以此類推,直到條件語句的結(jié)果是False循環(huán)就結(jié)束
num = 0
while num < 5:
print('=====')
num += 1
3.for循環(huán)和while的選擇
1)什么時(shí)候使用for循環(huán)
a.循環(huán)次數(shù)確定的時(shí)候
b.遍歷序列
2)什么時(shí)候使用while循環(huán)
a.死循環(huán)
b.循環(huán)次數(shù)不確定的時(shí)候
練習(xí)1: 猜數(shù)字游戲
游戲開始的時(shí)候隨機(jī)產(chǎn)生一個(gè)100以內(nèi)數(shù)字,不斷輸入數(shù)字,直到輸入的數(shù)字和產(chǎn)生的數(shù)字一致,游戲就結(jié)束; 在沒有猜對的時(shí)候,給出'大了'或者'小了'的提示
number = randint(0, 100) # 產(chǎn)生0~100的隨機(jī)數(shù),并且保存在number
value = -1
while value != number:
value = int(input('請輸入一個(gè)數(shù):'))
if value < number:
print('小了')
elif value > number:
print('大了')
print('游戲結(jié)束!', number, value)
三、循環(huán)中的循環(huán)關(guān)鍵字
1.continue
(1). continue是循環(huán)體中的關(guān)鍵字
當(dāng)執(zhí)行循環(huán)體的時(shí)候,如果遇到continue,那么當(dāng)次循環(huán)結(jié)束,直接進(jìn)入下次循環(huán)的判斷
for x in range(4):
print('====')
if x % 2 == 0:
continue
print('++++')
2.break
break是循環(huán)體中的關(guān)鍵字
當(dāng)執(zhí)行循環(huán)體的時(shí)候,如果遇到break, 那么整個(gè)循環(huán)直接結(jié)束
for x in range(4):
print('====')
break
print('++++')
print('end', x)
練習(xí)1: 不斷輸入數(shù)字直到輸入的是0為止,然后再求輸入的所有的奇數(shù)的和
sum1 = 0
while True:
value = int(input('請輸入數(shù)字:'))
if value == 0:
break
if value % 2 == 0:
continue
sum1 += value
print(sum1)
3.else
1.完整的for循環(huán)
for 變量 in 序列:
?循環(huán)體
else:
?代碼段
2)完整的while循環(huán)
while 條件語句:
? 循環(huán)體
else:
?代碼段
(1). else中的代碼段: 當(dāng)循環(huán)自然死亡(for后的變量數(shù)據(jù)取完了;while后面的條件為False), else后面的代碼段會(huì)在循環(huán)結(jié)束后執(zhí)行;如果循環(huán)是因?yàn)橛龅絙reak而結(jié)束的 那么else后面代碼段就不會(huì)執(zhí)行
(2). else的意義:可以通過判斷else中的代碼有沒有執(zhí)行來判斷循環(huán)有沒有遇到break
for x in range(4):
print(x)
break
else:
print('else')
print('~~~~')
4.while的循環(huán)的用法
while True:
需要重復(fù)執(zhí)行的代碼段
if 退出循環(huán)的條件:
break
四、循環(huán)嵌套
外面的循環(huán)執(zhí)行一次,里面的循環(huán)要執(zhí)行完
for x in range(3):
for y in range(4):
print(x, y)
練習(xí)1. 計(jì)算1!+2!+3!+...+10!
# 方法一:
sum1 = 0
# 將1~10取出來
for num in range(1, 11):
# 計(jì)算取出來的數(shù)的階層
sum2 = 1
for x in range(1, num+1):
sum2 *= x
# 將階乘值加起來
sum1 += sum2
print(sum2)
print(sum1)
# 方法二:
sum1 = 0
sum2 = 1
for num in range(1, 11):
sum2 *= num
sum1 += sum2
print(sum1)