一、分支結構
分支結構: 某段代碼是否執(zhí)行看條件 (if語句)
備注:python代碼默認情況下是從第一行開始從上往下依次執(zhí)行的盈罐,每一條語句都會執(zhí)行
1. if結構 - 滿足條件就執(zhí)行某個操作简珠,不滿足就不執(zhí)行
1). 語法:
if 條件語句:
? 代碼段
其他代碼
2). 說明:
if:
關鍵字八匠,固定寫法
條件語句:
任何有結果的表示都可以,例如: 數(shù)據(jù)遭笋、已經(jīng)聲明過的變量、運算表達式(不能是賦值)等
:
固定寫法; (一般出現(xiàn)冒號的位置壶硅,后面都會換成產(chǎn)生縮進)
代碼段:
和if保持一個縮進的一條或者多條語句; 需要滿足條件才執(zhí)行的代碼
2). 執(zhí)行過程:
先判斷條件語句的結果是否為True(如果條件語句的結果不是布爾值威兜,就先轉(zhuǎn)換成布爾再看);
如果為True就執(zhí)行代碼段, 否則代碼段不執(zhí)行
num = 10
if num & 1 == 0:
print('偶數(shù)')
print('++++')
print('======')
2.if-else結構 -- 滿足條件執(zhí)行某個操作庐椒,不滿足條件的時候執(zhí)行另外一個操作
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結構
1). 語法:
1)語法:
if 條件語句1:
? 代碼段1
elif 條件語句2:
? 代碼段2
elif 條件語句3:
? 代碼段3
...
else:
?代碼段N
其他語句
2). 執(zhí)行過程:
先判斷條件語句1是否為True,為True就執(zhí)行代碼段1椒舵,然后整個if-elif-else結構結束;
如果為False,就判斷條件語句2是否為True, 為True就執(zhí)行代 碼段2约谈,然后整個if-elif-else結構結束笔宿;
如果是False,就判斷條件語句3是否為True, 為True就執(zhí)行代碼段3,然后整個if-elif-else結構結束棱诱;
以此類推
如果所有的條件語句都不成立泼橘,執(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結構中的代碼塊中可以再出現(xiàn)其他的if語句
判斷一個數(shù)是否是偶數(shù)靡菇,并且再判斷這個數(shù)是否是4的倍數(shù)担败;并打印出結論
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('個位數(shù)是3')
二、循環(huán)結構:for循環(huán)和while循環(huán)
1.for循環(huán)
1)語法:
for 變量名 in 序列:
?循環(huán)體
2)說明:
for ------ 關鍵字镰官,固定寫法
變量名 -----和聲明變量時的要求是一樣的
in ------關鍵字,固定寫法
序列 --容器型數(shù)據(jù)吗货;字符串泳唠、列表、字典宙搬、元組笨腥、集合拓哺、迭代器、生成器脖母、range
: -----固定寫法
循環(huán)體 -----和for保持一個縮進的一條或者多條語句士鸥;需要重復執(zhí)行的語句
3)執(zhí)行過程:
讓變量去序列中取值,一個一個取谆级,取完為止烤礁;沒取一個值,執(zhí)行一次循環(huán)體
(for)循環(huán)可以通過控制序列中元素的個數(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)生下一個數(shù)字肥照,到N前一個數(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)體中無用脚仔,這個變量可以直接用_來命名
for _ in range(100):
print('+++++++')
練習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)
練習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('個數(shù):', count)
練習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 - 關鍵字;固定寫法
條件語句 - 任何有結果的表達式舆绎;數(shù)據(jù)鲤脏、已經(jīng)聲明過的變量、運算符表達式(不能是賦值語句)等
: - 固定寫法
循環(huán)體 - 和while保持一個縮進的一條或者多條語句;(需要重復指定的語句)
3)執(zhí)行過程:
先判斷條件語句是否True,如果為True就執(zhí)行循環(huán)體吕朵;執(zhí)行完循環(huán)體再判斷條件語句是否為True,
為True又執(zhí)行循環(huán)體猎醇,以此類推,直到條件語句的結果是False循環(huán)就結束
num = 0
while num < 5:
print('=====')
num += 1
3.for循環(huán)和while的選擇
1)什么時候使用for循環(huán)
a.循環(huán)次數(shù)確定的時候
b.遍歷序列
2)什么時候使用while循環(huán)
a.死循環(huán)
b.循環(huán)次數(shù)不確定的時候
練習1: 猜數(shù)字游戲
游戲開始的時候隨機產(chǎn)生一個100以內(nèi)數(shù)字努溃,不斷輸入數(shù)字硫嘶,直到輸入的數(shù)字和產(chǎn)生的數(shù)字一致,游戲就結束; 在沒有猜對的時候茅坛,給出'大了'或者'小了'的提示
number = randint(0, 100) # 產(chǎn)生0~100的隨機數(shù)音半,并且保存在number
value = -1
while value != number:
value = int(input('請輸入一個數(shù):'))
if value < number:
print('小了')
elif value > number:
print('大了')
print('游戲結束!', number, value)
三、循環(huán)中的循環(huán)關鍵字
1.continue
(1). continue是循環(huán)體中的關鍵字
當執(zhí)行循環(huán)體的時候贡蓖,如果遇到continue,那么當次循環(huán)結束曹鸠,直接進入下次循環(huán)的判斷
for x in range(4):
print('====')
if x % 2 == 0:
continue
print('++++')
2.break
break是循環(huán)體中的關鍵字
當執(zhí)行循環(huán)體的時候,如果遇到break, 那么整個循環(huán)直接結束
for x in range(4):
print('====')
break
print('++++')
print('end', 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中的代碼段: 當循環(huán)自然死亡(for后的變量數(shù)據(jù)取完了彻桃;while后面的條件為False), else后面的代碼段會在循環(huán)結束后執(zhí)行晾蜘;如果循環(huán)是因為遇到break而結束的 那么else后面代碼段就不會執(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:
需要重復執(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)
練習1. 計算1!+2!+3!+...+10!
# 方法一:
sum1 = 0
# 將1~10取出來
for num in range(1, 11):
# 計算取出來的數(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)