====== if ======
python中的分之結(jié)構(gòu)只有 if 語句,沒有 switch
1.什么時(shí)候需要使用 if
如果做某件事情(執(zhí)行某段代碼)需要滿足某個(gè)條件才可以沙绝,就考慮使用 if
2.怎么使用 if
a.語法1:
if 條件語句
代碼段1
其他語句
b.說明:
if —— 關(guān)鍵字, 是如果的意思(如果xxxx,就xxxx)
條件語句 —— 任意一個(gè)有結(jié)果的語句, 其結(jié)果最好是 布爾值(如果不是布爾值鼠锈,在判斷的時(shí)候會(huì)轉(zhuǎn)換成布爾值)
: —— 固定寫法, 在Python中只要有冒號(hào)( : ), 冒號(hào)后面的第一行必須有 縮進(jìn)闪檬,冒號(hào)縮進(jìn)組合形成代碼段, 相當(dāng)于其它語言中的大括號(hào)
代碼段1 —— 和 if 保持一個(gè)縮進(jìn)的語句, 也可以是一行語句, 也可以是多行語句(任意語句)
c.執(zhí)行過程: 先判斷條件語句的結(jié)果是否為 True
如果為 True 就執(zhí)行代碼段1, 然后再執(zhí)行后面的其它語句;
如果為 False 就不執(zhí)行代碼段1, 直接執(zhí)行 if 后面的其它語句(直接執(zhí)行其它語句)
age = 19
# print('你可以出去耍')
if age >=18 :
print('你可以出去耍')
print('也可以去網(wǎng)吧耍') # 和 if 保持一個(gè)縮進(jìn)的代碼, 都是滿足 if 后面的條件才會(huì)執(zhí)行的代碼
print('======') # 沒有和 if 保持一個(gè)縮進(jìn)的代碼, 不管條件是否滿足都會(huì)執(zhí)行
總結(jié): 需要滿足某個(gè)條件购笆,才執(zhí)行的語句就寫在 if 里面;
不管條件是否滿足都要執(zhí)行的語句粗悯,寫在 if 的外面(空出一行,不縮進(jìn)同欠,Enter)
練習(xí): 輸入一個(gè)數(shù), 如果這個(gè)數(shù)能夠被 3 整除, 就打印: 'xxx能是3的倍數(shù)'
num = int(input('請(qǐng)輸入一個(gè)數(shù)字:'))
if num % 3 == 0 :
print('%d能是3的倍數(shù)' % num) # 12能是3的倍數(shù) (輸入11不執(zhí)行if里面样傍,也沒有其它語句,故無異常)
====== if-else結(jié)構(gòu) ======
a.語法:
if 條件語句:
代碼段1
else:
代碼段2
其它語句
b.說明
else —— 關(guān)鍵字, 固定寫法; 相當(dāng)于 否則, 不滿足 if 條件的其它情況
c.執(zhí)行過程: 先判斷條件語句是否為 True 铺遂,如果為 True 就執(zhí)行代碼段1衫哥,否則執(zhí)行代碼段2
練習(xí): 輸入一個(gè)整數(shù), 如果這個(gè)數(shù)是偶數(shù)就打印'xx是偶數(shù)', 不是偶數(shù)就打印'xx是奇數(shù)'
num = int(input('請(qǐng)輸入一個(gè)數(shù)字:'))
if num % 2 == 0:
print('%d 是偶數(shù)' % num) # 滿足條件才執(zhí)行
else:
print('%d 是奇數(shù)' % num) # 不滿足條件才執(zhí)行
print('======') # 沒有和 if 或 else 保持一個(gè)縮進(jìn)的代碼, 不管條件是否滿足都會(huì)執(zhí)行
練習(xí): 輸入一個(gè)字符串,判斷字符串的開頭是否是小寫字母襟锐,如果是炕檩,將字符串的第一個(gè)字符轉(zhuǎn)換成大寫字母并打印,否則直接打印
例如: 輸入'aBc=123' -> 'ABc=123'
輸入'1abc' -> '1abc'
輸入'大da123' -> '大da123’
str1 = input('請(qǐng)輸入一個(gè)任意字符串:')
first_char = str1[0] # 獲取第一個(gè)字符 first char 意思是 第一個(gè)字符
if 'a' <= first_char <= 'z' :
print('第一個(gè)字符是小寫字母')
print(first_char.upper() + str1[1:])
else :
print('第一個(gè)字符不是小寫字母')
print(str1)
====== if-elif-else結(jié)構(gòu) ======
a.語法:
if 條件語句1:
代碼段1
elif 條件語句2:
代碼段2
elif 條件語句3:
代碼段3
......
else:
代碼段N
其它語句
b.說明
elif —— 關(guān)鍵字捌斧;在前面的條件不滿足的前提下笛质,判斷其它條件是否滿足
c.執(zhí)行過程: 先判斷條件語句1是否成立
如果成立,直接執(zhí)行代碼段1捞蚂,然后整個(gè) if 結(jié)構(gòu)結(jié)束妇押,接著執(zhí)行 其它語句;
如果條件語句1不成立姓迅,在判斷條件語句2是否成立敲霍,如果成立直接執(zhí)行代碼段2,然后整個(gè) if 結(jié)構(gòu)結(jié)束丁存,接著執(zhí)行其它語句肩杈;
以此類推,如果條件語句都不成立解寝,就執(zhí)行 else 后面的代碼段 N
注意:
a. 后面的條件語句的判斷都是在前面的條件不成立的前提下執(zhí)行的
b. else不是一定要寫扩然,根據(jù)情況后面的else結(jié)構(gòu)可以沒有!
示例1:
salary = 20000
if salary <= 5000 :
print('家中蹲聋伦!')
elif salary <= 10000 :
print('同城蹲夫偶!')
elif salary <= 15000 :
print('國(guó)內(nèi)蹲!')
else:
print('出國(guó)蹲觉增!')
示例2:
# 先打印:
# 請(qǐng)選擇: 1 -> 提示輸入姓名兵拢、電話、年齡
# 2 -> 提示輸入要查看學(xué)生的名字
# 3 -> 打印目前正在修改學(xué)生信息
# 4 -> 打印目前正在刪除學(xué)生信息
# 5 -> 打印退出
# 補(bǔ)充:python中可以使用三個(gè)雙引號(hào)或者是哪個(gè)單引號(hào)括起來逾礁,來表示一個(gè)字符串说铃;這種字符串中可以直接輸入回車換行
str1 = '''
====================================
歡迎XXX:
? 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('電話:')
elif input_str == '2':
find_name = input('請(qǐng)輸入要查看的學(xué)生的姓名:')
elif input_str == '3':
print('目前正在修改學(xué)生信息')
elif input_str == '4':
print('目前正在刪除學(xué)生信息')
else:
print('退出!')
====== if嵌套和三目運(yùn)算符 ======
1. if 的嵌套
在 if 結(jié)果中還可以再寫 if 結(jié)構(gòu)
輸入一個(gè)數(shù),如果這個(gè)數(shù)是偶數(shù)嘹履,打印'xx是偶數(shù)'腻扇,
同時(shí)判斷它是否能被 4 整除,如果可以植捎,再打印'xx還是4的倍數(shù)'
如果不是偶數(shù)衙解,只打印'xx是奇數(shù)'
num = int(input('請(qǐng)輸入一個(gè)整數(shù):'))
if num % 2 == 0 :
print('%d是偶數(shù)' % num)
# if 中嵌套的 if
if num % 4 == 0 :
print('%d還是4的倍數(shù)!' % num)
else :
print('是偶數(shù)但不是4的倍數(shù)焰枢!')
else :
print('%d是奇數(shù)' % num)
# else 中也可以嵌套 if
if num % 10 == 5 :
print('這個(gè)奇數(shù)是5的倍數(shù)')
2. python中的三目運(yùn)算符
C語言/java/JS語言中有一個(gè)三目運(yùn)算符: 表達(dá)式?值1:值2 -->>判斷表達(dá)式的值是否為True蚓峦,為True整個(gè)表達(dá)式的結(jié)果是值1,否則是值2(需了解)
Python中的三目運(yùn)算符:值1 if 表達(dá)式 else 值2 -->>判斷表達(dá)式的值是否為True济锄,為True整個(gè)表達(dá)式的結(jié)果是值1暑椰,否則是值2(需掌握)
應(yīng)用條件:根據(jù)某個(gè)條件是否成立,獲取不同的值的時(shí)候才使用三目運(yùn)算符
num1, num2 = 10, 100
max = num1 if num1 > num2 else num2
print(max) # 100
練習(xí):輸入一個(gè)年份荐绝,獲取指定的年份是否是潤(rùn)年
是一汽,拿到結(jié)果'潤(rùn)年';
不是,拿到結(jié)果'不是潤(rùn)年'
潤(rùn)年的條:年份是否能被4召夹,不能被100整除岩喷;或者能被400整除
year = int(input('年份:'))
result = '潤(rùn)年' if (year % 4 == 0 and year != 0) or (year % 400 == 0) else '不是潤(rùn)年'
print(result)
====== for循環(huán) ======
1.為什么要使用循環(huán)
python中的循環(huán)結(jié)構(gòu)有兩種:a. for 循環(huán)。b. while 循環(huán)
什么時(shí)候會(huì)用到 循環(huán) :當(dāng)實(shí)現(xiàn)某個(gè)功能的時(shí)候發(fā)現(xiàn)某個(gè)操作需要重復(fù)執(zhí)行监憎,這個(gè)時(shí)候就考慮使用循環(huán)
# 1+2+3+...+100
print(1+2+3+4.+100) # 重復(fù)的 +
# 統(tǒng)計(jì)1~10000能夠被13整數(shù)的數(shù)的個(gè)數(shù)
1. for 循環(huán)
a.語法
for 變量 in 序列 :
循環(huán)體
b.說明
for —— 關(guān)鍵字
變量 —— 一個(gè)變量名纱意,新的變量 或 (已經(jīng)賦值過的變量)
in —— 固定寫法
序列 —— 屬于序列的數(shù)據(jù);Python中的序列有:字符串鲸阔、列表偷霉、字典、集合褐筛、元祖类少、range、迭代器渔扎、生成器★★
: —— 固定寫法
循環(huán)體 —— 需要重復(fù)執(zhí)行的代碼就放在循環(huán)體中硫狞;循環(huán)體需要和 for 保持一個(gè)縮進(jìn)
c.執(zhí)行過程:(重要!★★★)
讓 變量 去 序列 中取值赞警,一個(gè)一個(gè)的取妓忍,取完為止;每取一個(gè)值愧旦,執(zhí)行一次一次循環(huán)體(序列中元素的個(gè)數(shù)決定了循環(huán)體執(zhí)行的次數(shù))
for char in 'abc' :
print('===')
# 結(jié)果為===
# ===
# ===
print(char)
# 結(jié)果為===
# a
# ===
# b
# ===
# c
"""
釋義:
第一次循環(huán):char = 'a' print('===') print(char)
第二次循環(huán):char = 'b' print('===') print(char)
第三次循環(huán):char = 'c' print('===') print(char)
"""
練習(xí):給一個(gè)字符串'hosee 23jh!hs89_=sssAsK',統(tǒng)計(jì)這個(gè)字符串中數(shù)字字符的個(gè)數(shù)
str1 ='hosee 23jh!hs89_=sssAsK'
count = 0 # 用來保存數(shù)字字符的個(gè)數(shù)世剖,默認(rèn)為 0
for char in str1 :
if '0' <= char <= '9' : # 數(shù)字在0~9的范圍之間
count += 1 # 取到數(shù)字便加1
print('%s中有%d個(gè)數(shù)字字符' % (str1, count))
# 結(jié)果為hosee 23jh!hs89_=sssAsK中有4個(gè)數(shù)字字符
2. range函數(shù)
range(N) -->> 產(chǎn)生數(shù)字序列 0 ~ N-1(N必須是整數(shù))
range(M, N)-->> 產(chǎn)生數(shù)字序列 M ~ N-1(M,N必須是整數(shù)笤虫,N > M)
range(M旁瘫,N,step)-->>從M開始琼蚯,每次值加step產(chǎn)生下一個(gè)數(shù)字酬凳,直到N前一個(gè)為止。(M遭庶,N必須是整數(shù)宁仔,step>0,N>M峦睡;step<0翎苫,N<M)
for num in range(11) :
print('num:', num, end='') # end='' 為禁止換行,按順序打印榨了,后面加一個(gè)空位打印print()煎谍,起到不連續(xù)打印的效果
# 結(jié)果為num: 0num: 1num: 2num: 3num: 4num: 5num: 6num: 7num: 8num: 9num: 10
print()
for num in range(11, 21) :
print('num:', num, end='') # end='' 為禁止換行,按順序打印龙屉,后面加一個(gè)空位打印print()呐粘,起到不連續(xù)打印的效果
# 結(jié)果為num: 11num: 12num: 13num: 14num: 15num: 16num: 17num: 18num: 19num: 20
print()
for num in range(1, 100, 2) :
print('num:', num, end='')
#結(jié)果為num: 1num: 3num: 5num: 7num: 9num: 11num: 13num: 15num: 17num: 19num: 21num: 23num: 25num: 27num: 29num: 31num: 33num: 35num: 37num: 39num: 41num: 43num: 45num: 47num: 49num: 51num: 53num: 55num: 57num: 59num: 61num: 63num: 65num: 67num: 69num: 71num: 73num: 75num: 77num: 79num: 81num: 83num: 85num: 87num: 89num: 91num: 93num: 95num: 97num: 995050
print()
# 示例:計(jì)算1+2+3+...+100
sum1 = 0
for num in range(1,101) :
sum1 += num
print(sum1)
# 結(jié)果為 5050
"""釋義
sun1 = 0
sum = 1 sum1 += num, sum1 = sum1+num =0+1
sum = 2 sum1 += num, sum1 = sum1+num =1+2
sum = 3 sum1 += num, sum1 = sum1+num =1+2+3
......
sum = 100 sum1 += num, sum1 = sum1+num =1+2+3+4+...+100
"""
示例:求100以內(nèi)所有能被13或者7整除的數(shù)的和
sum1 = 0
for num in range(100) :
if num % 13 == 0 or num % 7 == 0 :
sum1 += num
print(sum1)
# 結(jié)果為 1008
通過遍歷字符串字符下標(biāo)遍歷字符串
str1 = 'hello word!'
# index是字符對(duì)應(yīng)的下標(biāo),從前往后取
for index in range(len(str1)) :
print(str1[index],end='') # end='' 為禁止換行,按順序打印作岖,后面加一個(gè)空位打印print()唆垃,起到不連續(xù)打印的效果
# 結(jié)果為 hello word!
index是字符對(duì)應(yīng)的下標(biāo), 從后往前取
for index in range(-1, -len(str1)-1, -1) :
print(str1[index], end='') # end='' 為禁止換行,按順序打印鳍咱,后面加一個(gè)空位打印print()降盹,起到不連續(xù)打印的效果
# 結(jié)果為 !drow olleh
====== while循環(huán) ======
1.while
a.語法
while 條件語句:
循環(huán)體
b.說明
while —— 關(guān)鍵字;當(dāng)...的時(shí)候
條件語句 —— 和 if 后邊的條件要求一樣(賦值語句不行谤辜,別的語句都可以)
: —— 固定寫法
循環(huán)體 —— 需要重復(fù)執(zhí)行的語句寫在循環(huán)體中;循環(huán)體和while保持一個(gè)縮進(jìn)
c.執(zhí)行過程
當(dāng)程序執(zhí)行到while循環(huán)价捧,就先判斷條件語句是否為True丑念,為True就執(zhí)行一次循環(huán)體,執(zhí)行完循環(huán)體再判斷條件語句是否為True结蟋;
為True脯倚,又執(zhí)行循環(huán)體...以此類推,直接判斷條件語句的結(jié)果是False嵌屎,循環(huán)就結(jié)束推正,直接執(zhí)行后面的其它語句
for和while的選擇:
嚴(yán)格來說:for循環(huán)可以做到的,while循環(huán)都可以做到宝惰;
while循環(huán)可以做到的植榕,for循環(huán)不一定可以做到。
什么時(shí)候使用for: a.遍歷序列 b.循環(huán)次數(shù)確定
什么時(shí)候使用while: 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
# 結(jié)果為
# ======
# ======
# ======
# ======
用while循環(huán)遍歷字符串
str1 = 'hao are you!'
index = 0
while index < len(str1) :
print(str1[index], end = '')
index += 1
# 結(jié)果為hao are you!
練習(xí):寫一個(gè)程序尼夺,錄入學(xué)生的成績(jī)尊残。錄入以輸入'end'來結(jié)束
輸入:23 輸入:90.8 輸入:112 ... 輸入:end 結(jié)束
input_value = input('請(qǐng)輸入:')
while input_value != 'end' :
input_value = input('請(qǐng)輸入:')
練習(xí):注冊(cè)輸入密碼,直到輸入的密碼合理位置淤堵,要求密碼至少6位
請(qǐng)輸入密碼:1234 -->> 提示輸入密碼有誤
請(qǐng)輸入密碼:asdf -->> 提示輸入密碼有誤
......
password = input('請(qǐng)輸入密碼:')
while len(password) < 6 :
print('密碼有誤寝衫,重新輸入!')
password = input('請(qǐng)輸入密碼:')
====== 循環(huán)相關(guān)的關(guān)鍵字(continue拐邪,break) ======
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后面的條件是否為True)
for x in range(3) :
print('===')
print('---')
if x == 2 :
continue
print('123')
# 結(jié)果為
# ===
# ---
# 123
# ===
# ---
# 123
# ===
# ---
x = 0
while x < 100 :
x += 1
if x % 3 == 0 :
continue
print(x) # 1,2,3...97,98,100
2. break
break是Python關(guān)鍵字乘陪,只能用在循環(huán)體中统台!
功能:執(zhí)行循環(huán)體的時(shí)候,遇到break啡邑,循環(huán)直接結(jié)束贱勃,直接執(zhí)行循環(huán)后面的其它語句
找到大于111的數(shù)字當(dāng)中第一個(gè)能夠被17整除的數(shù)
num = 111
while True :
if num % 17 == 0 :
print(num)
break # break 直接結(jié)束
num +=1 # 119
for x in 'abc' :
print(x)
break
print(x) # a a
3. else
for 變量 in 序列:
循環(huán)體
else:
代碼段
while 條件語句:
循環(huán)體
else:
代碼段
執(zhí)行過程:循環(huán)執(zhí)行過程不變,else后面代碼段,如果循環(huán)是自然死亡就會(huì)執(zhí)行如果是因?yàn)橛龅絙reak而結(jié)束的贵扰,就不會(huì)執(zhí)行
for x in range(5) :
print(x, end='')
else :
print('for循環(huán)自然死亡')
# 01234for循環(huán)自然死亡
for x in range(5) :
print(x, end='')
if x == 3 :
break
else :
print('for循環(huán)自然死亡') # 循環(huán)遇到break不會(huì)執(zhí)行
print('=====') # # 不管循環(huán)怎么結(jié)束都會(huì)執(zhí)行
# 0123=====
index = 0
while index < 5:
if index == 3:
break
index += 1
else:
print('while自然死亡')