day5-分支和循環(huán)總結(jié)

5.1 分支結(jié)構(gòu)

python中分支結(jié)構(gòu)只有if語(yǔ)句,沒(méi)有switch語(yǔ)句

5.1.1 if語(yǔ)句

  • a.語(yǔ)法:
    if 條件語(yǔ)句 :
    代碼段
  • b.說(shuō)明:
    if -- 關(guān)鍵字
    條件語(yǔ)句 -- 任何有結(jié)果的表達(dá)式浸卦,不管結(jié)果類型轻抱。
    : -- 固定寫法,有冒號(hào)下以下必定有縮進(jìn)
    代碼段 -- 和if保持一個(gè)縮進(jìn)的一條或多條語(yǔ)句唤殴。
  • c.執(zhí)行過(guò)程:
    先判斷條件結(jié)果是否是True,如果是True就執(zhí)行冒號(hào)后面的代碼段。否則就不執(zhí)行绑榴。
    注意:
    如果條件語(yǔ)句結(jié)果不是布爾,會(huì)先將結(jié)果轉(zhuǎn)換成布爾盈魁,再判斷翔怎。
    除了0,空值以外的值轉(zhuǎn)為布爾都為True杨耙。

if后面可以寫哪些語(yǔ)句

注意:賦值語(yǔ)句不能寫在if后面赤套,其他都可以。

num = 10
if num & 1 == 0:
    print('%d是偶數(shù)' % (num))
    print('========')              # 和if保持一個(gè)縮進(jìn)的語(yǔ)句是在條件成立才執(zhí)行
                                  # 與if無(wú)關(guān)的語(yǔ)句最好換個(gè)行
print('##########')           # 在if外面的語(yǔ)句不管if條件是否成立都會(huì)執(zhí)行


if 'ADS'.isupper():
    print('全是大寫')  #不執(zhí)行

# 練習(xí):隨機(jī)產(chǎn)生一個(gè)年齡值珊膜,如果大于等于18就打印成年容握。
import random
age = random.randint(0,100)
if age >= 18:
    print('%d已經(jīng)成年了。' %(age))
else:
    print('未成年')
print(age)

5.1.2 if-else

  • a.語(yǔ)法:
    if 條件語(yǔ)句 :
    代碼段1
    else:
    代碼段2
  • b.說(shuō)明:
    if -- 關(guān)鍵字
    else -- 關(guān)鍵字
    條件語(yǔ)句 -- 任何有結(jié)果的表達(dá)式车柠,不管結(jié)果類型剔氏。
    : -- 固定寫法,有冒號(hào)下以下必定有縮進(jìn)
    代碼段 -- 和if及else保持一個(gè)縮進(jìn)的一條或多條語(yǔ)句竹祷。
  • c.執(zhí)行過(guò)程:
    先判斷條件結(jié)果是否是True谈跛,如果是True就執(zhí)行代碼段1。否則就執(zhí)行代碼段2溶褪。
    注意:
    如果條件語(yǔ)句結(jié)果不是布爾币旧,會(huì)先將結(jié)果轉(zhuǎn)換成布爾,再判斷猿妈。
    除了0吹菱,空值以外的值轉(zhuǎn)為布爾都為True巍虫。
#隨機(jī)產(chǎn)生一個(gè)整數(shù),如果是奇數(shù)打印’***是奇數(shù)‘鳍刷,否則占遥,反之。
num = random.randint(0,9999)
if num & 1:
    print('%d是奇數(shù)' %(num))
else:
    print('%d是偶數(shù)' %(num))

