Python 中的判斷語句,循環(huán)語句,函數(shù)
1. 判斷語句
1.1 布爾類型和比較運(yùn)算符
1.1.1 布爾類型
布爾(bool)表達(dá)現(xiàn)實(shí)生活中的邏輯,即真和假:
- True 表示真
- False 表示假
True 和 False 的本質(zhì)都是數(shù)字。True 記作 1,F(xiàn)alse 記作 0。
定義變量存儲布爾類型數(shù)據(jù):變量名 = 布爾類型字面量
布爾類型不僅可以自行定義,也可以通過比較運(yùn)算得到布爾類型的結(jié)果。
result = 10 > 5
print(f"result的值是{result},類型是{type(result)}")輸出結(jié)果:
result的值是True,類型是<class 'bool'>
1.1.2 比較運(yùn)算符

1.2 if 語句
1.2.1 if 語句基本格式
if 語句基本格式:
if 要判斷的條件: #不要忘記加冒號
條件成立時,要做的事情 #前面有4個空格縮進(jìn)
【例】結(jié)合前面學(xué)習(xí)的input輸入語句,完成如下案例:
- (1)通過input語句,獲取鍵盤輸入,為變量 age 賦值。(注意轉(zhuǎn)換成數(shù)字類型)
- (2) 通過 if 判斷是否是成年人,滿足條件則輸出提示信息,
如下:
歡迎來到黑馬兒童游樂場,兒童免費(fèi),成人收費(fèi)。
請輸入你的年齡:30
您已成年
游玩需要補(bǔ)票10元
祝您游玩愉快。
print("歡迎來到黑馬兒童游樂場,兒童免費(fèi),成人收費(fèi)。")
age = int(input("請輸入你的年齡:"))#類型轉(zhuǎn)換
if age >= 18:
print("您已成年") #有4格縮進(jìn)
print("游玩需要補(bǔ)票10元")
print("祝您游玩愉快")輸出結(jié)果1:
歡迎來到黑馬兒童游樂場,兒童免費(fèi),成人收費(fèi)。
請輸入你的年齡:20
您已成年
游玩需要補(bǔ)票10元
祝您游玩愉快
輸出結(jié)果2:
歡迎來到黑馬兒童游樂場,兒童免費(fèi),成人收費(fèi)。
請輸入你的年齡:10
祝您游玩愉快
1.2.2 if else 語句
print("歡迎來到黑馬兒童游樂場,兒童免費(fèi),成人收費(fèi)。")
age = int(input("請輸入你的年齡:"))#類型轉(zhuǎn)換
if age >= 18:
print("您已成年,游玩需要補(bǔ)票10元。")
else:#同樣有冒號,且其中的語句有4個格縮進(jìn)
print("您未成年,可以免費(fèi)游玩")1.2.3 if elif else 語句
print("歡迎來到黑馬動物園")
if int(input("請輸入你的身高(cm):")) < 120:
print("您的身高小于120cm,可以免費(fèi)游玩")
elif int(input("請輸入vip等級:")) > 3:
print("您的vip等級大于3,可以免費(fèi)游玩")
elif int(input("請告訴我今天幾號:")) == 1:
print("今天是1號免費(fèi)日,可以免費(fèi)游玩")
else:
print("不好意思,您不滿足免費(fèi)游玩的條件,需購票")1.2.4 判斷語句的嵌套
基礎(chǔ)語法格式如下:
if 條件1:
滿足條件1時做的事情1
滿足條件1時做的事情2
if 條件2:
滿足條件2時做的事情1
滿足條件2時做的事情2
如上面代碼,第二個 if 在第一個 if 內(nèi),只有滿足第一個 if 的條件時,才會執(zhí)行第二個 if。
嵌套的關(guān)鍵點(diǎn)在于:空格縮進(jìn)。
Python 就是通過空格縮進(jìn)來決定語句之間的層次關(guān)系。
print("歡迎來到黑馬動物園")
if int(input("請輸入你的身高(cm):")) > 120:
print("您的身高大于120cm,不能免費(fèi)游玩")
print("不過,若您的vip等級超過3,可以免費(fèi)游玩")
if int(input("請輸入vip等級:")) > 3:
print("您的vip等級大于3,可以免費(fèi)游玩")
else:
print("不好意思,您不滿足免費(fèi)游玩的條件,需購票")
else:
print("您的身高小于120cm,可以免費(fèi)游玩")2. 循環(huán)語句
2.1 while 循環(huán)
2.1.1 while 循環(huán)基礎(chǔ)語法
while 條件:
條件滿足時,做的事情1
條件滿足時,做的事情2
條件滿足時,做的事情3
...
【例】設(shè)置一個范圍 1~100 的隨機(jī)整數(shù)變量,通過 while 循環(huán),配合 input 語句,判斷輸入的數(shù)字是否等于隨機(jī)數(shù)。
要求:
- (1)無限次機(jī)會,直到猜中為止;
- (2)每一次猜不中,會提示大了或小了;
- (3)猜完數(shù)字后,提示猜了幾次。
import random
count = 0
num = random.randint(1,100)#生成1~100的隨機(jī)整數(shù),包括1和100
while True:
guess = int(input("請輸入猜測的數(shù)字:"))
count += 1 #python中沒有count++這種累加操作
if guess == num:
print("猜中了")
break
else:
if guess < num:
print("小了")
else:
print("大了")
print("共猜了%d次" % count)2.1.2 while 循環(huán)嵌套使用
while 條件1:
條件1滿足時,做的事情1
條件1滿足時,做的事情2
條件1滿足時,做的事情3
...
while 條件2:
條件2滿足時,做的事情1
條件2滿足時,做的事情2
條件2滿足時,做的事情3
...
【例1】向小美表白 100 天,每天都送 10 朵玫瑰花。
i = 1
while i <= 100:
print(f"第{i}天表白")
j = 1
while j <= 10:
print(f"第{i}天,送的第{j}朵玫瑰花")
j += 1
print("小美,我喜歡你")
i += 1補(bǔ)充知識
print 語句默認(rèn)情況下,輸出內(nèi)容會自動換行,如下圖:

在即將完成的案例中,需要使用 print 語句輸出時不換行的功能,加上end=''即可:

ps:end=''使用了方法傳參功能,后面會詳細(xì)講解。
【例2】打印九九乘法表
i = 1
while i < 10:
j = 1
while j <= i:
print(f"{j} * {i} = {j * i}\t", end = '')
j += 1
i += 1
print()2.2 for 循環(huán)
2.2.1 for 循環(huán)基礎(chǔ)語法
for 臨時變量 in 待處理數(shù)據(jù)集(序列):
循環(huán)滿足條件時執(zhí)行的代碼
遍歷字符串:
info = "hello"
for ch in info:
print(ch)輸出結(jié)果:
h
e
l
l
o
由此看出,與 while 循環(huán)不同,for 循環(huán)無法定義循環(huán)條件,只能從被處理的數(shù)據(jù)集里,依次取出內(nèi)容進(jìn)行處理。
所以,理論上講,Python 的 for 循環(huán)無法構(gòu)建無限循環(huán)(被處理的數(shù)據(jù)集不可能無限大)
【例】統(tǒng)計 “itheima is a brand of itcast” 中有多少個 a。
name = "itheima is a brand of itcast"
count = 0
for ch in name:
if ch == 'a':
count += 1
print(f"共有{count}個a") # 共有4個a2.2.2 range 語句
for 循環(huán)語法中待處理數(shù)據(jù)集,嚴(yán)格來說,稱為序列類型。
序列類型:其內(nèi)容可以一個個依次取出的一種類型,包括:字符串、列表、元組 等。
目前只介紹了字符串類型,其余類型后面會詳細(xì)講解。
由于現(xiàn)階段只介紹了字符串,所以暫且只能通過 range 語句,可以獲得一個簡單的數(shù)字序列(range 語句還有其他用途,后面詳講)。
range(num):獲取一個從 0 開始,到 num 結(jié)束的數(shù)字序列(不含 num 本身)
如:range(5) 取得的數(shù)據(jù)是:[0,1,2,3,4]
range(num1, num2):獲得一個從 num1 開始,到 num2 結(jié)束的數(shù)字序列(不含 num2 本身)
如:range(5,10)取得的數(shù)據(jù)是:[5,6,7,8,9]
range (num1, num2, step):獲得一個從 num1 開始,到 num2 結(jié)束的數(shù)字序列(不含 num2 本身)
數(shù)字之間的步長,以 step 為準(zhǔn)(step 默認(rèn)為1)
如:range(5,10,2) 取得的數(shù)據(jù)是:[5,7,9]
range 語句通常配合 for 使用:
for i in range(5):
print(i)輸出結(jié)果:
0
1
2
3
4
【例】
有了 range 語句,前面送 10 朵玫瑰花的操作也可以用 for 循環(huán)實(shí)現(xiàn):
count = 0
for i in range(1, 100):
if i % 2 == 0:
count += 1
print(f"共有{count}個偶數(shù)") # 共有49個偶數(shù)2.2.3 變量作用域
如代碼,思考:最后的 print 語句,能否訪問到變量 i?
for i in range(5): print(i) print(i) # 能否訪問到變量i?
規(guī)范上:不允許
實(shí)際上:可以,最后的 print 語句輸出 4
回看 for 循環(huán)的語法:
for 臨時變量 in 待處理數(shù)據(jù)集(序列):
循環(huán)滿足條件時執(zhí)行的代碼
我們會發(fā)現(xiàn),將從數(shù)據(jù)集(序列)中取出的數(shù)據(jù)賦值給臨時變量。
該臨時變量,在編程規(guī)范上,作用范圍(作用域),限定在 for 循環(huán)內(nèi)部。
如果在 for 循環(huán)外部訪問該臨時變量,實(shí)際上可以訪問到;但在編程規(guī)范上,不允許、不建議這么做。
上面代碼中,若想要在 for 循環(huán)外面使用 i,可以將 i 定義在 for 循環(huán)外面:
i = 0
for i in range(5):
print(i)
print(i)2.2.4 for 循環(huán)嵌套使用
for 臨時變量 in 待處理數(shù)據(jù)集(序列):
循環(huán)滿足條件應(yīng)做的事情1
循環(huán)滿足條件應(yīng)做的事情2
循環(huán)滿足條件應(yīng)做的事情N
for 臨時變量 in 待處理數(shù)據(jù)集(序列):
循環(huán)滿足條件應(yīng)做的事情1
循環(huán)滿足條件應(yīng)做的事情2
循環(huán)滿足條件應(yīng)做的事情N
【例】用 for 循環(huán)實(shí)現(xiàn)送小美 100 天玫瑰花,每天送 10 朵的功能。
for i in range(1, 101):
print(f"今天是向小美表白的第{i}天")
for j in range(1, 11):
print(f"送小美第{j}朵玫瑰花")
print("小美,我喜歡你")目前學(xué)習(xí)了 2 個循環(huán),while 循環(huán)和 for 循環(huán)。這兩種循環(huán)可以相互嵌套。
【例】用 for 循環(huán)打印九九乘法表。
for i in range(1, 10):
for j in range(1, 10):
if j <= i:
print(f"{j} * {i} = {j * i}\t", end = '')
print()2.3 break 和 continue
- break:所在的循環(huán)完全結(jié)束。
- continue:中斷本次循環(huán),直接進(jìn)入下一次循環(huán)。
注意點(diǎn):
- (1)兩者都可以用于 for 循環(huán)和 while 循環(huán)。
- (2)在嵌套循環(huán)中,兩者都只能作用于所在的循環(huán),無法對上層循環(huán)起作用。
【例】某公司,賬戶余額有 1 W元,給 20 名員工發(fā)工資。規(guī)則:
- (1)員工編號從 1 到 20,從編號1開始,依次領(lǐng)取工資,每人可領(lǐng)取 1000 元
- (2)領(lǐng)工資時,財務(wù)判斷員工的績效分(1~10)(隨機(jī)生成),如果低于 5,不發(fā)工資,換下一位。
- (3)如果工資發(fā)完了,結(jié)束發(fā)工資。
輸出格式如圖:

