Day3-python分支和循環(huán)

一、分支結構

分支結構: 某段代碼是否執(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)
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剔交,一起剝皮案震驚了整個濱河市肆饶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岖常,老刑警劉巖驯镊,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡板惑,警方通過查閱死者的電腦和手機橄镜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冯乘,“玉大人洽胶,你說我怎么就攤上這事●陕” “怎么了姊氓?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長领追。 經(jīng)常有香客問我他膳,道長,這世上最難降的妖魔是什么绒窑? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任棕孙,我火速辦了婚禮,結果婚禮上些膨,老公的妹妹穿的比我還像新娘蟀俊。我一直安慰自己,他們只是感情好订雾,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布肢预。 她就那樣靜靜地躺著,像睡著了一般洼哎。 火紅的嫁衣襯著肌膚如雪烫映。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天噩峦,我揣著相機與錄音锭沟,去河邊找鬼。 笑死识补,一個胖子當著我的面吹牛族淮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凭涂,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼祝辣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了切油?” 一聲冷哼從身側(cè)響起蝙斜,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎澎胡,沒想到半個月后孕荠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绢片,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年岛琼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巢株。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡槐瑞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出阁苞,到底是詐尸還是另有隱情困檩,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布那槽,位于F島的核電站悼沿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏骚灸。R本人自食惡果不足惜糟趾,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望甚牲。 院中可真熱鬧义郑,春花似錦、人聲如沸丈钙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雏赦。三九已至劫笙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間星岗,已是汗流浹背填大。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伍茄,地道東北人栋盹。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像敷矫,于是被迫代替她去往敵國和親例获。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容