Day05學(xué)習(xí)總結(jié)-if分支、for循環(huán)遵倦、while循環(huán)

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

1.什么時(shí)候需要使用if

如果做某件事件(執(zhí)行某段代碼)需要滿(mǎn)足某個(gè)條件才行,就考慮使用if

2.怎么使用if

a.if結(jié)構(gòu)

語(yǔ)法:
if 條件語(yǔ)句:
代碼段1
其他語(yǔ)句

說(shuō)明:
if - 關(guān)鍵字梧躺,是如果的意思
條件語(yǔ)句 - 任意一個(gè)有結(jié)果的語(yǔ)句似谁,最好結(jié)果是布爾,如果不是布爾值掠哥,在判斷的時(shí)候會(huì)轉(zhuǎn)換成布爾值
: - 固定寫(xiě)法巩踏,在python中只要有冒號(hào),冒號(hào)后面的第一行必須有縮進(jìn)续搀。
冒號(hào)縮進(jìn)組合形成代碼段塞琼,相當(dāng)于其他語(yǔ)言中的大括號(hào)
代碼段1 - 和if保持一個(gè)縮進(jìn)的語(yǔ)句。也可以是一行禁舷,也可以是多行

執(zhí)行過(guò)程: 先判斷條件語(yǔ)句的結(jié)果是否為T(mén)rue彪杉,如果為T(mén)rue就執(zhí)行代碼段1,然后再執(zhí)行后邊的其他語(yǔ)句牵咙;
如果為False就不執(zhí)行代碼段1派近, 直接執(zhí)行if外邊的其他語(yǔ)句

和if保持一個(gè)縮進(jìn)的代碼,都是滿(mǎn)足if后邊的條件才會(huì)執(zhí)行的代碼
沒(méi)有和if保持一個(gè)縮進(jìn)的代碼洁桌,不管條件是否滿(mǎn)足都會(huì)執(zhí)行

總結(jié): 需要滿(mǎn)足某個(gè)條件才執(zhí)行的語(yǔ)句就寫(xiě)在if里面渴丸,不管條件是否滿(mǎn)足都要執(zhí)行的語(yǔ)句,寫(xiě)在if的外面
示例:

age = 16
if age >= 18:
    print('可以去網(wǎng)吧了!')
else:
    print('滾出網(wǎng)吧吧曙强!小屁孩兒')

練習(xí):輸入一個(gè)數(shù),如果這個(gè)數(shù)能夠被3整除途茫,就打拥臁:'xxx是3的倍數(shù)'

num1 = input('請(qǐng)輸入一個(gè)數(shù):')
if float(num1) % 3 == 0:
    print('%s是3的倍數(shù)' % num1)

b.if - else結(jié)構(gòu)
語(yǔ)法:
if 條件語(yǔ)句:
代碼段1
else:
代碼段2
其他語(yǔ)句

說(shuō)明:
else - 關(guān)鍵字,固定寫(xiě)法囊卜;相當(dāng)于否則娜扇,不滿(mǎn)足if條件的其他情況

執(zhí)行過(guò)程:先判斷條件語(yǔ)句的結(jié)果是否為T(mén)rue,如果為T(mén)rue就執(zhí)行代碼段1栅组,否則執(zhí)行代碼段2

練習(xí):輸入一個(gè)整數(shù)雀瓢,如果這個(gè)數(shù)是偶數(shù)就打印'xxx是偶數(shù)',不是偶數(shù)就打印'xxx是奇數(shù)'

num = int(input('請(qǐng)輸入一個(gè)整數(shù):'))
if num % 2 == 0:
    print("%d是偶數(shù)" % num)      # 滿(mǎn)足條件才執(zhí)行
else:
    print('%d是奇數(shù)' % num)      # 不滿(mǎn)足條件才執(zhí)行
print('===========')            # 不管滿(mǎn)不滿(mǎn)足條件都執(zhí)行

# if num % 2:                   num % 2 = 1 -> True, num % 2 = 0 -> False
#     print("%d是奇數(shù)" % num)
# else:
#     print('%d是偶數(shù)' % num)