import random
money = 10000
for i in range(1, 21):
if money < 1000:
print("工資發(fā)完了,下個月領(lǐng)取吧")
break
score = random.randint(1, 10) #生成1~10的隨機(jī)整數(shù),包括1和10
if score < 5:
print(f"員工{i},績效分{score},低于5,不發(fā)工資,下一位")
else:
money -= 1000;
print(f"向員工{i}發(fā)放工資1000元,賬戶余額還剩余{money}元")輸出結(jié)果:
向員工1發(fā)放工資1000元,賬戶余額還剩余9000元
向員工2發(fā)放工資1000元,賬戶余額還剩余8000元
向員工3發(fā)放工資1000元,賬戶余額還剩余7000元
向員工4發(fā)放工資1000元,賬戶余額還剩余6000元
向員工5發(fā)放工資1000元,賬戶余額還剩余5000元
員工6,績效分3,低于5,不發(fā)工資,下一位
向員工7發(fā)放工資1000元,賬戶余額還剩余4000元
向員工8發(fā)放工資1000元,賬戶余額還剩余3000元
向員工9發(fā)放工資1000元,賬戶余額還剩余2000元
員工10,績效分3,低于5,不發(fā)工資,下一位
向員工11發(fā)放工資1000元,賬戶余額還剩余1000元
員工12,績效分1,低于5,不發(fā)工資,下一位
向員工13發(fā)放工資1000元,賬戶余額還剩余0元
工資發(fā)完了,下個月領(lǐng)取吧
3. 函數(shù)
3.1 函數(shù)的定義
函數(shù)的定義:
def 函數(shù)名(傳入?yún)?shù)):
函數(shù)體
return 返回值
函數(shù)的調(diào)用:
函數(shù)名(參數(shù))
# 函數(shù)定義
def say_hello():
print("hello world")
# 函數(shù)調(diào)用
say_hello() #輸出 hello world注意事項(xiàng):
- (1)參數(shù)如果不需要,可以省略(后續(xù)章節(jié)講解)。
- (2)返回值如果不需要,可以省略(后續(xù)章節(jié)講解)。
- (3)函數(shù)必須先定義后使用。
3.2 函數(shù)的參數(shù)
# 函數(shù)定義
def add(x, y):
print(f"{x} + {y} = {x + y}")
# 函數(shù)調(diào)用
add(3, 4)函數(shù)定義中的參數(shù),稱之為形式參數(shù);
函數(shù)調(diào)用中的參數(shù),稱之為實(shí)際參數(shù);
函數(shù)的參數(shù)數(shù)量不限,使用逗號分隔開;
傳入?yún)?shù)的時候,要和形式參數(shù)一一對應(yīng)(順序、個數(shù)),逗號隔開。
3.3 函數(shù)的返回值
帶返回值的函數(shù)的定義和調(diào)用:
# 函數(shù)定義
def add(x, y):
return x + y
# 函數(shù)調(diào)用
res = add(3, 4)
print(res) #輸出7question:如果函數(shù)沒有使用 return 語句返回數(shù)據(jù),那么函數(shù)有返回值嗎?
answer:有返回值。
why:Python 中有一個特殊的字面量:None,其類型是:<class’NoneType’>,
無返回值的函數(shù),實(shí)際上就是返回了:None 這個字面量,
函數(shù)返回 None,就表示沒有返回什么有意義的內(nèi)容,也就是返回了空的意思。
def say_he11o():
print("Hello...")
result = say_he11o()
print(result)
print(type(result))輸出結(jié)果:
Hello...
None
<class 'NoneType'>
None可以主動使用 return 返回,效果等同于不寫 return 語句:
def say_he11o():
print("Hello...")
return None
result = say_he11o()
print(result)
print(type(result))輸出結(jié)果:
Hello...
None
<class 'NoneType'>
None 作為一個特殊的字面量,用于表示:空、無意義,其有非常多的應(yīng)用場景。
- 用于函數(shù)無返回值。
- 用于 if 判斷。在 if 判斷中,None 等同于 False。在函數(shù)中可以主動返回 None,配合 if 判斷做相關(guān)處理。
def check_age(age):
if age >= 18:
return "success"
else:
return None
result = check_age(16)
if not result:
print("未滿18歲,不能進(jìn)網(wǎng)吧")用于聲明無內(nèi)容的變量。定義變量,但暫時不需要變量有具體值,可以用None來代替
#暫不賦予變量具體值 name = None
3.4 函數(shù)說明文檔
雖然函數(shù)的說明文檔只是注釋,隨便寫也沒啥,但最好要遵循一定的規(guī)范。
在函數(shù)內(nèi)寫引號一回車,就自動出現(xiàn)參數(shù)和返回值的說明頭部(這就是規(guī)范)。這樣就可以在此基礎(chǔ)上繼續(xù)補(bǔ)充。