5.1.3 if-elif-else

  • a.語(yǔ)法:
    if 條件語(yǔ)句1 :
    代碼段1
    elif 條件語(yǔ)句2:
    代碼段2
    elif 條件語(yǔ)句3:
    代碼段3
    ...
    else:
    代碼段n
  • b.說(shuō)明:
    if -- 關(guān)鍵字
    elif -- 關(guān)鍵字
    else -- 關(guān)鍵字
    條件語(yǔ)句 -- 任何有結(jié)果的表達(dá)式输瓜,不管結(jié)果類型瓦胎。
    : -- 固定寫法,有冒號(hào)下以下必定有縮進(jìn)
    代碼段 -- 和if尤揣、elif及else保持一個(gè)縮進(jìn)的一條或多條語(yǔ)句搔啊。
  • c.執(zhí)行過(guò)程:
    先判斷條件語(yǔ)句1結(jié)果是否是True,如果是True就執(zhí)行代碼段1北戏。
    否則就判斷條件語(yǔ)句2結(jié)果是否是True负芋,如果是True就執(zhí)行代碼段2。
    否則就判斷條件語(yǔ)句3結(jié)果是否是True嗜愈,如果是True就執(zhí)行代碼段3旧蛾。
    ...
    如果前面所有的條件都為False,就執(zhí)行代碼段n蠕嫁。
    注意:
    后面的條件判斷的前提是前面條件不成立锨天。
    這里的elif根據(jù)情況可以有多個(gè),else也可以省略剃毒。
    如果條件語(yǔ)句結(jié)果不是布爾病袄,會(huì)先將結(jié)果轉(zhuǎn)換成布爾,再判斷迟赃。
    除了0陪拘,空值以外的值轉(zhuǎn)為布爾都為True。
# score 60以下不及格 60-70及格 71-89良好 90以上優(yōu)秀
score = random.randint(0,100)
print('成績(jī)?yōu)?d:' %(score),end="")
if score < 60:
    print('不及格')
elif score <= 70:
    print('及格')
elif score <= 89:
    print('良好')
else:
    print('優(yōu)秀')

5.1.4 if嵌套

可以在if纤壁,elif左刽,else后面的代碼段中,都可以再寫其他的if語(yǔ)句酌媒。

#判斷一個(gè)數(shù)字是否為偶數(shù)欠痴,是的話判斷是否被4整除
score = random.randint(0,100)
if score & 1:
    print('%d是奇數(shù)' %score)
else:
    if score % 4 == 0:
        print('%d是4的倍數(shù)' % score)
    else:
        print('%d是偶數(shù)' %score)
"""
練習(xí):輸入一個(gè)字符串,判斷字符串的第一個(gè)字符是否是字母秒咨,如果是,打印’以字符開(kāi)頭'喇辽。
如果這個(gè)字母是大寫的再打印’大寫字母‘。
"""
str1 = input('請(qǐng)輸入一串字符:')
if str1[0].isalpha():    #if 'a' <= str1[0] <= 'z' or  'A' <= str1[0] <= 'Z':
    print('以字母開(kāi)頭')
    if str1[0].isupper():          #'A' <= str1[0] <= 'Z':
        print('大寫字母')
else:
    print('什么都不打印')

'''
l = []
num = 0
while num <= 888:
    num = random.randint(0, 999)
    l.append(num)
print(l)
'''

5.2 for循環(huán)

python中的循環(huán)結(jié)構(gòu)有兩種:for和while循環(huán)雨席。
什么時(shí)候用循環(huán):某個(gè)操作需要重復(fù)執(zhí)行菩咨,就考慮用循環(huán)。

5.2.1 for循環(huán)

  • 語(yǔ)法:
    for 變量名 in 序列:
    循環(huán)體
  • 說(shuō)明:
    for、in -- 關(guān)鍵字
    變量名 -- 滿足變量名要求即可
    序列 -- 字符串抽米,列表特占,元組,字典云茸,集合是目,迭代器,range
    循環(huán)體 -- 可以是一條或多條和for保持一個(gè)縮進(jìn)的語(yǔ)句(需要重復(fù)執(zhí)行的代碼)
  • 執(zhí)行過(guò)程:
    讓變量去序列中取值标捺,一個(gè)一個(gè)的取懊纳,取完為止;每取一個(gè)值亡容,執(zhí)行一次循環(huán)體嗤疯。
    (for循環(huán)中,序列中元素的個(gè)數(shù)萍倡,決定了循環(huán)的次數(shù))
    注意:
    如果for后的變量取到的值身弊,在循環(huán)體里不使用,那么這個(gè)變量命名時(shí)列敲,用一個(gè)_來(lái)命名。