練習(xí):輸入一個(gè)字符串玉掸,判斷字符串的開(kāi)頭是否是小寫(xiě)字母刃麸,如果是,將字符串第一個(gè)字符轉(zhuǎn)換成大寫(xiě)字母并打印司浪,否則直接打印

str1 = input('請(qǐng)輸入一個(gè)字符串:')
# if 97 <= ord(str1[0]) <= 122:
if 'a' <= str1[0] <= 'z':
    print('第一個(gè)字符是小寫(xiě)字母')
    print(str1[0].capitalize() + str1[1:])
else:
    print('第一個(gè)字符不是小寫(xiě)字母')
    print(str1)

c.if - elif - else結(jié)構(gòu)
語(yǔ)法:
if 條件語(yǔ)句1:
代碼段1
elif 條件語(yǔ)句2:
代碼段2
elif 條件語(yǔ)句3:
代碼段3
...
else:
代碼段n
其他語(yǔ)句

說(shuō)明:
elif - 關(guān)鍵字泊业;在前面的條件不滿(mǎn)足的前提下,判斷其他條件是否滿(mǎn)足

執(zhí)行過(guò)程:先判斷條件語(yǔ)句1是否成立啊易,如果成立直接執(zhí)行代碼段1吁伺,然后整個(gè)if結(jié)果結(jié)束,然后執(zhí)行其他語(yǔ)句租谈;
如果條件語(yǔ)句1不成立篮奄,再判斷條件語(yǔ)句2是否成立。如果成立直接執(zhí)行代碼段2割去,然后整個(gè)if結(jié)果結(jié)束窟却,然后執(zhí)行其他語(yǔ)句;
以此類(lèi)推劫拗,如果條件語(yǔ)句都不成立间校,就執(zhí)行else后面的代碼段n

注意:后邊的條件語(yǔ)句的判斷都是在前面的條件不成立的前提下執(zhí)行的
else不是一定要寫(xiě),根據(jù)情況后面的else結(jié)構(gòu)可以沒(méi)有页慷!

練習(xí):

# 先打印
# ====================================
# 歡迎XXX:
#
#      1.  添加學(xué)生
#      2.  查看學(xué)生
#      3.  修改學(xué)生信息
#      4.  刪除學(xué)生
#      5.  返回
# ======================================
# 請(qǐng)選擇:  1  ->  提示輸入姓名憔足、電話(huà)、年齡
#          2  ->  提示輸入要查看的學(xué)生的名字
#          3  ->  打印目前正在修改學(xué)生信息
#          4  - > 目前正在刪除學(xué)生信息
#          5  - > 打印退出
'''
print('==================================================')
print('歡迎GYH')
print('                1.   添加學(xué)生                     ')
print('                2.   查看學(xué)生                     ')
print('                3.   修改學(xué)生信息                 ')
print('                4.   刪除學(xué)生                     ')
print('                5.   返回                         ')
print('==================================================')
num = int(input('請(qǐng)輸入序號(hào):'))
if num == 1:
    print('請(qǐng)輸入姓名酒繁、電話(huà)滓彰、年齡:')
elif num == 2:
    print('請(qǐng)輸入要查看的學(xué)生的名字:')
elif num == 3:
    print('目前正在修改學(xué)生信息')
elif num == 4:
    print('目前正在刪除學(xué)生信息')
elif num == 5:
    print('退出')
else:
    print('輸入錯(cuò)誤,請(qǐng)重新輸入州袒!')
'''

補(bǔ)充:python中可以使用三個(gè)雙引號(hào)或者是三個(gè)單引號(hào)括起來(lái)揭绑,來(lái)表示一個(gè)字符串;

str1 = '''
# ====================================
# 歡迎GYH:
# 
#      1.  添加學(xué)生
#      2.  查看學(xué)生
#      3.  修改學(xué)生信息
#      4.  刪除學(xué)生
#      5.  返回
# ======================================
'''
print(str1)
input_str = input('請(qǐng)選擇(1-5):')
if input_str == '1':
    name = input('姓名:')
    age = input('年齡:')
    tel = input('電話(huà):')
