判斷語(yǔ)句
如果某些條件滿足名党,才能做某件事情掰伸;條件不滿足時(shí)想际,則不能做培漏,這就是所謂的判斷。
1. if 語(yǔ)句的使用
if 語(yǔ)句的格式:
if 判斷的條件:
條件成立會(huì)執(zhí)行if語(yǔ)句里面的代碼
舉例:
age = 18
if age >= 18:
print("你已成年")
############## 運(yùn)行結(jié)果 ###############
你已成年
2. 比較運(yùn)算符
學(xué)習(xí)比較運(yùn)算符的目的是比較運(yùn)算符通常結(jié)合
if
語(yǔ)句使用.
python中的比較運(yùn)算符如下表:
我們舉例來(lái)看一下他們的共同點(diǎn):
num1 = 1
num2 = 2
# 判斷兩個(gè)變量的值是否相等
result = num1 == num2 # 因?yàn)橛械忍?hào)胡本,先看等號(hào)右邊的代碼牌柄,把比較后的結(jié)果賦值給等號(hào)左邊的變量
print(result, type(result))
result = num1 != num2
print(result, type(result))
result = num1 > num2
print(result, type(result))
result = num1 < num2
print(result, type(result))
result = num1 >= num2
print(result, type(result))
result = num1 <= num2
print(result, type(result))
############## 運(yùn)行結(jié)果 ###############
False <class 'bool'>
True <class 'bool'>
False <class 'bool'>
True <class 'bool'>
False <class 'bool'>
True <class 'bool'>
總結(jié):比較運(yùn)算符返回的結(jié)果bool類型,bool類型只有兩個(gè)值: True, False
- True 表示條件成立侧甫,if 語(yǔ)句里面的代碼會(huì)執(zhí)行珊佣;
- False表示條件失敗,if 語(yǔ)句里面的代碼不會(huì)執(zhí)行
比如:
num3 = 1
num4 = 2
if num3 != num4:
print("條件成立")
############## 運(yùn)行結(jié)果 ###############
條件成立
3. 邏輯運(yùn)算符
- and:左右表達(dá)式都為True披粟,整個(gè)表達(dá)式結(jié)果才為True咒锻;
- or:左右表達(dá)式有一個(gè)為True,整個(gè)表達(dá)式結(jié)果就為True守屉;
- not:將右邊表達(dá)式的邏輯結(jié)果取反惑艇,Ture變?yōu)镕alse,F(xiàn)alse變?yōu)門rue
and
and : 左右兩邊的條件都要成立拇泛,if 語(yǔ)句才會(huì)執(zhí)行
name = "西施"
age = 25
if name == "西施" and age == 25:
print("找到女神了!")
############## 運(yùn)行結(jié)果 ###############
找到女神了!
or
or: 表示只要左右兩邊有一個(gè)條件成立滨巴,if語(yǔ)句就會(huì)執(zhí)行
name = "西施"
age = 25
if name == "貂蟬" or age < 38:
print("找到你們啦")
############## 運(yùn)行結(jié)果 ###############
找到你們啦
not
not True 等于 False , not False 等于 True
result = not False
print(result)
############## 運(yùn)行結(jié)果 ###############
True
舉例:
num = -1
if not num > 0:
print("條件成立")
############## 運(yùn)行結(jié)果 ###############
條件成立
總結(jié):邏輯運(yùn)算符通常也是結(jié)合 if 語(yǔ)句來(lái)使用俺叭,主要是可以判斷多個(gè)條件的關(guān)系
4. if-else的使用
if - else 判斷規(guī)則:當(dāng)條件成立會(huì)執(zhí)行 if 語(yǔ)句恭取,條件不成立會(huì)執(zhí)行 else 語(yǔ)句
需求1:從鍵盤上獲取年齡,判斷是否大于或者等于18歲熄守,如果滿足就輸出“你已成年”蜈垮;如果不滿足就輸出“尚未成年”
思路:使用input
從鍵盤中獲取數(shù)據(jù),并且存入到一個(gè)變量中 ---> 使用if
語(yǔ)句裕照,來(lái)判斷age>=18
是否成立:
# 使用input從鍵盤中獲取數(shù)據(jù)
age = int(input("請(qǐng)輸入您的年齡:"))
# 判斷年齡
if age >= 18:
# 條件成立會(huì)執(zhí)行if語(yǔ)句
print("你已成年")
else:
# 條件不成立會(huì)執(zhí)行else語(yǔ)句
print("尚未成年")
需求2:從鍵盤輸入身高攒发,如果身高沒(méi)有超過(guò)150cm,則輸出“不用買票”晋南,否則輸出“需要買票”晨继。
height = int(input("請(qǐng)輸入您的身高(cm):"))
if height <= 150:
print("不用買票")
else:
print("需要買票")
5. if...elif...else...的使用
需求:根據(jù)學(xué)生分?jǐn)?shù)判斷分級(jí),當(dāng)分?jǐn)?shù)為[90, 100]時(shí)為“優(yōu)秀”搬俊;[80, 90)時(shí)為“良好”紊扬;[70, 80)時(shí)為“一般”蜒茄;[60, 70)時(shí)為“及格”;60分以下為“不及格”
# 接收分?jǐn)?shù)
score = int(input("請(qǐng)輸入您的分?jǐn)?shù):"))
# 判斷分?jǐn)?shù)
if score >= 90 and score <= 100:
print("優(yōu)秀")
elif score >= 80 and score < 90:
print("良好")
elif score >= 70 and score < 80:
print("一般")
elif score >= 60 and score < 70:
print("及格")
else:
print("不及格")
注意:
- 當(dāng)某個(gè)條件成立時(shí)餐屎,會(huì)執(zhí)行對(duì)應(yīng)的條件語(yǔ)句里面的代碼檀葛,其他條件判斷不會(huì)執(zhí)行。
- else 語(yǔ)句是可選的腹缩,可以根據(jù)自己的需求判斷是否需要加上else語(yǔ)句屿聋。
6. 三目運(yùn)算操作
這個(gè)知識(shí)點(diǎn)不重要,知道有這么回事就行
三目運(yùn)算操作主要是簡(jiǎn)化 if - else 語(yǔ)句代碼的
num1 = 1
num2 = 2
# 使用兩個(gè)變量中的最大值
if num1 > num2:
print("num1:", num1)
else:
print("num2:", num2)
上面這個(gè) if - else 語(yǔ)句可以使用三目運(yùn)算進(jìn)行簡(jiǎn)化:
num1 = 1
num2 = 2
# 使用三目運(yùn)算操作對(duì)if-else語(yǔ)句進(jìn)行簡(jiǎn)化操作
result = num1 if num1 > num2 else num2
print(result)
7. if 語(yǔ)句的嵌套
if 語(yǔ)句的嵌套:在 if 語(yǔ)句里面再次使用 if 語(yǔ)句
if嵌套語(yǔ)句的應(yīng)用
場(chǎng)景描述1:進(jìn)車站必須同時(shí)滿足兩個(gè)條件藏鹊,第一查看是否有票润讥,第二查看是否帶有違禁物品。
ticket = 1 # 用1代表有車票盘寡,0代表沒(méi)有車票
knife_length = 9 # 刀子的長(zhǎng)度楚殿,單位為cm
if ticket == 1:
print("有車票,可以進(jìn)站")
if knife_length < 10:
print("通過(guò)安檢")
else:
print("沒(méi)有通過(guò)安檢")
print("刀子的長(zhǎng)度超過(guò)規(guī)定竿痰,等待警察處理...")
else:
print("沒(méi)有車票脆粥,不能進(jìn)站")
#### 輸出為 #####
有車票,可以進(jìn)站
通過(guò)安檢
場(chǎng)景描述:某男生找女朋友影涉,有兩個(gè)條件:首先判斷性別是否為“女”变隔,然后判斷年齡是否在24-27之間
sex = input("請(qǐng)輸入您的性別:")
if sex == "女":
print("性別匹配")
# 判斷年齡
age = int(input("請(qǐng)輸入您的年齡:"))
if age >= 24 and age <= 28:
print("確認(rèn)過(guò)眼神,你就是我要找的人")
else:
print("不好意思蟹倾,打擾了!")
else:
print("我們只要女生")
8. if語(yǔ)句的嵌套應(yīng)用—猜拳游戲
需求:
- 從控制臺(tái)輸?要出的拳 —— 石頭(1)/剪刀(2)/布(3)
- 電腦隨機(jī)出拳
- 比較勝負(fù)
知識(shí)點(diǎn):在 Python 中匣缘,要使用隨機(jī)數(shù),首先需要導(dǎo)入隨機(jī)數(shù)的模塊 —— “?具包”
import random
導(dǎo)入模塊后鲜棠,可以直接在模塊名稱后面敲?個(gè).
然后按Tab
鍵肌厨,會(huì)提示該模塊中包含的所有函數(shù),其中random.randint(a, b)
可以隨機(jī)返回[a, b]之間的任意一個(gè)整數(shù)岔留,包含 a 和 b
使用規(guī)則如下:
import random
value = random.randint(1, 3)
print(value)
代碼實(shí)現(xiàn)猜拳游戲需求:
import random
# 1. 接收用戶輸入的拳
player = int(input("請(qǐng)出拳 石頭(1) 剪刀(2) 布(3):"))
# 2. 讓電腦隨機(jī)出拳 隨機(jī)產(chǎn)生1-3的數(shù)字
computer = random.randint(1, 3)
# 3. 比較勝負(fù), 勝負(fù)結(jié)果有三種情況(1. 你贏了, 2. 平局夏哭, 3. 你輸了)
if (player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1):
print("你贏了!")
elif player == computer:
print("平局检柬!")
else:
print("你輸了献联!")
循環(huán)語(yǔ)句
循環(huán)語(yǔ)句就是在程序中可以重復(fù)執(zhí)行某段代碼,循環(huán)語(yǔ)句有 while 何址、 for
循環(huán)語(yǔ)句應(yīng)用場(chǎng)景
跟媳婦承認(rèn)錯(cuò)誤里逆,說(shuō)一萬(wàn)遍"媳婦兒,我錯(cuò)了"
print("媳婦兒用爪,我錯(cuò)了")
print("媳婦兒原押,我錯(cuò)了")
print("媳婦兒,我錯(cuò)了")
...(還有99997遍)...
使用循環(huán)語(yǔ)句一句話搞定:
i = 0
while i < 10000:
print("媳婦兒偎血,我錯(cuò)了")
i += 1
小總結(jié):
- while 和 if 的用法基本類似诸衔,區(qū)別在于:if 條件成立盯漂,則執(zhí)行一次; while 條件成立笨农,則重復(fù)執(zhí)行就缆,直到條件不成立為止。
- 一般情況下谒亦,需要多次重復(fù)執(zhí)行的代碼竭宰,都可以用循環(huán)的方式來(lái)完成
1. while循環(huán)語(yǔ)句
注意點(diǎn):
- while循環(huán)會(huì)重復(fù)判斷條件是否成立,只要條件成立那么循環(huán)語(yǔ)句里面的代碼就會(huì)執(zhí)行份招,當(dāng)條件不成立時(shí)循環(huán)語(yǔ)句執(zhí)行結(jié)束
- 如果次數(shù)不沒(méi)有進(jìn)行控制切揭,會(huì)出現(xiàn)死循環(huán),死循環(huán)的原因就是條件始終成立
- if 語(yǔ)句只會(huì)判斷一次條件锁摔,while 循環(huán)語(yǔ)句會(huì)重復(fù)判斷條件是否成立
需求:循環(huán)打印5次“人生苦短廓旬,我用Python”
num = 0
while num < 5:
print("人生苦短,我用Python")
num += 1
#### 輸出為 #####
人生苦短鄙漏,我用Python
人生苦短嗤谚,我用Python
人生苦短,我用Python
人生苦短怔蚌,我用Python
人生苦短巩步,我用Python
2. while循環(huán)練習(xí)
練習(xí)1:循環(huán)打印5次,顯示當(dāng)前循環(huán)的次數(shù)
count = 1
while count <= 5:
print("當(dāng)前循環(huán)的次數(shù): %d" % count)
count += 1
#### 輸出為 #####
當(dāng)前循環(huán)的次數(shù): 1
當(dāng)前循環(huán)的次數(shù): 2
當(dāng)前循環(huán)的次數(shù): 3
當(dāng)前循環(huán)的次數(shù): 4
當(dāng)前循環(huán)的次數(shù): 5
練習(xí)2:倒著循環(huán)打印5次桦踊,顯示當(dāng)前循環(huán)的次數(shù)
count = 5
while count >= 1:
print("當(dāng)前循環(huán)的次數(shù): %d" % count)
count -= 1
#### 輸出為 #####
當(dāng)前循環(huán)的次數(shù): 5
當(dāng)前循環(huán)的次數(shù): 4
當(dāng)前循環(huán)的次數(shù): 3
當(dāng)前循環(huán)的次數(shù): 2
當(dāng)前循環(huán)的次數(shù): 1
練習(xí)3:計(jì)算1~100的累加和(包含1和100)
# 1. 生成1-100之間的數(shù)字
# 記錄每次生成的數(shù)字
num = 1
# 記錄累加的和
result = 0
while num <= 100:
# 循環(huán)生成1-100之間的數(shù)字
# 2. 把每一個(gè)數(shù)字累加起來(lái)
result += num
num += 1
# 當(dāng)循環(huán)執(zhí)行結(jié)束的時(shí)候椅野,累加和計(jì)算完成
print("結(jié)果為:", result)
#### 輸出為 #####
結(jié)果為: 5050
練習(xí)4:計(jì)算1~100之間偶數(shù)的累加和
result = 0
# 1. 生成1-100之間的數(shù)字
num = 1
while num <= 100:
# 2. 判斷數(shù)字是否是偶數(shù)
if num % 2 == 0:
# 3. 把所有偶數(shù)累加起來(lái)
result += num
num += 1
print("偶數(shù)和結(jié)果:", result)
#### 輸出為 #####
偶數(shù)和結(jié)果: 2550
3. while循環(huán)嵌套
while 循環(huán)嵌套: 在 while 循環(huán)語(yǔ)句里面再次使用 while 循環(huán)語(yǔ)句
需求:循環(huán)三次,每循環(huán)一次打印三次 “人生苦短籍胯,我用python”
count = 1
while count <= 3:
print("當(dāng)前的循環(huán)的次數(shù): %d" % count)
# 讓人生苦短信息循環(huán)執(zhí)行三次
num = 1
while num <= 3:
print("人生苦短竟闪,我用python")
num += 1
count += 1
#### 輸出為 #####
當(dāng)前的循環(huán)的次數(shù): 1
人生苦短,我用python
人生苦短杖狼,我用python
人生苦短炼蛤,我用python
當(dāng)前的循環(huán)的次數(shù): 2
人生苦短,我用python
人生苦短蝶涩,我用python
人生苦短理朋,我用python
當(dāng)前的循環(huán)的次數(shù): 3
人生苦短,我用python
人生苦短绿聘,我用python
人生苦短嗽上,我用python
4. while循環(huán)嵌套應(yīng)用
要求1:打印如下圖形
循環(huán)控制打印的行數(shù)
# 記錄當(dāng)前的行數(shù)
row = 1
while row <= 5:
# print("當(dāng)前是第%d行" % row)
# 記錄當(dāng)前的列數(shù)
col = 1
while col <= 5:
print("*", end=" ")
col += 1
# 提示:當(dāng)內(nèi)層循環(huán)執(zhí)行結(jié)束,說(shuō)明當(dāng)前這一行星星打印完畢熄攘,換行打印星星
print("")
row +=
#### 輸出為 #####
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
要求2:打印如下圖形
# 記錄當(dāng)前行數(shù)
row = 1
# 外層循環(huán)控制行數(shù)
while row <= 5:
# 內(nèi)層循環(huán)控制列數(shù)
col = 1
while col <= row:
print("*", end=" ")
col += 1
# 內(nèi)層循環(huán)結(jié)束表示當(dāng)前這一行星星打印完畢兽愤,需要換行打印下一行星星
print("")
row += 1
#### 輸出為 #####
*
* *
* * *
* * * *
* * * * *
5. for循環(huán)
像 while 循環(huán)一樣,for 可以完成循環(huán)的功能。在Python中 for循環(huán)可以遍歷任何序列的項(xiàng)目浅萧,如一個(gè)列表或者一個(gè)字符串等逐沙。
for循環(huán)的格式
for 臨時(shí)變量 in 列表或者字符串等可迭代對(duì)象:
循環(huán)滿足條件時(shí)執(zhí)行的代碼
for循環(huán)應(yīng)用—遍歷容器類型中的每一個(gè)數(shù)據(jù)
my_str = "hello"
# 通過(guò)for循環(huán)可以方便的獲取字符串中的每一個(gè)數(shù)據(jù)
for value in my_str:
# 依次查看value獲取的每一個(gè)數(shù)據(jù)
print(value)
#### 輸出為 #####
h
e
l
l
o
for 循環(huán)內(nèi)部可以結(jié)合 if 語(yǔ)句使用
my_str = "hello"
for value in my_str:
# 依次查看value獲取的每一個(gè)數(shù)據(jù)
if value == "l":
print("l出現(xiàn)了")
else:
print(value)
#### 輸出為 #####
h
e
l出現(xiàn)了
l出現(xiàn)了
o
6. for 循環(huán)結(jié)合range
使用
- range 表示一個(gè)范圍,也是屬于容器類型
- for 循環(huán)結(jié)合
range
使用也可以讓某段代碼重復(fù)執(zhí)行多次
- range(5):表示產(chǎn)生一個(gè)[0,5) => [0, 4]范圍
for value in range(5):
print("哈哈", value)
#### 輸出為 #####
哈哈 0
哈哈 1
哈哈 2
哈哈 3
哈哈 4
- range(1, 4) : 1—表示開(kāi)始位置數(shù)據(jù) 洼畅;4—表示結(jié)束位置數(shù)據(jù) [結(jié)束位置數(shù)據(jù)不包含]
for value in range(1, 4):
print("嘻嘻", value)
#### 輸出為 #####
嘻嘻 1
嘻嘻 2
嘻嘻 3
range(1, 11, 2) :第一個(gè)參數(shù)是開(kāi)始位置數(shù)據(jù)酱吝,第二個(gè)參數(shù)是結(jié)束位置數(shù)據(jù)[不包含], 第三個(gè)參數(shù)步長(zhǎng):前后數(shù)據(jù)之間間隔
提示:如果不指定步長(zhǎng)默認(rèn)1
for value in range(1, 11, 2):
print(value)
#### 輸出為 #####
1
3
5
7
9
步長(zhǎng)還可以指定為負(fù)數(shù):
for value in range(5, 0, -1):
print(value)
#### 輸出為 #####
5
4
3
2
1
小但是有用的知識(shí)點(diǎn):如果使用for
循環(huán)只是為了實(shí)現(xiàn)簡(jiǎn)單的循環(huán),那循環(huán)中的變量可以使用下劃線進(jìn)行占位:
for _ in range(3):
print("嗯嗯")
#### 輸出為 #####
嗯嗯
嗯嗯
嗯嗯
7. break 和 continue
break
的作用:結(jié)束break
所在的這層循環(huán)土思。continue
的作用:用來(lái)結(jié)束本次循環(huán)务热,緊接著執(zhí)行下一次的循環(huán)。break
和continue
只能用在循環(huán)語(yǔ)句里面己儒,不能單獨(dú)使用崎岂。循環(huán)語(yǔ)句有:while, for
當(dāng)循環(huán)語(yǔ)句里面執(zhí)行break闪湾,表示當(dāng)前這層循環(huán)執(zhí)行結(jié)束冲甘,break后面代碼不能執(zhí)行;
當(dāng)循環(huán)語(yǔ)句執(zhí)行了continue途样,表示本次循環(huán)執(zhí)行結(jié)束江醇,然后根據(jù)條件判斷是否執(zhí)行下一次循環(huán)。
8.循環(huán)語(yǔ)句結(jié)合else語(yǔ)句使用
- 當(dāng)循環(huán)語(yǔ)句正常結(jié)束的時(shí)候else語(yǔ)句就會(huì)執(zhí)行何暇,否則else語(yǔ)句不會(huì)執(zhí)行
循環(huán)語(yǔ)句正常結(jié)束:循環(huán)語(yǔ)句里面沒(méi)有執(zhí)行break陶夜, else語(yǔ)句會(huì)執(zhí)行
循環(huán)語(yǔ)句非正常結(jié)束:循環(huán)語(yǔ)句里面執(zhí)行了break, else語(yǔ)句不會(huì)執(zhí)行 - 循環(huán)語(yǔ)句執(zhí)行了 continue 關(guān)鍵字裆站,else 語(yǔ)句依然可以執(zhí)行
循環(huán)語(yǔ)句結(jié)合else語(yǔ)句使用的場(chǎng)景:
在指定字符串里面查找對(duì)應(yīng)的數(shù)據(jù)条辟,如果找到了打印對(duì)應(yīng)的數(shù)據(jù),否則顯示沒(méi)有該數(shù)據(jù)宏胯。
my_str = "hello"
for value in my_str:
print(value)
if value == "e":
print("找到了:", value)
break
else:
print("沒(méi)有找到該數(shù)據(jù)")
#### 輸出為 #####
h
e
找到了: e
繼續(xù)深造
or
去工作羽嫡?工作的話選擇什么樣的工作?最終做出了一個(gè)選擇肩袍,身邊的朋友說(shuō)杭棵,你選這個(gè)是不對(duì)的!其實(shí)哪有什么正確的選擇氛赐,能做的只不過(guò)是努力讓自己當(dāng)初的選擇變得正確魂爪。不管選哪一個(gè)遇到困難的時(shí)候都會(huì)后悔為什么當(dāng)初自己不選另外一個(gè)?
那便時(shí)刻告訴自己:當(dāng)你目睹了泰山的雄偉就不要奢望黃山的俊秀鹰祸,當(dāng)你選定一條路甫窟,另一條路的風(fēng)景便與你無(wú)關(guān)密浑。