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 邏輯運算符