elif input_str == '2':
    find_name = input('請(qǐng)輸入要查看的學(xué)生的姓名:')
elif input_str == '3':
    print('正在修改學(xué)生的信息')
elif input_str == '4':
    print('正在刪除學(xué)生的信息')
else:
    print('退出')

1.if的嵌套

在if結(jié)果中還可以在寫(xiě)if結(jié)構(gòu)

輸入一個(gè)數(shù),如果這個(gè)數(shù)是偶數(shù)他匪,打印'xxx是偶數(shù)'菇存,同時(shí)判斷它是否能被4整除,如果可以在打印'xxx還是4的倍數(shù)'
如果不是偶數(shù)只打印'xxx是奇數(shù)'

num1 = float(input('請(qǐng)輸入一個(gè)數(shù):'))
if num1 % 2 == 0:
    print('%d是偶數(shù)' % num1)

    # 嵌套的if
    if num1 % 4 == 0:
        print('%d還是4的倍數(shù)' % num1)
    else:
        print('%d不是4的倍數(shù)' % num1)

# else中也可以嵌套if
else:
    print('%d是奇數(shù)' % num1)

2.python中的三目運(yùn)算符

C/java/JS語(yǔ)言中有一個(gè)三目運(yùn)算符: 表達(dá)式邦蜜?值1:值2 -> 判斷表達(dá)式的值是否為T(mén)rue,如果為T(mén)rue依鸥,
整個(gè)表達(dá)式的結(jié)果是值1,否則是值2

python中的三目運(yùn)算符: 值1 if 表達(dá)式 else 值2 -> 判斷表達(dá)式的值是否為T(mén)rue,如果為T(mén)rue悼沈,
整個(gè)表達(dá)式的結(jié)果是值1贱迟,否則是值2

當(dāng)我們要根據(jù)某個(gè)條件是否成立,獲取不同的值的時(shí)候才是用三目運(yùn)算符

num1, num2 = 10, 100

max = num1 if num1 > num2 else num2
print(max)

練習(xí):輸入一個(gè)年份絮供,獲取指定的年份是否是潤(rùn)年衣吠。是,拿到結(jié)果'閏年',否則拿到結(jié)果'不是閏年'
閏年的條件:年份是否能被4整除壤靶,不能被100整除缚俏;或者能被400整除

year = int(input('請(qǐng)輸入一個(gè)年份:'))
leap_year = '閏年' if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 else '不是閏年'
print(leap_year)

1.為什么要使用循環(huán)

python中的循環(huán)結(jié)構(gòu)有兩種: for循環(huán)和while循環(huán)
當(dāng)實(shí)現(xiàn)某個(gè)功能的時(shí)候發(fā)現(xiàn)某個(gè)操作需要重復(fù)執(zhí)行,這個(gè)時(shí)候就考慮使用循環(huán)

2.for循環(huán)

語(yǔ)法:
for 變量 in 序列:
循環(huán)體

說(shuō)明:
for - 關(guān)鍵字
變量 - 一個(gè)變量名萍肆,可以是已經(jīng)賦值過(guò)的變量也可以是新的變量(一般是新的變量)
in - 固定寫(xiě)法
序列 - 屬于序列的數(shù)據(jù)袍榆;python中的序列有: 字符串、 列表塘揣、 字典包雀、 集合、 元組亲铡、 range才写、 迭代器、 生成器
: - 固定寫(xiě)法
循環(huán)體 - 需要重復(fù)執(zhí)行的代碼就放在循環(huán)體中奖蔓;循環(huán)體需要和for保持一個(gè)縮進(jìn)

執(zhí)行過(guò)程(重要赞草!):讓變量去序列中取值,一個(gè)一個(gè)的取吆鹤,取完為止厨疙。每取一個(gè)值,執(zhí)行一次循環(huán)體疑务。
(序列中元素的個(gè)數(shù)決定了循環(huán)體執(zhí)行的次數(shù))

"""
第一次循環(huán): char = 'a'   print('===')  print(char)
第二次循環(huán): char = 'b'   print('===')  print(char)
第三次循環(huán): char = 'c'   print('===')  print(char)
"""
for char in 'abc':
    print('===')
    print(char)

