略
定義變量,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:
name = input('請輸入您要購買商品名稱:')
id = input('請輸入您要購買商品編號:')
price = input('請輸入您要購買的商品價格:')
print(f'您購買了{
name},商品編號為{
id},商品價格為{
price},歡迎下次光臨!')
以上程序雖然可以按照上圖完成程序的正常輸出,但是遺留了一個非常嚴重的問題:這個價格price變量無法參與數學運算(如買了兩個奧利奧,應該是18.5 * 2),原因在於input()方法返回的所有的結果都是str字符串類型。
怎麼解決以上問題呢? 答:使用數據類型轉換
案例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類型
數據類型轉換方法一共學了4個方法:
int() :轉整型
float() :轉浮點類型
str() :轉字符串類型
eval() :把字符串轉換為原數據類型
但是要特別注意:當float浮點類型轉換為int整型時,其小數點後面的數據會丟失,一定要記住這個特性。
需求:用戶手工輸入梯形的上底、下底以及高,能直接通過Python打印出梯形的面積為多少。
所謂的算數運算符就是我們日常生活中的加減乘除等待。
案例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}')
知識點:用戶輸入、數據類型轉換以及算術運算符
a = float(input('請輸入上底:'))
b = float(input('請輸入下底:'))
h = float(input('請輸入高:'))
s = (a + b) * h / 2
print(f'梯形的面積:{
s}')
案例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
復合賦值運算符 = 算術運算符 結合 賦值運算符
復合賦值運算符的計算順序 = 先執行算術運算符,執行完畢後,把結果在賦值給左邊的變量。
案例:綜合案例
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}')
特別注意:當我們使用比較運算符對兩個變量進行比較時,其返回一個布爾類型的值。
案例:兩個數大小的比較
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
練習題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}')
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
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
什麼是運算符的優先級?其實我們小學就已經接觸過了,就是在一個表達式中,我們先算誰的問題。
先算乘除,後算加減,有括號的先算括號裡面的。
個人建議:
① 不要把一個表達式寫得過於復雜,如果一個表達式過於復雜,嘗試把它拆分來書寫
② 不要過於依賴運算符的優先級來控制表達式的執行順序,這樣可讀性太差,應盡量使用( )來控制表達式的執行順序
在日常開發中,只要有需要進行條件判斷的語句基本上都是選擇判斷結構。
應用場景:
如果年齡大於等於18歲,則可以正常上網。
如果升級考試成績大於60分,則可以順利升級就業班。
Java:
if (條件判斷) {
則執行某段代碼...
}
但是Python中,不需要使用這麼多復雜的符號,直接可以編寫條件判斷及執行某段代碼
Python:
if 條件判斷:
則執行某段代碼...
print()
案例代碼:
if True:
print('條件成立執行的代碼1')
print('條件成立執行的代碼2')
# 下方的代碼沒有縮進到if語句塊,所以和if條件無關
print('我是無論條件是否成立都要執行的代碼')
需求:定義一個變量age = 18,判斷這個變量是否大於等於18歲,如果滿足條件,則可以上網。
案例1:直接定義判斷,進行條件判斷
age = 18
if age >= 18:
print('滿足18歲要求,可以正常上網')
案例2:上網吧案例升級版
age = int(input('請輸入您的年齡:'))
if age >= 18:
print('滿足18歲要求,可以正常上網')
if選擇原理圖:學編程除了會寫代碼還不行,還要回畫圖(流程圖)
基本語法:
if 條件判斷:
當條件判斷為True時,則執行這個語句段
else:
當條件判斷為False時,則執行這個語句段
案例3:上網吧案例升級升級版,引入else
age = int(input('請輸入您的年齡:'))
if age >= 18:
print('滿足18歲要求,可以正常上網')
else:
print('不滿足18歲要求,回家好好學習,天天向上')
if…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多重條件判斷原理圖:
基本語法:
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('沒錢,只能走路回家了')
參與游戲的角色有兩個(玩家 與 電腦),玩家手工出拳,電腦隨機出拳,根據石頭剪刀布判斷輸贏。
玩家:player(玩家手工輸入石頭、剪刀、布)
電腦:computer(隨機出拳)
輸贏結果很重要,有三種情況:
① 玩家贏
* player:石頭 贏 computer:剪刀
* palyer:剪刀 贏 computer:布
* player:布 贏 computer:石頭
② 平局
只要player 與 computer出拳相等,就代表平局
③ 電腦贏
如果不滿足以上兩個條件,則電腦獲勝!
未知知識點:如何讓計算機隨機出拳 => 隨機
確認: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('電腦獲勝')
遺留問題:計算機沒辦法隨機出拳
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('電腦獲勝')
在Python中三目運算符也叫三元運算符,其主要作用:就是用於簡化if…else…語句。
if 條件判斷:
# 語句段1
else:
# 語句段2
轉換為三目運算符:
語句段1 if 條件判斷 else 語句段2
需求:輸入兩個數值,返回最大值
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
需求:輸入兩個數值,返回最大值
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}')