for x in range(97,123):
    print(chr(x), end='--->')

for x in 'abc':
    print(x)
    print('##$$#$$#$#')

5.2 range

range(n) -- 產(chǎn)生一個(gè)數(shù)字序列帖汞,序列內(nèi)容是0~n-1(結(jié)果是一個(gè)序列)
range(m,n) -- 產(chǎn)生一個(gè)數(shù)字序列戴而,序列內(nèi)容是m~n-1,m<n(結(jié)果是一個(gè)序列)
range(m,n,step) -- 產(chǎn)生一個(gè)數(shù)字序列,序列從m開(kāi)始翩蘸,每次加step直到n前為止所意,取不到n。
range一般用在:
1.需要產(chǎn)生指定范圍的數(shù)字序列
2.單純的控制for循環(huán)的循環(huán)次數(shù)

for num in range(10):
    print(num, end='')
print()
for num in range(10, 20, 2):
    print(num, end='--->')

#練習(xí):求1+2+催首。扶踊。+100
sum1 = 0
for num in range(1, 101):
    sum1 += num
print(sum1)
print(sum([1, 2, 3]))

#練習(xí):2+4+6+8+。郎任。秧耗。+100
#方法1:不用if
sum1 = 0
for num in range(1, 51):      # range(2,101,2)
    sum1 += num*2
print(sum1)
#方法2:用if
sum2 = 0
for num in range(1, 101):
    if not num &1:
        sum2 += num
print(sum2)
"""
    if num & 1:
        pass
    else:   
     sum2 += num
"""

#練習(xí):寫程序統(tǒng)計(jì)一個(gè)字符串中數(shù)字字符的個(gè)數(shù)
str1 = input('請(qǐng)輸入一個(gè)字符串:')
sum1 = 0
for i in str1:
    if '0' <= i <= '9':
        print(i)
        sum1 += 1
print('數(shù)字字符的個(gè)數(shù)是:', sum1)

#用循環(huán)控制打印10行”*“
for _ in range(1,10):
    print('*')

for x in range(1, 10):
    print('*'*x)

5.3 while

5.3.1 while循環(huán)

  • 語(yǔ)法:
    while 條件語(yǔ)句:
    循環(huán)體
  • 說(shuō)明:
    while -- 關(guān)鍵字
    條件語(yǔ)句 -- 有結(jié)果的表達(dá)式,除了賦值語(yǔ)句
    : -- 固定寫法
    循環(huán)體 -- 和while保持一個(gè)縮進(jìn)的一條或者多條語(yǔ)句(會(huì)被重復(fù)執(zhí)行)
  • 執(zhí)行過(guò)程:
    先判斷條件語(yǔ)句是否為True舶治,為True就執(zhí)行循環(huán)體分井;
    執(zhí)行完循環(huán)體再判斷條件語(yǔ)句是否為True,為True又執(zhí)行循環(huán)體霉猛;
    尺锚。。惜浅。瘫辩。。
    以此類推,直到條件語(yǔ)句為False伐厌,就結(jié)束整個(gè)循環(huán)承绸。
#1*2*..*10
num = 1
sum1 = 1
while num <= 10:
    sum1 *= num
    num += 1
print(sum1)
print(1*2*3*4*5*6*7*8*9*10)

#獲取字符串a(chǎn)bc123中的每個(gè)字符
str1 = 'abc123'
num = 0
while num <= 5:
    print(str1[num])
    num += 1

5.3.2 for和while循環(huán)

python中,for循環(huán)能做到的while循環(huán)都能做到弧械;但是while循環(huán)能做的八酒,for循環(huán)不一定能做到。

  • 使用for循環(huán):
    1.獲取序列中的元素(值)
    2.循環(huán)次數(shù)確定
  • while循環(huán):
    1.死循環(huán)
    2.循環(huán)次數(shù)不確定
#練習(xí):程序不斷的輸入刃唐,知道為0為止
i = input('請(qǐng)輸入:')
while i != '0':
    i = input('請(qǐng)輸入:')

5.4 continue,break和else

5.4 .1 continue

  • continue是一個(gè)關(guān)鍵字羞迷,只能寫在循環(huán)體中
  • 功能:當(dāng)循環(huán)遇到continue則會(huì)結(jié)束當(dāng)次循環(huán),直接進(jìn)入下次循環(huán)判斷画饥。
  • 進(jìn)入下次循環(huán):for循環(huán)就是用變量取下一個(gè)值衔瓮;while循環(huán)就是直接判斷條件語(yǔ)句是否為True。

5.4 .2 break

  • break是一個(gè)關(guān)鍵字抖甘,只能寫在循環(huán)體中热鞍。
  • 功能:當(dāng)循環(huán)遇到break時(shí),直接結(jié)束當(dāng)前循環(huán)衔彻。

5.4.3 else python中特有

  • 語(yǔ)法:

while 條件語(yǔ)句:
循環(huán)體
else:
代碼段

for 變量 in 序列:
循環(huán)體
else:
代碼段

  • 執(zhí)行過(guò)程:
    else結(jié)構(gòu)不會(huì)影響原循環(huán)的執(zhí)行過(guò)程薇宠。當(dāng)循環(huán)自然死亡時(shí),就會(huì)執(zhí)行else后面的代碼段艰额。
    循環(huán)因?yàn)橛龅絙reak而結(jié)束時(shí)澄港,不會(huì)執(zhí)行else后面的代碼段。
for x in range(10):
    print(x)
else:
    print('for循環(huán)結(jié)束')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柄沮,一起剝皮案震驚了整個(gè)濱河市回梧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌祖搓,老刑警劉巖狱意,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拯欧,居然都是意外死亡详囤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門哈扮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)纬纪,“玉大人,你說(shuō)我怎么就攤上這事滑肉“鳎” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵靶庙,是天一觀的道長(zhǎng)问畅。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么护姆? 我笑而不...
    開(kāi)封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任矾端,我火速辦了婚禮,結(jié)果婚禮上卵皂,老公的妹妹穿的比我還像新娘秩铆。我一直安慰自己,他們只是感情好灯变,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布殴玛。 她就那樣靜靜地躺著,像睡著了一般添祸。 火紅的嫁衣襯著肌膚如雪滚粟。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天刃泌,我揣著相機(jī)與錄音凡壤,去河邊找鬼。 笑死耙替,一個(gè)胖子當(dāng)著我的面吹牛亚侠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俗扇,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼盖奈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了狐援?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤究孕,失蹤者是張志新(化名)和其女友劉穎啥酱,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體厨诸,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镶殷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了微酬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绘趋。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖颗管,靈堂內(nèi)的尸體忽然破棺而出陷遮,到底是詐尸還是另有隱情,我是刑警寧澤垦江,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布帽馋,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏绽族。R本人自食惡果不足惜姨涡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吧慢。 院中可真熱鬧涛漂,春花似錦、人聲如沸检诗。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)岁诉。三九已至锚沸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涕癣,已是汗流浹背哗蜈。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坠韩,地道東北人距潘。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像只搁,于是被迫代替她去往敵國(guó)和親音比。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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

  • 好好計(jì)劃氢惋,等著破繭成蝶洞翩。讓夢(mèng)想變?yōu)楝F(xiàn)實(shí),讓陽(yáng)光驅(qū)散陰霾焰望。 背四級(jí)詞匯:每天30個(gè)骚亿,堅(jiān)持 每天...
    蘭珺閱讀 77評(píng)論 0 0
  • 我今不復(fù)到園中去, 寂寞已如我一般高熊赖。 滿地破碎的悲傷来屠, 足以嵌入我的腳趾。 世界很安靜震鹉, 推著我抵達(dá)寂寞的門廊俱笛。...
    零度以下的境界線閱讀 134評(píng)論 1 0
  • https://www.liaoxuefeng.com/wiki/0014316089557264a6b34895...
    我想去個(gè)地方13閱讀 205評(píng)論 0 0