練習(xí):給一個(gè)字符串'hosee 23jh!hs89_=sssAsK',統(tǒng)計(jì)這個(gè)字符串中數(shù)字字符的個(gè)數(shù)

str1 = 'hosee 23jh!hs89_=sssAsK'
count = 0               # 用來(lái)保存數(shù)字字符的個(gè)數(shù)沾凄,默認(rèn)為0個(gè)
for char in str1:
    if '0' <= char <= '9':
        count += 1
print('%s中數(shù)字字符的個(gè)數(shù)為%d' % (str1, count))

3.range函數(shù)

range(N) -> 產(chǎn)生數(shù)字序列 0 - (N - 1) (N必須是整數(shù), N > 0)
range(M, N) -> 產(chǎn)生數(shù)字序列 M - (N -1) (M, N必須是整數(shù), N > M)
range(M, N, step) -> 從M開(kāi)始知允,每次值加step產(chǎn)生下一個(gè)數(shù)字撒蟀,直到N前一個(gè)數(shù)為止
(M, N必須是整數(shù),step > 0, N > M; step < 0, N < M)

# for num in range(11):
#     print('num:', num)

# 計(jì)算1+2+3+...+100
sum1 = 0
for num in range(1, 101):
    sum1 += num
print(sum1)

練習(xí):求100以?xún)?nèi)所有能被13或者7整除的數(shù)的和

sum1 = 0
for num in range(101):
    if num % 13 == 0 or num % 7 == 0:
        sum1 += num
print(sum1)

4.通過(guò)遍歷字符串字符下標(biāo)遍歷字符串

# index是字符對(duì)應(yīng)的下標(biāo)温鸽,從前往后取
str1 = 'hello world!'
for index in range(len(str1)):
    print(str1[index], end='')
print('\n')
for index in range(-1, -len(str1)-1, -1):
    print(str1[index], end='')

1.while循環(huán)結(jié)構(gòu)

語(yǔ)法:
while 條件語(yǔ)句:
循環(huán)體

說(shuō)明:
while - 關(guān)鍵字保屯;當(dāng)...的時(shí)候
條件語(yǔ)句 - 和if后邊的條件要求一樣(賦值語(yǔ)句不行,別的語(yǔ)句都行)
: - 固定寫(xiě)法
循環(huán)體 - 需要重復(fù)執(zhí)行的語(yǔ)句寫(xiě)在循環(huán)體中;循環(huán)體和while保持一個(gè)縮進(jìn)

執(zhí)行過(guò)程:當(dāng)程序執(zhí)行到while循環(huán)姑尺,就先判斷條件語(yǔ)句是否為T(mén)rue,為T(mén)rue就執(zhí)行一次循環(huán)體竟终,執(zhí)行完循環(huán)體再判斷條件語(yǔ)句是否為T(mén)rue;
為T(mén)rue,又執(zhí)行循環(huán)體...以此類(lèi)推切蟋,直到判斷條件語(yǔ)句的結(jié)果是False衡楞,循環(huán)就結(jié)束,直接執(zhí)行后面的其他語(yǔ)句

for和while的選擇:
嚴(yán)格來(lái)說(shuō):for循環(huán)可以做到的while都可以做到敦姻,while能做到的事情,for循環(huán)不一定可以做到

使用for循環(huán):
a.遍歷序列
b.循環(huán)次數(shù)確定

使用while循環(huán):
a.死循環(huán)
b.循環(huán)次數(shù)不確定

#死循環(huán)歧杏!
# while True:
#     input('請(qǐng)輸入:')
# 控制while循環(huán)次數(shù)
"""
變量 = 0
while 變量 < 次數(shù):
    需要重復(fù)執(zhí)行的代碼
    變量 += 1
"""
num = 0
while num < 4:
    print('====')
    num += 1
# 用while循環(huán)遍歷字符串
str1 = 'fejgngwnegskd'
index = 0
while index < len(str1):
    print(str1[index])
    index += 1

練習(xí):寫(xiě)一個(gè)程序镰惦,錄入學(xué)生的成績(jī),錄入以輸入'end'來(lái)結(jié)束

