1. 使用者互動
1.1 python3中的使用者互動
這裡站在程式員 ( 人 ) 與計算機之間的互動, 本質就是你向計算機輸入内容, 計算機輸出内容, 回報給你.
1.1.1 接收使用者的輸入
通過input方法
name = input('請輸入你的大名:')
1.1.2 坑
注意: 在python3中,無論使用者輸入什麼input都會把它放到一對引号中, 就是把原資料類型, 轉換成了字元串類型.
是以如果輸入的int類型,想要進行四則運算, 那麼就要自己手動進行一下類型轉換
x = input('請輸入數字')
x = int(x)
print(x + 10)
1.2 python2中的使用者互動
1.2.1 raw_input( )
python2中raw_input ( ) 等同于python3中的input , 都是會把使用者輸入的内容轉化成字元串類型
1.2.2 input ( )
python2中的input ( ), 不會自動更改使用者輸入内容的資料類型, 你輸入什麼類型,就傳回什麼類型的内容
你是不是突然感覺好友善, 不用做資料轉換了, 但是你忽略了一點, 程式是給使用者使用的, 雖然我們作為開發用python2中input ( ) 很友善, 但是對使用者不是友好的, 因為如果你要使用就必須先了解python的基礎資料類型,
如果是這樣, 使用者估計會口吐芬芳. 是以這些是在python發展中舍棄這種使用者互動.
2. 格式化輸出
輸入是input 輸出就是output,在python中輸出用print展現出來。
2.1 什麼是格式化輸出
就是字面意思,按照一定的格式輸出内容, 如: 輸出班級中每個學生的姓名和年齡
姓名:xxx,年齡:xxx
這個時候我們可以把格式了解成模闆, 隻需要替換裡面的關鍵内容即可
姓名:張三,年齡:18
姓名:張四,年齡:19
姓名:張五,年齡:20
姓名:張六,年齡:21
姓名:張七,年齡:22
2.2 格式化輸出的三種方式
2.2.1 % 格式化
% 格式化是自從python誕生以來就有的一種格式化方法, 意思就是說python2可以用這種方法,python3也可以
使用:
# %s 可以接收任意類型
name = 'alex'
info = '大家好我叫%s' % name
print(info) # 大家好我叫alex
# %d 隻能接收int類型
print('我的年齡是%d' % 18)
# %f 隻能接收float類型
print('我的體重是%fkg' % 55.7)
2.2.2 format ( ) 格式化
format ( ) 是在python2.6後出現的一種方法, 我們做格式化, 本質上是字元串的格式化, format ( ) 是字元串的一種内置方法, 是python解釋器提供好的
使用:
-
-
一般情況
res = '我叫{},今年{}歲'.format('tom',18) #通過位置一一對應 print(res)
-
通過索引
res = '我叫{1},今年{0}歲'.format(18,'tom') #通過索引一一對應 print(res)
-
通過key=value
res = '我叫{name},今年{age}歲'.format(name='tom',age=18) #通過key=value一一對應 print(res)
2.2.3 f 格式化
f 格式化是python3.5以後才出現的一種更優雅的python格式化方式
使用:
name = input('請輸入名字:')
age = input('請輸入年齡:')
res = f'你的名字是{name},年齡是{age}歲'
print(res)
2.3 三種格式化之間的速度
-
- 最快: f 格式化
- 其次: format( ) 格式化 [ 推薦這種方法 ]
- 最慢: % 格式化
運算符
3. 算術運算符
3.1 什麼是算數運算符
就是做加減乘除四則運算以及其他的複雜運算的, 讓計算機能像人一樣可以做計算
符号 | 含義 |
+ | 相加 |
- | 相減 |
* | 相乘 |
/ | 相除 (有小數部分,結果全是float類型) |
// | 地闆除 (隻保留整數部分) |
% | 取餘/取模 (隻保留餘數) |
** | 幂運算 |
print(10/2) # 5.0 float類型
4. 比較運算符
4.1 什麼是比較運算符
就是做比較運算的, 讓計算機能像人一樣可以做比較
符号 | 含義 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
5. 指派運算符
5.1 什麼是指派運算符
就是做指派操作的, 讓計算機能像人一樣給一個事物附上一個值, 記錄下來
5.1.1 增量指派
符号 | 含義 |
= | 變量的指派 |
+= | 加等于 |
-= | 減等于 |
*= | 乘等于 |
/= | 除等于 |
//= | 取整等于 |
%= | 取餘等于 |
**= | 幂等于 |
5.1.2 交叉指派
x = 10
y = 20
x,y = y,x
5.1.3 鍊式指派
x=y=z = 10
# 把棧區中的10的記憶體位址分别指派給x,y,z
5.1.4 解壓指派
一般适合在取開頭前幾個或者末尾幾個資料的值,不适合取資料量大的容器的中間值。
*x,y,_,z = [10,20,30,40,50]
print(x,type(x)) # [10] <clas list>
x,y,*_,z = [10,20,30,40,50]
_,_,_*m,_ = [10,20,30,40,50]
6. 邏輯運算符
6.1 邏輯運算
所謂的邏輯運算,你可以先簡單的認為就是判斷,比如今天下不下雨,下雨。這就一個判斷。
6.2 邏輯運算符
邏輯運算符就是用來把多個條件連在一起做判斷的符号
符号 | 含義 |
not | 非(取反) |
and | 與 |
or | 或 |
6.2.1 not
# not: 就是把緊跟其後的那個條件結果取反
# not與緊跟其後的那個條件是一個不可分割的整體
print(not 16 > 13) # False
print(not 0) # True
6.2.2 and
and(邏輯與)用來連接配接左右兩個條件。兩個條件同時為真,最終結果才為真。如果連接配接多個條件, 條件全為真, 最
終結果才是True.
print(True and 10 > 1) # True
print(1 > 3 and 4 > 8 and False )
6.2.3 or
or ( 邏輯或 ) 用來連接配接左右兩個條件, 兩個條件但凡有一個為True, 最終結果就為True, 兩個條件都為False的情況,
最終結果才為False。
如果連接配接多個條件, 條件全為假, 最終結果才是False。
print(3 > 2 or False) # True
print(False or 6 < 5 or 7 > 99) #False
6.3 邏輯運算符的優先級
如果單獨的就隻是一串and/or連接配接, 按照從左到右的順序依次運算即可。如果是混合使用就要考慮優先級了。
6.3.1 優先級
括号 ( ) > not > and > or
print(3 > 4 and not 4 > 3 or 1 == 3 and 'x' == 'x' or 3 > 3) # False
這種混合運算一般不會出現在自己代碼裡, 隻有面試題你會見到
小練習:
not 3 > 4 and 5 > 7 or 7 > 9 and not 3 == 3 and x=='x'
3 > 4 and 5 > 7 and 7 > 9 or not 3 == 3 and x=='x'
6.4 短路運算
短路運算:遵循偷懶原則,偷懶到哪個位置,就把目前位置的值傳回。在面試題中,一般和邏輯運算符優先級一起
考。注意一點,傳回的值不一定是顯示的布爾值,可能是隐式的布爾值
10 > 3 and True # 偷懶到True,是以傳回True
10 < 100 and 0 and True # 偷懶到0,傳回0
10 and 0 or 1 > 3 and 9 == 9 or 80 > 70 # 先看優先級,然後再看每個部分偷懶到哪裡,然後再算最後的值 True
7. 成員運算符
7.1 in
成員運算符就是判斷是否存在, 傳回一個布爾值
# 判斷一個小字元串是否在一個大字元串中
print( 'x' in 'zhenxiang' ) # True
# 判斷元素是否存在于清單
print( 10 in [11,10,12]) # True
# 判斷key是否存在于字典
print('k1' in {'k1':1}) # True
7.2 not in
判斷是否不在,一般判斷不存在時,推薦使用這種。
print( 'mn' not in 'hello word') # True
8. 身份運算符
8.1 is
is 就是身份運算符, 判斷的是id是否相等, id( ) , 在cpython中傳回的是程式運作時, 對象在記憶體中的位址
x = 'hello mn'
y = 'hello mn'
print(x is y) # True
# 但記住有的時候值相等未必id相等