寫好函數(shù)說明文檔后,將鼠標(biāo)懸停在函數(shù)的上方,會出現(xiàn)函數(shù)的說明信息。

3.5 函數(shù)的嵌套調(diào)用
函數(shù)的嵌套調(diào)用:在一個函數(shù)中,調(diào)用另外一個函數(shù)。
def func_b():
print("---2---")
def func_a():
print("---1---")
func_b()
print("---3---")
func_a() # 調(diào)用函數(shù)func_a輸出結(jié)果:
---1---
---2---
---3---
3.6 變量的作用域
變量主要分為兩類:局部變量和全局變量。
局部變量:定義在函數(shù)體內(nèi)部,只在函數(shù)內(nèi)部生效。
def testA():
num = 100
print(num)
testA() # 100
print(num)#報錯:name'num'is not defined變量 a 定義在 testA 函數(shù)內(nèi)部,在函數(shù)外部訪問則立即報錯。
局部變量的作用:在函數(shù)體內(nèi)部,臨時保存數(shù)據(jù),當(dāng)函數(shù)調(diào)用完成后銷毀。
全局變量:在函數(shù)內(nèi)、外都能生效的變量。
如果有一個數(shù)據(jù),在函數(shù) A 和函數(shù) B 中都要使用,則可以將這個數(shù)據(jù)存儲在一個全局變量中。
#定義全局變量num
num = 100
def testA():
print(num)
def testB():
print(num)
testA() #100
testB() #100global 關(guān)鍵字
現(xiàn)在有個需求:在函數(shù)內(nèi)部修改函數(shù)外的全局變量。
num = 200
def test_a():
print(f"test_a: {num}")
def test_b():
num = 500
print(f"test_b:{num}")
test_a()
test_b()
print(num)上述代碼輸出結(jié)果:
test_a: 200
test_b:500
200
代碼并沒有修改全局變量的值。原因是 test_b() 中的 num 是一個局部變量,與全局變量 num 沒有絲毫關(guān)系。
想要在函數(shù)內(nèi)修改全局變量,可以使用 global 關(guān)鍵字。
num = 200
def test_a():
print(f"test_a: {num}")
def test_b():
global num #增加了global
num = 500
print(f"test_b:{num}")
test_a()
test_b()
print(num)輸出結(jié)果:
test_a: 200
test_b:500
500
上面代碼中,global 關(guān)鍵字將 num 聲明為全局變量,這樣 test_b() 中的 num 與函數(shù)外的 num 就是同一個變量。
3.7 函數(shù)綜合案例
銀行系統(tǒng)查詢余額、存款、取款、退出功能。
初始余額 5000000 元,進(jìn)入系統(tǒng)時先輸入姓名。
money = 5000000
name = input("請輸入姓名:")
# 菜單
def menu():
print(f"{name},您好,歡迎來到黑馬銀行ATM,請選擇操作:")
print("查詢余額\t【輸入1】")
print("存款\t\t【輸入2】")
print("取款\t\t【輸入3]")
print("退出\t\t【輸入4】")
return input("請輸入您的選擇:")
# 查詢余額
def query(show_header):
# 控制是否輸出表頭
if show_header:
print("-------------查詢余額--------------")
print(f"{name},您好,您的余額剩余:{money}元")
# 取款
def save(deposit):
print("-------------存款--------------")
global money
money += deposit
print(f"{name},您好,您存款{deposit}元成功")
query(False)
# 存款
def get(withdraw):
print("-------------取款--------------")
global money
money -= withdraw
print(f"{name},您好,您取款{withdraw}元成功")
query(False)
while True:
choice = menu() # 用戶選擇
if choice == "1":
query(True)
elif choice == "2":
save(int(input("請輸入要存入的金額:")))
elif choice == "3":
get(int(input("請輸入要去除的金額:")))
else:
break
print("程序退出...")到此這篇關(guān)于Python 中的判斷語句,循環(huán)語句,函數(shù)的文章就介紹到這了,更多相關(guān)Python 判斷語句和循環(huán)語句內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)音樂下載的統(tǒng)計
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)音樂下載的統(tǒng)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
Python 將 QQ 好友頭像生成祝福語的實(shí)現(xiàn)代碼
這篇文章主要介紹了用 Python 將 QQ 好友頭像生成祝福語的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
Python 多線程C段掃描、檢測 Ping掃描腳本的實(shí)現(xiàn)
這篇文章主要介紹了Python 多線程C段掃描、檢測 Ping掃描腳本的實(shí)現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Python實(shí)現(xiàn)快速大文件比較代碼解析
這篇文章主要介紹了Python實(shí)現(xiàn)快速大文件比較代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09
用smtplib和email封裝python發(fā)送郵件模塊類分享
本文針對發(fā)郵件相關(guān)的操作進(jìn)行了封裝,包括發(fā)送文本、HTML、帶附件的郵件,使用Python發(fā)郵件,主要用到smtplib和email兩個模塊,需要的朋友可以參考下2014-02-02

