Python运算符与if结构
Python運算符與if結構
一、昨日回顧
1、回顧昨天的課程內容
略
2、回顧昨天的作業
定義變量,c1 = ‘可樂’,c2 = ‘牛奶’,通過Python代碼把c1內容調整為牛奶,c2調整為可樂。
# 1、定義兩個變量 c1 = '可樂' c2 = '牛奶'# 2、使用python將c1和c2的值進行交換(引入第三方變量,如temp) # 第一步:首先把c2杯中的牛奶放入臨時temp杯子中 temp = c2 # 第二步:把c1中值賦值給c2這個變量(相當于把c1中的可樂倒入c2中) c2 = c1 # 第三步:把temp杯子中的牛奶倒入c1種 c1 = tempprint(f'1號杯中:{c1}') print(f'2號杯中:{c2}')二、Python數據類型轉換
1、使用Python實現超市的收銀系統
Python:
name = input('請輸入您要購買商品名稱:') id = input('請輸入您要購買商品編號:') price = input('請輸入您要購買的商品價格:')print(f'您購買了{name},商品編號為{id},商品價格為{price},歡迎下次光臨!')以上程序雖然可以按照上圖完成程序的正常輸出,但是遺留了一個非常嚴重的問題:這個價格price變量無法參與數學運算(如買了兩個奧利奧,應該是18.5 * 2),原因在于input()方法返回的所有的結果都是str字符串類型。
怎么解決以上問題呢? 答:使用數據類型轉換
2、了解Python數據類型的轉換方法
| int(x [,base ]) | 將x轉換為一個整數 |
| float(x) | 將x轉換為一個浮點數 |
| complex(real [,imag ]) | 創建一個復數,real為實部,imag為虛部 |
| str(x) | 將對象 x 轉換為字符串 |
| repr(x) | 將對象 x 轉換為表達式字符串 |
| eval(str) | 用來計算在字符串中的有效Python表達式,并返回一個對象 |
| tuple(s) | 將序列 s 轉換為一個元組 |
| list(s) | 將序列 s 轉換為一個列表 |
| chr(x) | 將一個整數轉換為一個Unicode字符 |
| ord(x) | 將一個字符轉換為它的ASCII整數值 |
| hex(x) | 將一個整數轉換為一個十六進制字符串 |
| oct(x) | 將一個整數轉換為一個八進制字符串 |
| bin(x) | 將一個整數轉換為一個二進制字符串 |
案例1:把用戶輸入的幸運數字,轉換為整型
num = input('請輸入您的幸運數字:') print(type(num))# 數據類型轉換,把str字符串類型轉換為int類型 print('-' * 20)num = int(num) print(type(num))以上代碼還可以簡寫為:
num = int(input('請輸入您的幸運數字:')) print(type(num))案例2:多種數據類型轉換
# 1、整型轉浮點類型 int => float num1 = 10 print(float(num1)) print(type(float(num1)))print('-' * 20)# 2、浮點類型轉換為整型 float => int,浮點轉整型,其小數點后的數據會丟失!!! num2 = 18.88 print(int(num2))print('-' * 20)# 3、把字符串類型轉換為整型或浮點類型 str1 = '20' str2 = '10.88' print(type(int(str1))) print(type(float(str2)))案例3:eval()方法的使用,把字符串中的數字轉換為原數據類型
price = input('請輸入您購買商品的價格:') print(eval(price)) print(type(eval(price)))str1 = ‘10’ 經過eval(str1) 轉換為int類型
str2 = ‘10.88’ 經過eval(str1) 轉換為float類型
3、總結
數據類型轉換方法一共學了4個方法:
int() :轉整型
float() :轉浮點類型
str() :轉字符串類型
eval() :把字符串轉換為原數據類型
但是要特別注意:當float浮點類型轉換為int整型時,其小數點后面的數據會丟失,一定要記住這個特性。
三、Python運算符
1、運算案例
需求:用戶手工輸入梯形的上底、下底以及高,能直接通過Python打印出梯形的面積為多少。
2、算術運算符
所謂的算數運算符就是我們日常生活中的加減乘除等待。
| + | 加 | 1 + 1 輸出結果為 2 |
| - | 減 | 1 - 1 輸出結果為 0 |
| * | 乘 | 2 * 2 輸出結果為 4 |
| / | 除 | 10 / 2 輸出結果為 5 |
| // | 整除 | 9 // 4 輸出結果為 2 |
| % | 取余(取模) | 9 % 4 輸出結果為 1 |
| ** | 冪指數 | 2 ** 4 輸出結果為 16,即2的4次方,2 * 2 * 2 * 2 |
| () | 小括號 | 小括號用來提高運算優先級,即 (1 + 2) * 3 輸出結果為 9 |
案例1:了解一下算術運算符
num1 = 10 num2 = 2# 四則運算 + - * / print(f'加:{num1 + num2}') print(f'減:{num1 - num2}') print(f'乘:{num1 * num2}') print(f'除:{num1 / num2}')案例2:和其他編程語言不太相同的幾個算術運算符
num1 = 20 num2 = 6 num3 = 5# 1、整除 print(f'整除:{num1 // num2}') # 2、求余數 print(f'余數:{num1 % num2}') # 3、冪指數 print(f'冪指數:{num2 ** 3}') # 4、圓括號 print(f'優先級:{(num1 + num2) * num3}')3、算術運算符案例:求梯形的面積
知識點:用戶輸入、數據類型轉換以及算術運算符
a = float(input('請輸入上底:')) b = float(input('請輸入下底:')) h = float(input('請輸入高:'))s = (a + b) * h / 2print(f'梯形的面積:{s}')4、賦值運算符
| = | 賦值 | 將=右側的結果賦值給等號左側的變量 |
案例1:把某個值賦值給某個變量
num = 10案例2:多個變量同時進行賦值操作
n = 5 f = 10.88 s = 'hello world'簡寫為:
n, f, s = 5, 10.88, 'hello world' print(n) print(f) print(s)案例3:多個變量賦予相同的值
a = 10 b = 10簡寫為:
a = b = 105、復合賦值運算符
復合賦值運算符 = 算術運算符 結合 賦值運算符
復合賦值運算符的計算順序 = 先執行算術運算符,執行完畢后,把結果在賦值給左邊的變量。
案例:綜合案例
i = 1 # 相加并賦值,先加1,然后把結果賦值給左邊的變量 i += 1 print(f'更新后,i的值為:{i}')num1 = 9 # 取模并賦值,先求余數,然后在把結果賦值給左邊的變量 num1 %= 2 print(f'更新后,num1的值為:{num1}')num2 = 2 # 冪指數并賦值,先求冪指數,然后把結果賦值給左邊的變量 num2 **= 3 print(f'更新后,num2的值為:{num2}')6、比較運算符
特別注意:當我們使用比較運算符對兩個變量進行比較時,其返回一個布爾類型的值。
案例:兩個數大小的比較
num1 = 10 num2 = 20print(num1 > num2) # False print(num1 < num2) # True print(num1 >= num2) # False print(num1 <= num2) # True print(num1 == num2) # False print(num1 != num2) # True7、練習題
練習題1:提示用戶輸入圓的半徑,根據公式S = πr2求圓的面積
r = float(input('請輸入要計算圓的半徑:')) PI = 3.14 s = PI * r ** 2 print(f'圓的面積為:{s}')練習題2:賦值運算 => 輸入身高,體重,求BMI = 體重(kg)/身高(m)的平方。
height = float(input('請輸入您的身高(m):')) weight = float(input('請輸入您的體重(kg):'))bmi = weight / height ** 2print(f'您的BMI值為{bmi}')8、邏輯運算符(與或非)
not就是取反,只有一個表達式not 表達式,如果表達式為True,則not以后就返回False。反之,則返回True。
講個非誠勿擾的小故事:
① 女孩子要求比較高,要求男孩子必須要有房且有車
表達式1 and 表達式2 當表達式1為True且表達式2為True時,則整個表達式返回結果為True 當表達式1或表達式2中有一個表達式為假,則整個表達式返回結果為False有房 and 有車 則 牽手成功 有房 and 沒車 則 牽手失敗 沒房 and 有車 則 牽手失敗② 女孩子要求一般,要求男孩子有房或者有車即可
表達式1 or 表達式2 當表達式1為True或表達式2為True時,則整個表達式返回結果為True 當表達式1與表達式2都為False時,則整個表達式才會返回False有房 or 有車 則 牽手成功 有房 or 沒車 則 牽手成功 沒房 or 有車 則 牽手成功 沒房 or 沒車 則 牽手失敗案例:
a = 1 b = 2 c = 3print((a > b) and (b > c)) # False print((a > b) or (b > c)) # False print((a < b) or (b > c)) # True print(not (a > b)) # True9、擴展:短路運算
print(3 and 4 and 5) # 5 print(5 and 6 or 7) # 6 4 > 3 and print('hello world') # 輸出hello world在邏輯運算中,不一定邏輯運算符的兩邊都是純表達式。也可以是數值類型的數據。
Python把0、空字符串和None看成 False,其他數值和非空字符串都看成 True,所以:
① 在計算 a and b 時,如果 a 是 False,則根據與運算法則,整個結果必定為 False,因此返回 a;如果 a 是 True,則整個計算結果必定取決與 b,因此返回 b。
print(3 and 4) # 4 print(0 and 1) # 0② 在計算 a or b 時,如果 a 是 True,則根據或運算法則,整個計算結果必定為 True,因此返回 a;如果 a 是 False,則整個計算結果必定取決于 b,因此返回 b。 所以Python解釋器在做布爾運算時,只要能提前確定計算結果,它就不會往后算了,直接返回結果。
print(6 or 7) # 6 print(6 and 7 or 8) # 710、運算符的優先級
什么是運算符的優先級?其實我們小學就已經接觸過了,就是在一個表達式中,我們先算誰的問題。
先算乘除,后算加減,有括號的先算括號里面的。
個人建議:
① 不要把一個表達式寫得過于復雜,如果一個表達式過于復雜,嘗試把它拆分來書寫
② 不要過于依賴運算符的優先級來控制表達式的執行順序,這樣可讀性太差,應盡量使用( )來控制表達式的執行順序
四、if選擇判斷結構
1、if選擇判斷結構作用
在日常開發中,只要有需要進行條件判斷的語句基本上都是選擇判斷結構。
應用場景:
如果年齡大于等于18歲,則可以正常上網。
如果升級考試成績大于60分,則可以順利升級就業班。
2、if選擇判斷結構的基本語法
Java:
if (條件判斷) {則執行某段代碼... }但是Python中,不需要使用這么多復雜的符號,直接可以編寫條件判斷及執行某段代碼
Python:
if 條件判斷:則執行某段代碼... print()案例代碼:
if True:print('條件成立執行的代碼1')print('條件成立執行的代碼2')# 下方的代碼沒有縮進到if語句塊,所以和if條件無關 print('我是無論條件是否成立都要執行的代碼')3、if選擇結構案例
需求:定義一個變量age = 18,判斷這個變量是否大于等于18歲,如果滿足條件,則可以上網。
案例1:直接定義判斷,進行條件判斷
age = 18 if age >= 18:print('滿足18歲要求,可以正常上網')案例2:上網吧案例升級版
age = int(input('請輸入您的年齡:')) if age >= 18:print('滿足18歲要求,可以正常上網')if選擇原理圖:學編程除了會寫代碼還不行,還要回畫圖(流程圖)
4、if…else…結構
基本語法:
if 條件判斷:當條件判斷為True時,則執行這個語句段 else:當條件判斷為False時,則執行這個語句段案例3:上網吧案例升級升級版,引入else
age = int(input('請輸入您的年齡:')) if age >= 18:print('滿足18歲要求,可以正常上網') else:print('不滿足18歲要求,回家好好學習,天天向上')if…else…結構原理圖:
5、if…elif…else多條件判斷結構
如果條件1成立,則執行語句段1
如果條件2成立,則執行語句段2
…
當所有條件都不成立時,則執行else語句段中的內容
if 條件判斷1:如果此條件為True,則執行這個語句段 elif 條件判斷2:如果此條件為True,則執行這個語句段 elif ...:... else:如果以上所有條件判斷都不滿足時,則執行這個語句段案例:
① 中國合法工作年齡為18-60歲,即如果年齡小于18的情況為童工,不合法;
② 如果年齡在18-60歲之間為合法工齡;
③ 大于60歲為法定退休年齡。
# 定義一個變量,接收用戶輸入的年齡 age = int(input('請輸入您的年齡:')) if age < 18:print('你還是一個童工,回去好好學習') elif age >= 18 and age <=60:print('合法工齡,可以正常工作') elif age > 60:print('您已經達到了退休年齡,回家好好休息') else:print('信息輸入有誤,請重新輸入')簡寫形式:
# 定義一個變量,接收用戶輸入的年齡 age = int(input('請輸入您的年齡:')) if age < 18:print('你還是一個童工,回去好好學習') elif 18 <= age <= 60:print('合法工齡,可以正常工作') elif age > 60:print('您已經達到了退休年齡,回家好好休息') else:print('信息輸入有誤,請重新輸入')if多重條件判斷原理圖:
6、if嵌套結構
基本語法:
if 外層條件判斷:# 如果條件為True,則執行以下語句段if 內層條件判斷:# 如果內層條件為True,則執行以下語句段 else:# 如果條件為False,則執行以下語句段嵌套結構看起來異常復雜,但是我們在編寫時要遵循一個原則:先編寫外層判斷,所有語句編寫完成后,在編寫內層條件判斷結構。
案例:外層條件①,是否有錢,有錢可以上車。內層條件 ② 判斷是否有空座位,如果有,則可以坐下。
""" 根據條件(是否有錢)判斷是否可以上車 money = 0 沒錢 money = 1 有錢 """ money = 1 seat = 0 if money == 1:# 有錢,可以上車print('有錢,可以上車')# if嵌套(seat = 1代表有空座,seat = 0代表沒有空座)if seat == 1:# 有座位,可以坐下print('有座位,可以坐下')else:# 沒有座位,只能站著回家了print('沒有座位,只能站著回家了') else:# 沒錢,只能走路回家了print('沒錢,只能走路回家了')五、綜合案例:石頭剪刀布
1、需求分析
參與游戲的角色有兩個(玩家 與 電腦),玩家手工出拳,電腦隨機出拳,根據石頭剪刀布判斷輸贏。
玩家:player(玩家手工輸入石頭、剪刀、布)
電腦:computer(隨機出拳)
輸贏結果很重要,有三種情況:
① 玩家贏
☆ player:石頭 贏 computer:剪刀
☆ palyer:剪刀 贏 computer:布
☆ player:布 贏 computer:石頭
② 平局
只要player 與 computer出拳相等,就代表平局
③ 電腦贏
如果不滿足以上兩個條件,則電腦獲勝!
未知知識點:如何讓計算機隨機出拳 => 隨機
2、代碼實現
確認:if…elif…else多條件分支結構
# 第一步:提示輸入輸入石頭剪刀布,0-代表石頭,1代表剪刀,2代表布 player = int(input('請輸入您的出拳0-代表石頭,1代表剪刀,2代表布:')) # 第二步:電腦隨機出拳(后續解決) computer = 1 # 第三步:根據用戶以及計算機的出拳判斷輸贏 # 什么情況,玩家會贏 # player==0且computer==1 或 palyer==1且computer==2 或 player==2且computer==0 if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player==2 and computer == 0):print('玩家獲勝') elif player == computer:print('平局') else:print('電腦獲勝')遺留問題:計算機沒辦法隨機出拳
3、隨機出拳
Python語言非常的強大,強大之處就在于其擁有很多模塊(module),這些模塊中擁有很多別人已經開發好的代碼,我們可以直接導入到我們的程序中即可使用。
① import導入模塊
② 通過模塊.方法()調用相關功能
隨機出拳其實就是隨機從0,1,2中選出一個數字
import random# 調用內部封裝的方法 computer = random.randint(0, 2)改進猜拳代碼:
import random# 第一步:提示輸入輸入石頭剪刀布,0-代表石頭,1代表剪刀,2代表布 player = int(input('請輸入您的出拳0-代表石頭,1代表剪刀,2代表布:')) # 第二步:電腦隨機出拳(后續解決) computer = random.randint(0, 2)print(computer)# 第三步:根據用戶以及計算機的出拳判斷輸贏 # 什么情況,玩家會贏 # player==0且computer==1 或 palyer==1且computer==2 或 player==2且computer==0 if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player==2 and computer == 0):print('玩家獲勝') elif player == computer:print('平局') else:print('電腦獲勝')六、三目運算符
1、什么是三目運算符
在Python中三目運算符也叫三元運算符,其主要作用:就是用于簡化if…else…語句。
2、基本語法
if 條件判斷:# 語句段1 else:# 語句段2轉換為三目運算符:
語句段1 if 條件判斷 else 語句段23、三目運算符案例
需求:輸入兩個數值,返回最大值
num1 = 10 num2 = 20if num1 > num2:print(f'最大值為{num1}') else:print(f'最大值為{num2}')簡化:三目運算符
num1 = 10 num2 = 20max = num1 if num1 > num2 else num2 print(f'最大值為{max}')yer0且computer1 或 palyer1且computer2 或 player2且computer0
if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player==2 and computer == 0):
print(‘玩家獲勝’)
elif player == computer:
print(‘平局’)
else:
print(‘電腦獲勝’)
轉換為三目運算符:
語句段1 if 條件判斷 else 語句段23、三目運算符案例
需求:輸入兩個數值,返回最大值
num1 = 10 num2 = 20if num1 > num2:print(f'最大值為{num1}') else:print(f'最大值為{num2}')簡化:三目運算符
num1 = 10 num2 = 20max = num1 if num1 > num2 else num2 print(f'最大值為{max}')總結
以上是生活随笔為你收集整理的Python运算符与if结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ORACLE序列的作用
- 下一篇: udt常见问题