python筆記3 - 布爾運算,位運算,字符串 str,轉義序列,ASCII編碼,len函數,隱式字符串拼接,in & not in 運算符

2017/9/27

布爾運算,位運算,字符串 str,轉義序列,ASCII編碼,len函數,隱式字符串拼接,in & not in 運算符

 

===============================================================

 

布爾運算:

運算符:not and or

 

not:邏輯取反

語法:not 表達式

實例1:

if not 0<=score<=100:

   print("您輸入的不對")

實例2:

text = int(input("enter a score:"))

if text:                                   ######實際:if bool(text),if實際是對布爾返回值的判斷

    print("you enter:",text)

else:

    print("you enter nothing!")

實例3記憶:

          not True                #False

          not 100                 #False

          not 1+2j                #False

          not "False"             #False!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

          not False               #True

          not 0.0                 #True

          not 0j                  #True

          not ''                  #True

          not None                #True

 

 

and運算符:優先返回值爲假(False)的對象

總結:有假返回假,沒有假返回最後(寫程序時既可以按照現實的邏輯理解,也可以按照這個總結背誦簡單理解)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

語法:

    表達式1 and 表達式2

實例:

    0 and 100       #返回0

    100 amd 200     #返回200

    100 and 0       #返回0

真值表達式:

bool(表達式1)  and   bool(表達式2)    結果的布爾測試值

      F                   F                 F

      F                   T                 F   

      T                   T                 T

      T                   F                 F

and真值表(python特別版):

  x  and  y

bool(x)    返回值

    T          y

    F          x

實例:

score = int(input("please enter a score number:"))

if score >= 0 and score <= 100:

    print("enter reasonably.")

 

 

or運算符:優先返回值爲真(True)的對象

總結:有真返回真,沒有真返回最後(寫程序時既可以按照現實的邏輯理解,也可以按照這個總結背誦簡單理解)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

語法:

    表達式1 or 表達式2

實例:

    0 and 100       #返回100

    100 amd 200     #返回100

    100 and 0       #返回100

    0   and 0.0     #返回0.0

    0.0 and 0       #返回0

實例:

score = int(input("please enter a score:"))

if score < 0 or score > 100:

    print("enter wrong!")

else:

    print("enter score:",score)

實例:

score = int(input("please enter a score:")) or "0"

if score < 0 or score > 100:

    print("enter wrong!")

else:

    print("enter score:",score)

 

===============================================================

 

正負號運算符:

+(正號) -(負號)

語法:

    +   表達式

    -   表達式

說明:一元運算符(左側沒有參數,右側有參數,例如1+2爲二元)

 

===============================================================

 

位運算:

運算符:

& 位與

    | 位或 

    ^ 位異或

<< 左移

>> 右移

    ~ 取反(二進制開頭的位:1表示負數,0表示正數,僅在取反的過程中才會用到)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

hex(x)函數:將x轉換爲十六進制的字符串

bin(x)函數:將x轉換爲二進制(binary)的字符串

 

 

& 按位與:

    語法:表達式1 & 表達式2:

作用:按位操作,兩個對應的位都爲1,則結果爲1;兩個對應的位只要有一個位爲0,則結果爲0.

 

 

| 按位或:

    語法:表達式1 | 表達式2:

作用:按位操作,兩個對應的位都爲0,則結果爲0;兩個對應的位只要有一個位爲1,則結果爲1.

 

 

^ 按位異或:

    語法:表達式1 & 表達式2:

作用:按位操作,兩個對應的位不同,則結果爲1;兩個對應的位相同,則結果爲0.

 

 

<< 左移運算:

    語法:表達式x << 整數表達式y

作用:將x的二進制值,按位向左移動y位,低位補0.

實例:6 << 2 = 24      #6*2**2 = 24

      6 << 3 = 48      #6*2**3 = 48

 

 

>> 右移運算(手算時可將二進制數的末尾位丟棄,重新根據二進制值計算):

    語法:表達式x >> 整數表達式y

作用:將x的二進制值,按位向右移動y位,低位溢出丟棄.

實例:6 >> 1 = 3

      6 >> 2 = 1

      6 >> 3 = 0

      6 >> 4 = 0

 

~ 按位求反

語法:~表達式

作用:將數據的二進制相應位由0變1,由1變0(取反).

實例:

(1)~6=-7,0110,取反,1001,取反(正負不變),0110,加1,0111,爲-7  (實際就是有效位取反加1,再加上符號)

(2)~-5=4,1101,0010,0011,0100,爲4

 

===============================================================

 

字符串 str(string):記錄文本信息(字符信息)

表示方法

  單引號''

  雙引號""

  三單引號'''

  三單雙引號"""

凡是用上述字符開頭,相同字符結尾的表達式都爲字符串

非空字符串的表達方式:

  'hello'

"hello"

  '''hello'''

"""hello"""

空字符串的表達方式:

  ''

""

  ''''''

""""""

空字符串的布爾測試值bool(x)爲False!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

實例:

s = ''

if s:

    print("非空")

else:

    print("空")

>>>空  

 

單引號和雙引號的區別(如果文檔中包括了單引號或者雙引號):

  單引號內可以包含雙引號

  雙引號內可以包含單引號

實例:

  s = "I'm a teacher!"

  s2 = 'My name is "Xiaoyuxiu"'

 

三引號字符串:

  以"""或'''開頭的字符串,以"""或'''結尾的字符串

作用:

  可以包含單引號和雙引號;

   三引號字符串中的換行會自動轉換爲換行符 \n

實例1:

  s = """I'm a teacher!\nMy name is "Xiaoyu""""(有bug)

  s = """I'm a teacher!\nMy name is "Xiaoyu""""(修改添加了空格)

