程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python運算符與if結構

編輯:Python

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 = temp
print(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 / 2
print(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 = 10

5、復合賦值運算符

復合賦值運算符 = 算術運算符 結合 賦值運算符

復合賦值運算符的計算順序 = 先執行算術運算符,執行完畢後,把結果在賦值給左邊的變量。

案例:綜合案例

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 = 20
print(num1 > num2) # False
print(num1 < num2) # True
print(num1 >= num2) # False
print(num1 <= num2) # True
print(num1 == num2) # False
print(num1 != num2) # True

7、練習題

練習題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 ** 2
print(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 = 3
print((a > b) and (b > c)) # False
print((a > b) or (b > c)) # False
print((a < b) or (b > c)) # True
print(not (a > b)) # True

9、擴展:短路運算

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) # 7

10、運算符的優先級

什麼是運算符的優先級?其實我們小學就已經接觸過了,就是在一個表達式中,我們先算誰的問題。

先算乘除,後算加減,有括號的先算括號裡面的。

個人建議:

① 不要把一個表達式寫得過於復雜,如果一個表達式過於復雜,嘗試把它拆分來書寫

② 不要過於依賴運算符的優先級來控制表達式的執行順序,這樣可讀性太差,應盡量使用( )來控制表達式的執行順序

四、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 語句段2

3、三目運算符案例

需求:輸入兩個數值,返回最大值

num1 = 10
num2 = 20
if num1 > num2:
print(f'最大值為{
num1}')
else:
print(f'最大值為{
num2}')

簡化:三目運算符

num1 = 10
num2 = 20
max = 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、什麼是三目運算符
在Python中三目運算符也叫三元運算符,其主要作用:就是用於簡化if...else...語句。
## 2、基本語法
```python
if 條件判斷:
# 語句段1
else:
# 語句段2

轉換為三目運算符:

語句段1 if 條件判斷 else 語句段2

3、三目運算符案例

需求:輸入兩個數值,返回最大值

num1 = 10
num2 = 20
if num1 > num2:
print(f'最大值為{
num1}')
else:
print(f'最大值為{
num2}')

簡化:三目運算符

num1 = 10
num2 = 20
max = num1 if num1 > num2 else num2
print(f'最大值為{
max}')

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved