程式與使用者互動
什麼是與使用者傳遞
使用者互動就是人往計算機中input/輸入資料,計算機print/輸出結果
為什麼要與使用者互動
為了讓計算機能夠像人一樣與使用者溝通交流
比如,過去我們去銀行取錢,使用者需要把帳号密碼告訴櫃員,而現在,櫃員被ATM機取代,ATM機就是一台計算機,是以使用者同樣需要将帳号密碼告訴計算機,于是我們的程式中必須有相應的機制來控制計算機接收使用者輸入的内容,并且輸出結果
如何與使用者互動

互動的本質就是輸入、輸出
輸入input:
補充:
在python2中存在一個raw_input功能與python3中的input功能一模一樣
在python2中還存在一個input功能,需要使用者輸入一個明确的資料類型,輸入什麼類型就存成什麼類型
輸出print:
輸出之格式化輸出
什麼是格式化輸出
把一段字元串裡面的某些内容替換掉之後再輸出,就是格式化輸出。
為什麼要格式化輸出
我們經常會輸出具有某種固定格式的内容,比如:'尊敬的xxx你好!你xxx月的話費是xxx,餘額是xxx‘,我們需要做的就是将xxx替換為具體的内容。
如何格式輸出
使用占位符,如:%s %d {}
'尊敬的%s你好!你xxx月的話費是%d,餘額是%d‘
基本運算符
算數運算符
python支援的算數運算符與數學上計算的符号使用是一緻的
算數運算符 | 描述 |
+ | 加,兩個對象相加 |
- | 減,兩個對象相減 |
* | 乘,兩個對象相乘 |
/ | 除,相除後得到大的傳回值會保留整數與小數部分 |
// | 取整數,相除後得到的傳回值隻保留整數部分 |
% | 相餘,相除後隻傳回餘數 |
** | 幂,取員工數的n次方 |
比較運算符
比較運算用來對兩個值進行比較,傳回的是布爾值True或False
比較運算符 | 描述 |
== | 等于,兩個對象相等則傳回True,否則傳回False |
!= | 不等于,兩個對象不等于則傳回False,否則傳回True |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
指派運算符
python文法中除了有=号這種簡單的指派運算外,還支援增量指派、鍊式指派、交叉指派、解壓指派,這些指派運算符存在的意義都是為了讓我們的代碼看起來更加精簡
增量指派
指派運算符 | 描述 | 示例 |
= | 簡單指派運算 | x =10 |
+= | 加法指派運算 | x+=1等同與x=x+1 |
-= | 減法指派運算 | y-=1等同與 y=y-1 |
*= | 乘法指派運算 | 同上 |
/= | 除法指派運算 | 同上 |
//= | 取整除指派運算 | 同上 |
%= | 取餘指派運算 | 同上 |
**= | 幂指派運算 | 同上 |
鍊式指派
>>> z=1
>>> y=z
>>> x=y
>>> x,y,z
(1, 1, 1)
鍊式指派指的是可以用一行代碼搞定這件事
x=y=z=1
交叉指派
定義兩個變量下x,y
x=1
y=2
将x與y的值交換過來
t=x
x=y
y=t
交叉指派指的是一行代碼可以搞定這件事
x=1
y=2
x,y=y,x #交叉指派
解壓指派
如果我們想把清單中的多個值取出來依次指派給多個變量名,可以這麼做
>>> nums=[11,22,33,44,55]
>>>
>>> a=nums[0]
>>> b=nums[1]
>>> c=nums[2]
>>> d=nums[3]
>>> e=nums[4]
>>> a,b,c,d,e
(11, 22, 33, 44, 55)
解壓指派指的是一行代碼可以搞定這件事
>>> a,b,c,d,e=nums # nums包含多個值,就好比一個壓縮包,解壓指派是以得名
>>> a,b,c,d,e
(11, 22, 33, 44, 55)
注意,上述解壓指派,等号左邊的變量名個數必須與右面包含值的個數相同,否則會報錯
#1、變量名少了
>>> a,b=nums
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
#2、變量名多了
>>> a,b,c,d,e,f=nums
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 6, got 5)
但如果我們隻想取頭尾的幾個值,可以用*_比對
>>> a,b,*_=nums
>>> a,b
(11, 22)
ps:字元串、字典、元組、集合類型都支援解壓指派
邏輯運算符
邏輯運算符用于連接配接多個條件,進行關聯判斷,會傳回布爾值True或False
邏輯運算符 | 描述 | 示例 |
and | 邏輯與,用于連接配接兩個條件,兩個條件成立時才傳回True,但凡有應該條件為False則傳回False | 3>1 and 4==4 true |
or | 邏輯或,用于連接配接兩個條件,兩個條件但凡有一個成立就傳回True,隻有在兩個條件同時為False時才傳回False | 1>2 or 3>1 True |
not | 取反 | not 1>3 True |
特别注意,傳回值。傳回值不一定是bool型
把最頻繁使用的,做最少計算就可以知道結果的條件放到前面,如果它能短路,将大大減少計算量
連續多個and
可以用and連接配接多個條件,會按照從左到右的順序依次判斷,一旦某一個條件為False,則無需再往右判斷,可以立即判定最終結果就為False,隻有在所有條件的結果都為True的情況下,最終結果才為True。
>>> 2 > 1 and 1 != 1 and True and 3 > 2 # 判斷完第二個條件,就立即結束,得的最終結果為False
False
連續多個or
可以用or連接配接多個條件,會按照從左到右的順序依次判斷,一旦某一個條件為True,則無需再往右判斷,可以立即判定最終結果就為True,隻有在所有條件的結果都為False的情況下,最終結果才為False
>>> 2 > 1 or 1 != 1 or True or 3 > 2 # 判斷完第一個條件,就立即結束,得的最終結果為True
True
優先級not>and>or
#1、三者的優先級關系:not>and>or,同一優先級預設從左往右計算。
>>> 3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3
False
#2、最好使用括号來差別優先級,其實意義與上面的一樣
'''
原理為:
(1) not的優先級最高,就是把緊跟其後的那個條件結果取反,是以not與緊跟其後的條件不可分割
(2) 如果語句中全部是用and連接配接,或者全部用or連接配接,那麼按照從左到右的順序依次計算即可
(3) 如果語句中既有and也有or,那麼先用括号把and的左右兩個條件給括起來,然後再進行運算
成員運算符
成員運算符 | 描述 |
in | 某個對象包含于另一個對象則傳回True 字元串、清單、字典、元組、集合類型都支援解壓指派 |
not in | 某個對象沒有包含于另一個對象則傳回True |
注意:雖然下述兩種判斷可以達到相同的效果,但我們推薦使用第二種格式,因為not in語義更加明确
>>> not 'lili' in ['jack','tom','robin']
True
>>> 'lili' not in ['jack','tom','robin']
True
身份運算符
身份運算符 | 描述 |
is | is比較的是id,兩個對象的id相同則傳回True |
is not | 在兩個對象的id不同時is not 會傳回True |
注意:==雙等号比較的是value是否相等,而is比較的是id是否相等
#1. id相同,記憶體位址必定相同,意味着type和value必定相同
#2. value相同type肯定相同,但id可能不同