<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
布林(bool)表達現實生活中的邏輯,即真和假:
True 和 False 的本質都是數位。True 記作 1,False 記作 0。
定義變數儲存布林型別資料:變數名 = 布林型別字面量
布林型別不僅可以自行定義,也可以通過比較運算得到布林型別的結果。
result = 10 > 5 print(f"result的值是{result},型別是{type(result)}")
輸出結果:
result的值是True,型別是<class 'bool'>
if 語句基本格式:
if 要判斷的條件: #不要忘記加冒號
條件成立時,要做的事情 #前面有4個空格縮排
【例】結合前面學習的input輸入語句,完成如下案例:
如下:
歡迎來到黑馬兒童遊樂場,兒童免費,成人收費。
請輸入你的年齡:30
您已成年
遊玩需要補票10元
祝您遊玩愉快。
print("歡迎來到黑馬兒童遊樂場,兒童免費,成人收費。") age = int(input("請輸入你的年齡:"))#型別轉換 if age >= 18: print("您已成年") #有4格縮排 print("遊玩需要補票10元") print("祝您遊玩愉快")
輸出結果1:
歡迎來到黑馬兒童遊樂場,兒童免費,成人收費。
請輸入你的年齡:20
您已成年
遊玩需要補票10元
祝您遊玩愉快
輸出結果2:
歡迎來到黑馬兒童遊樂場,兒童免費,成人收費。
請輸入你的年齡:10
祝您遊玩愉快
print("歡迎來到黑馬兒童遊樂場,兒童免費,成人收費。") age = int(input("請輸入你的年齡:"))#型別轉換 if age >= 18: print("您已成年,遊玩需要補票10元。") else:#同樣有冒號,且其中的語句有4個格縮排 print("您未成年,可以免費遊玩")
print("歡迎來到黑馬動物園") if int(input("請輸入你的身高(cm):")) < 120: print("您的身高小於120cm,可以免費遊玩") elif int(input("請輸入vip等級:")) > 3: print("您的vip等級大於3,可以免費遊玩") elif int(input("請告訴我今天幾號:")) == 1: print("今天是1號免費日,可以免費遊玩") else: print("不好意思,您不滿足免費遊玩的條件,需購票")
基礎語法格式如下:
if 條件1:
滿足條件1時做的事情1
滿足條件1時做的事情2
if 條件2:
滿足條件2時做的事情1
滿足條件2時做的事情2
如上面程式碼,第二個 if 在第一個 if 內,只有滿足第一個 if 的條件時,才會執行第二個 if。
巢狀的關鍵點在於:空格縮排。
Python 就是通過空格縮排來決定語句之間的層次關係。
print("歡迎來到黑馬動物園") if int(input("請輸入你的身高(cm):")) > 120: print("您的身高大於120cm,不能免費遊玩") print("不過,若您的vip等級超過3,可以免費遊玩") if int(input("請輸入vip等級:")) > 3: print("您的vip等級大於3,可以免費遊玩") else: print("不好意思,您不滿足免費遊玩的條件,需購票") else: print("您的身高小於120cm,可以免費遊玩")
while 條件:
條件滿足時,做的事情1
條件滿足時,做的事情2
條件滿足時,做的事情3
...
【例】設定一個範圍 1~100 的隨機整數變數,通過 while 迴圈,配合 input 語句,判斷輸入的數位是否等於亂數。
要求:
import random count = 0 num = random.randint(1,100)#生成1~100的隨機整數,包括1和100 while True: guess = int(input("請輸入猜測的數位:")) count += 1 #python中沒有count++這種累加操作 if guess == num: print("猜中了") break else: if guess < num: print("小了") else: print("大了") print("共猜了%d次" % count)
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
補充知識
print 語句預設情況下,輸出內容會自動換行,如下圖:
在即將完成的案例中,需要使用 print 語句輸出時不換行的功能,加上end=''
即可:
ps:end=''
使用了方法傳參功能,後面會詳細講解。
【例2】列印九九乘法表
i = 1 while i < 10: j = 1 while j <= i: print(f"{j} * {i} = {j * i}t", end = '') j += 1 i += 1 print()
for 臨時變數 in 待處理資料集(序列):
迴圈滿足條件時執行的程式碼
遍歷字串:
info = "hello" for ch in info: print(ch)
輸出結果:
h
e
l
l
o
由此看出,與 while 迴圈不同,for 迴圈無法定義迴圈條件,只能從被處理的資料集裡,依次取出內容進行處理。
所以,理論上講,Python 的 for 迴圈無法構建無限迴圈(被處理的資料集不可能無限大)
【例】統計 “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個a
for 迴圈語法中待處理資料集,嚴格來說,稱為序列型別。
序列型別:其內容可以一個個依次取出的一種型別,包括:字串、列表、元組 等。
目前只介紹了字串型別,其餘型別後面會詳細講解。
由於現階段只介紹了字串,所以暫且只能通過 range 語句,可以獲得一個簡單的數位序列(range 語句還有其他用途,後面詳講)。
range(num):獲取一個從 0 開始,到 num 結束的數位序列(不含 num 本身)
如:range(5) 取得的資料是:[0,1,2,3,4]
range(num1, num2):獲得一個從 num1 開始,到 num2 結束的數位序列(不含 num2 本身)
如:range(5,10)取得的資料是:[5,6,7,8,9]
range (num1, num2, step):獲得一個從 num1 開始,到 num2 結束的數位序列(不含 num2 本身)
數位之間的步長,以 step 為準(step 預設為1)
如:range(5,10,2) 取得的資料是:[5,7,9]
range 語句通常配合 for 使用:
for i in range(5): print(i)
輸出結果:
0
1
2
3
4
【例】
有了 range 語句,前面送 10 朵玫瑰花的操作也可以用 for 迴圈實現:
count = 0 for i in range(1, 100): if i % 2 == 0: count += 1 print(f"共有{count}個偶數") # 共有49個偶數
如程式碼,思考:最後的 print 語句,能否存取到變數 i?
for i in range(5): print(i) print(i) # 能否存取到變數i?
規範上:不允許
實際上:可以,最後的 print 語句輸出 4
回看 for 迴圈的語法:
for 臨時變數 in 待處理資料集(序列):
迴圈滿足條件時執行的程式碼
我們會發現,將從資料集(序列)中取出的資料賦值給臨時變數。
該臨時變數,在程式設計規範上,作用範圍(作用域),限定在 for 迴圈內部。
如果在 for 迴圈外部存取該臨時變數,實際上可以存取到;但在程式設計規範上,不允許、不建議這麼做。
上面程式碼中,若想要在 for 迴圈外面使用 i,可以將 i 定義在 for 迴圈外面:
i = 0 for i in range(5): print(i) print(i)
for 臨時變數 in 待處理資料集(序列):
迴圈滿足條件應做的事情1
迴圈滿足條件應做的事情2
迴圈滿足條件應做的事情N
for 臨時變數 in 待處理資料集(序列):
迴圈滿足條件應做的事情1
迴圈滿足條件應做的事情2
迴圈滿足條件應做的事情N
【例】用 for 迴圈實現送小美 100 天玫瑰花,每天送 10 朵的功能。
for i in range(1, 101): print(f"今天是向小美表白的第{i}天") for j in range(1, 11): print(f"送小美第{j}朵玫瑰花") print("小美,我喜歡你")
目前學習了 2 個迴圈,while 迴圈和 for 迴圈。這兩種迴圈可以相互巢狀。
【例】用 for 迴圈列印九九乘法表。
for i in range(1, 10): for j in range(1, 10): if j <= i: print(f"{j} * {i} = {j * i}t", end = '') print()
注意點:
【例】某公司,賬戶餘額有 1 W元,給 20 名員工發工資。規則:
輸出格式如圖:
import random money = 10000 for i in range(1, 21): if money < 1000: print("工資發完了,下個月領取吧") break score = random.randint(1, 10) #生成1~10的隨機整數,包括1和10 if score < 5: print(f"員工{i},績效分{score},低於5,不發工資,下一位") else: money -= 1000; print(f"向員工{i}發放工資1000元,賬戶餘額還剩餘{money}元")
輸出結果:
向員工1發放工資1000元,賬戶餘額還剩餘9000元
向員工2發放工資1000元,賬戶餘額還剩餘8000元
向員工3發放工資1000元,賬戶餘額還剩餘7000元
向員工4發放工資1000元,賬戶餘額還剩餘6000元
向員工5發放工資1000元,賬戶餘額還剩餘5000元
員工6,績效分3,低於5,不發工資,下一位
向員工7發放工資1000元,賬戶餘額還剩餘4000元
向員工8發放工資1000元,賬戶餘額還剩餘3000元
向員工9發放工資1000元,賬戶餘額還剩餘2000元
員工10,績效分3,低於5,不發工資,下一位
向員工11發放工資1000元,賬戶餘額還剩餘1000元
員工12,績效分1,低於5,不發工資,下一位
向員工13發放工資1000元,賬戶餘額還剩餘0元
工資發完了,下個月領取吧
函數的定義:
def 函數名(傳入引數):
函數體
return 返回值
函數的呼叫:
函數名(引數)
# 函數定義 def say_hello(): print("hello world") # 函數呼叫 say_hello() #輸出 hello world
注意事項:
# 函數定義 def add(x, y): print(f"{x} + {y} = {x + y}") # 函數呼叫 add(3, 4)
函數定義中的引數,稱之為形式引數;
函數呼叫中的引數,稱之為實際引數;
函數的引數數量不限,使用逗號分隔開;
傳入引數的時候,要和形式引數一一對應(順序、個數),逗號隔開。
帶返回值的函數的定義和呼叫:
# 函數定義 def add(x, y): return x + y # 函數呼叫 res = add(3, 4) print(res) #輸出7
question:如果函數沒有使用 return 語句返回資料,那麼函數有返回值嗎?
answer:有返回值。
why:Python 中有一個特殊的字面量:None,其型別是:<class’NoneType’>,
無返回值的函數,實際上就是返回了:None 這個字面量,
函數返回 None,就表示沒有返回什麼有意義的內容,也就是返回了空的意思。
def say_he11o(): print("Hello...") result = say_he11o() print(result) print(type(result))
輸出結果:
Hello...
None
<class 'NoneType'>
None可以主動使用 return 返回,效果等同於不寫 return 語句:
def say_he11o(): print("Hello...") return None result = say_he11o() print(result) print(type(result))
輸出結果:
Hello...
None
<class 'NoneType'>
None 作為一個特殊的字面量,用於表示:空、無意義,其有非常多的應用場景。
def check_age(age): if age >= 18: return "success" else: return None result = check_age(16) if not result: print("未滿18歲,不能進網咖")
用於宣告無內容的變數。定義變數,但暫時不需要變數有具體值,可以用None來代替
#暫不賦予變數具體值 name = None
雖然函數的說明檔案只是註釋,隨便寫也沒啥,但最好要遵循一定的規範。
在函數內寫引號一回車,就自動出現引數和返回值的說明頭部(這就是規範)。這樣就可以在此基礎上繼續補充。
寫好函數說明檔案後,將滑鼠懸停在函數的上方,會出現函數的說明資訊。
函數的巢狀呼叫:在一個函數中,呼叫另外一個函數。
def func_b(): print("---2---") def func_a(): print("---1---") func_b() print("---3---") func_a() # 呼叫函數func_a
輸出結果:
---1---
---2---
---3---
變數主要分為兩類:區域性變數和全域性變數。
區域性變數:定義在函數體內部,只在函數內部生效。
def testA(): num = 100 print(num) testA() # 100 print(num)#報錯:name'num'is not defined
變數 a 定義在 testA 函數內部,在函數外部存取則立即報錯。
區域性變數的作用:在函數體內部,臨時儲存資料,當函數呼叫完成後銷燬。
全域性變數:在函數內、外都能生效的變數。
如果有一個資料,在函數 A 和函數 B 中都要使用,則可以將這個資料儲存在一個全域性變數中。
#定義全域性變數num num = 100 def testA(): print(num) def testB(): print(num) testA() #100 testB() #100
global 關鍵字
現在有個需求:在函數內部修改函數外的全域性變數。
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)
上述程式碼輸出結果:
test_a: 200
test_b:500
200
程式碼並沒有修改全域性變數的值。原因是 test_b() 中的 num 是一個區域性變數,與全域性變數 num 沒有絲毫關係。
想要在函數內修改全域性變數,可以使用 global 關鍵字。
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)
輸出結果:
test_a: 200
test_b:500
500
上面程式碼中,global 關鍵字將 num 宣告為全域性變數,這樣 test_b() 中的 num 與函數外的 num 就是同一個變數。
銀行系統查詢餘額、存款、取款、退出功能。
初始餘額 5000000 元,進入系統時先輸入姓名。
money = 5000000 name = input("請輸入姓名:") # 選單 def menu(): print(f"{name},您好,歡迎來到黑馬銀行ATM,請選擇操作:") print("查詢餘額t【輸入1】") print("存款tt【輸入2】") print("取款tt【輸入3]") print("退出tt【輸入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("程式退出...")
到此這篇關於Python 中的判斷語句,迴圈語句,函數的文章就介紹到這了,更多相關Python 判斷語句和迴圈語句內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45