天天看點

python的使用者互動和運算符

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解釋器提供好的

使用:

  1. 一般情況

    ​res = '我叫{},今年{}歲'.format('tom',18) #通過位置一一對應 print(res) ​

  2. 通過索引

    ​res = '我叫{1},今年{0}歲'.format(18,'tom') #通過索引一一對應 print(res) ​

  3. 通過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相等