實例2:

   s = '''I'm a teacher!          #這裏使用了回車,程序打印時會自動換行

My name is "Xiaoyuxiu"'''

 

===============================================================

 

用轉義序列代表特殊字符:

  字符串常量中用字符反斜槓\後跟一些字符代表特殊的含義

實例:

  \'     代表單個單引號(這是計算機認識的語言,如果一段文字中需要添加單引號,就需要這樣的設置。防止和其他引號一起連用被計算機誤認爲用於標記一段字符串)

  \"     代表單個雙引號(防止被計算機誤認爲去標記字符串)

  \n     代表換行

實例:

  a'b"c'd"e"f":如果想要表達這樣一串字符,需要寫成一下的形式,否則計算機不識別:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  s = 'a\'b"c\'d"e"f"'

 

字符串反斜槓字符串(部分是防止計算機誤認爲表示字符串的符號):

  \'    單引號(')

  \"    雙引號(")

  \n    換行

  \a    響鈴

  \\    一個反斜框(\)    (首先檢測有沒有存在轉義功能的轉義字符,如果存在,則將其轉義符號修改爲反斜槓符號,不再具備原來的轉義功能,變成真正的“圖片字符”)

  \r    返回光標至行首     (接上,我就是想寫斜槓,而我又擔心他會將後面的字符轉義)

  \f    換頁

  \t    水平製表符   (出現幾個水平空格,其len()爲1)

  \v    垂直製表符

  \b    倒退光標

  \0    空字符(字符的值爲0)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!什麼都沒有

  \0oo        兩位八進制表示的字符

  \xXX        兩位十六進制表示的字符

  \uXXXX      Unicode 16的十六進制字符(XX第一個字節,XX第二個字節)

  \UXXXXXXXX  Unicode 32的十六進制字符

 

實例:

print("ADCD\ra")  >>>  aABCD

 

===============================================================

 

ASCII編碼(每一個字符都對應一個編碼號碼):

調出ascii表:man ascii

實例:

  65 - A   (這裏使用的是十進制)

  97 - a

  print('abcd')                 >>>abc

  print('\x61\x62\x63\x64')     >>>abcd   (這裏用十六進制表示,共4個字節)

  print('\u0061\u0062')             >>>ab    Unicode16編碼

  print('\U000000061\U00000062')    >>>ab    Unicode32編碼

  print('\u4e2d\u6587')             >>>中文  

常用的ascii編碼:

    字符        十進制        十六進制

     '0'          48            0x30

     'A'          65            0x41

     'a'          97            0x61

 

Unicode:

由於美國ascii編碼只有0~127個編碼,實際2**7=128

1字節可表示0~2**8-1 (0~255)

2字節可表示0~2**16-1 (0~65535)

python3中使用Unicode作用內部的編碼

Unicode 16 (兩字節表示):0~2**16-1(0~65535)

    'A'   0x00A1

Unicode 32 (四字節表示):0~2**32-1(約40億)

 

===============================================================

 

len函數:

len(s):返回字符串中字符的個數('a'是一個字符,'中'是一個字符)

 

raw字符串(原始字符串)

格式:

  r'字符串內容'

  r"字符串內容"

  r'''字符串內容'''

  r"""字符串內容"""

作用:

  讓轉義符號\無效

 

實例1:

path = 'C:\newfile\test.py'

print(path)

print(len(path))

>>C:

ewfile est.py

16

 

 

實例2:

path = r'C:\newfile\test.py'

print(path)

print(len(path))

>>C:\newfile\test.py

18

 

===============================================================

 

隱式字符串拼接:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

x = "I'm"    'a"teacher".'    """hello!"""

>>>I'ma"teacher".hello!

 

 

字符串的運算:

+  +=  *  *=  >>=  <<=  == !=

+加號運算符:拼接字符串

實例:

x = "abcd"

y = "efg"

z = x + y

>>>abcdefg

 

+=:原字符串與右側字符串拼接生成新的字符串關聯到原變量

實例:

x = "abcd"

y = "efg"

x += y       #x = x + y

 

*:生成重複的字符串

格式:字符串 * 整型表達式

實例:x = "abcd" * 3

 

*=:生成重複是字符串並改變變量的綁定(關聯)關係

實例:

x = "123"

x *= 3

print(x)

>>>123123123

 

字符串的比較(從左向右比,只要分出勝負就結束比較):!!!!!!!!!!!! 

>>=  <<=  ==  !=

實例:

  'A' < 'B'          #True  0x41<0x42

  'ABC' < 'ABB'      #False   按位比,前面AB相同,只好再比較C

  'ADC' < 'ABC'      #False

  'AD' < 'ABC'       #False

  'AB' < 'ABC'       #True

  'abc' == 'ABC'     #False

  'abcd' != 'dsff'   #True

 

===============================================================

 

in & not in 運算符

作用:

    in 用於序列,字典,集合中,用於判斷某個值是否存在於對象中(in是二元運算符)

    not in的返回值與in相反

實例:

x = "welcome to tarena!"

if 'to' in x:

    print("'to'在字符串中")

>>>'to'在字符串中

 

 

python運算符的優先級:

 運算符                          描述

  **                              指數(最高優先級)

  ~+-     位反轉,一元加號(正號)一元減號(負號)取反,正數,負數

 */ // %                         乘,除,地板除,求餘

 +-                              加,減

<<>>                           左移,右移

&  |                            位與,位或

  ^                               位異或

<<= >>=                       小於,小於等於,大於,大於等於

 == !=                           等於,不等於

= %= /= //= -= += *= **=        複合賦值運算符

      is,is not              身份運算符 #is,is not表示判斷兩個對象是否綁定在同一個對象上(綁定關係,而非賦值關係)

 in,not in                       成員運算符

 not,or,and                      邏輯運算符

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章