score = input('請(qǐng)輸入學(xué)生的成績(jī):')
while score != 'end':
    score = input('請(qǐng)輸入學(xué)生的成績(jī):')

練習(xí):注冊(cè)輸入密碼犬绒,直到輸入的密碼合理為止旺入。要求密碼至少6位
請(qǐng)輸入密碼:1234 --> 提示密碼有誤,重新輸入 請(qǐng)輸入密碼:avc -->提示密碼有誤凯力,重新輸入

password = input('請(qǐng)輸入密碼:')
while len(password) < 6:
    password = input('密碼有誤茵瘾,重新輸入:')

1.continue

continue是python關(guān)鍵字,只能用在循環(huán)體中咐鹤!

功能:執(zhí)行循環(huán)體執(zhí)行到continue的時(shí)候拗秘,結(jié)束當(dāng)次循環(huán),直接進(jìn)入下次循環(huán)的判斷祈惶。
(for循環(huán)就是讓變量去取下一個(gè)值;while循環(huán)就是直接去判斷while后面的條件是否為T(mén)rue)

for x in range(3):
    print('===')
    print('***')
    if x == 2:
        continue
    print('123')

x = 0
while x < 100:
    x += 1
    if x % 3 == 0:
        continue
    print(x)

2.break

break是python關(guān)鍵字,只能用在循環(huán)體中!

功能:執(zhí)行循環(huán)體的時(shí)候民晒,遇到break循環(huán)直接結(jié)束些己。直接執(zhí)行循環(huán)后面的其他語(yǔ)句

# 找到大于111的數(shù)字當(dāng)中第一個(gè)能夠被17整除的數(shù)
num = 111
while True:
    if num % 17 == 0:
        print(num)
        break
    num += 1

3.else

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

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

執(zhí)行過(guò)程:循環(huán)執(zhí)行過(guò)程不變,else后面的代碼段疹蛉,如果循環(huán)是自然死亡就會(huì)執(zhí)行活箕;如果是因?yàn)橛龅絙reak而結(jié)束的,就不會(huì)執(zhí)行

for x in range(5):
    print(x)
    if x == 3:
        break
else:
    print('for循環(huán)自然死亡')    # 循環(huán)遇到break不會(huì)執(zhí)行
print('====================')   # 不管循環(huán)怎么結(jié)束都會(huì)執(zhí)行


index = 0
while index < 5:
    # if index == 3:
    #     break
    index += 1
else:
    print('while循環(huán)自然死亡')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末可款,一起剝皮案震驚了整個(gè)濱河市育韩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌筑舅,老刑警劉巖座慰,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異翠拣,居然都是意外死亡版仔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蛮粮,“玉大人益缎,你說(shuō)我怎么就攤上這事∪幌耄” “怎么了莺奔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)变泄。 經(jīng)常有香客問(wèn)我令哟,道長(zhǎng),這世上最難降的妖魔是什么妨蛹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任屏富,我火速辦了婚禮,結(jié)果婚禮上蛙卤,老公的妹妹穿的比我還像新娘狠半。我一直安慰自己,他們只是感情好颤难,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布神年。 她就那樣靜靜地躺著,像睡著了一般行嗤。 火紅的嫁衣襯著肌膚如雪已日。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天栅屏,我揣著相機(jī)與錄音捂敌,去河邊找鬼。 笑死既琴,一個(gè)胖子當(dāng)著我的面吹牛占婉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甫恩,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逆济,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了磺箕?” 一聲冷哼從身側(cè)響起奖慌,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎松靡,沒(méi)想到半個(gè)月后简僧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雕欺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年岛马,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了棉姐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啦逆,死狀恐怖伞矩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夏志,我是刑警寧澤乃坤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站沟蔑,受9級(jí)特大地震影響湿诊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瘦材,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一枫吧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宇色,春花似錦、人聲如沸颁湖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甥捺。三九已至抢蚀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镰禾,已是汗流浹背皿曲。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吴侦,地道東北人屋休。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像备韧,于是被迫代替她去往敵國(guó)和親劫樟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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