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)自然死亡')