問題一:html
Python3.5.X中的數據類型有哪些?python
答:包括整型、布爾型、字符串型、浮點型、複數、列表、字典、集合、元組。git
細化來講:api
一、整型包括短整型和長整型,不過咱們沒必要過分操心細節,由於短整型和長整型之間是隱式切換的,Py本身會根據數值大小自行選擇適合的整型。app
二、字符串型,須要用成對的引號標識,它的內置函方法的使用以下:less
1 a = "test for data type" 2 # 首字母大寫 3 a = a.capitalize() 4 print(a) 5 6 a = "TEST FOR DATA TYPE" 7 # 測試發現是忽略大小寫的意思 8 # Return a version of S suitable for caseless comparisons. 9 # 返回一個字符串,適用於忽視大小寫的字符串對比 10 a = a.casefold() 11 12 print(a) 13 14 # 居中格式化輸出的小工具 15 a = a.center(50, "+") 16 print(a) 17 18 # 返回字符串中包含的子串的個數(能夠設定起止位置) 19 20 a = "test for data type" 21 print(a.count('t', 0, -5)) 22 23 # 對a進行編碼後再解碼默認是UTF-8 24 b = a.encode(encoding='gb2312') 25 a = b.decode() 26 print("after coding change a='", a, "'") 27 28 # 判斷是否以某個子串結尾或是開頭 29 print(a.endswith('ype')) 30 print(a.startswith('te')) 31 32 # 設置tab所對應的空格數,便於輸出的美化 33 a = 't\te\ts\tt\t' 34 print(a.expandtabs(20)) 35 36 # 返回子串的索引值(能夠設定起止位置) 37 print(a.find('t', 0, -1)) 38 # 反向查找(獲取的索引仍是正常的序) 39 print(a.rfind('t')) 40 41 # 字符串的格式化輸出,這裏再也不贅述 42 # a.format() 43 44 # 獲取子串的索引值,這和find()的區別是什麼??? 45 print(a.index('t', 0, -1)) 46 # 反向獲取子串的索引值(索引仍是正常的序) 47 print(a.rindex('t')) 48 49 # 判斷字符串是否僅由字母和數字構成 50 a = 'aBc123' 51 print(a.isalnum()) 52 53 # 判斷是否全是字母構成 54 a = 'aBc' 55 print(a.isalpha()) 56 57 # 判斷是否爲十進制的 58 a = '0x11' 59 b = '011' 60 c = '0b1100011' 61 d = '110' 62 print('isdecimal', a.isdecimal(), b.isdecimal(), c.isdecimal(), d.isdecimal()) 63 64 # 判斷是否爲純數字的,這和isdecimal()有什麼區別? 65 # a = '0123' 66 print('isdigit', a.isdigit(), b.isdigit(), c.isdigit(), d.isdigit()) 67 68 # 判斷是否爲純數字的,這和isdecimal()有什麼區別?這三個函數是否是有重疊的嫌疑? 69 print('isnumeric', a.isnumeric(), b.isnumeric(), c.isnumeric(), d.isnumeric()) 70 71 # 判斷是否符合變量的命名規範! 72 print("__Aa123__".isidentifier()) 73 74 # 判斷字符串中的字母(忽略其餘字符)是否所有爲大寫字母或是小寫字母 75 a = 'a\tac12 c ' 76 print(a.islower()) 77 a = 'A\tAC12 C ' 78 print(a.isupper()) 79 80 # 可打印顯示出來的字符 81 a = '@*%&$^' 82 print(a.isprintable()) 83 84 # 是否是空格,不解釋 85 a = ' ' 86 print(a.isspace()) 87 88 a = 'never give up!' 89 print(a) 90 a = a.title() 91 print(a) 92 print(a.istitle()) 93 94 a = 'never\ngive up\tyounger!' 95 # 按指定的分隔符把字符串拆分紅列表,默認的分隔符任何空白字符 96 b = a.split(None, 1) 97 print(b) 98 99 # 按指定的鏈接符把列表合成字符串,與split()互反 100 print("\t".join(b)) 101 102 # 查找分隔符的方向是從右到左 103 print(a.rsplit(None, 1)) 104 105 # 按換行符號進行分隔 106 print(a.splitlines()) 107 108 # 左對齊,總長固定,空位用單個字符補齊 109 print(a.ljust(50, "t")) 110 111 # 右對齊,總長固定,空位用單個字符補齊 112 print(a.rjust(50, "t")) 113 # 右對齊,總長固定,空位用'0'補齊 114 print(a.zfill(50)) 115 116 # 剝離邊界上的子串 117 a = "!tree!" 118 print(a.strip("e!")) 119 print(a.lstrip("!")) 120 print(a.rstrip("!")) 121 122 a = "13222334455" 123 # 生成對字符串的字符轉換表 124 trans1 = "".maketrans("123456abcdefg", "fedcba7654321") 125 # 利用轉換表對字符串進行轉換 126 print(a.translate(trans1)) 127 128 # 字符串替換舊、新、多少個,這裏到結尾 129 print(a.replace('222', 'abc', -1)) 130 131 a = 'aA123bBccc456DDD123ddd' 132 # 字母大小寫調換,小寫變大寫,大寫變小寫 133 print(a.swapcase()) 134 135 136 # 我的感受用途不大,只分紅三段的狀況下適用 137 # 就是按某個分隔符將字符串分爲三部分,分別是分隔符前的、分隔符、分隔符後的 138 print(a.partition('2')) 139 # 優先從高位遇到的第一個分隔符截 140 print(a.rpartition('2'))
三、浮點型:須要注意科學計數法的表示:yii
如:1.2345E+1表示:1.2345*(10**1)=12.345ide
1.2345E-1表示:1.2345*(10**-1)=0.12345函數
四、複數:表示方法參照 4+8j,注意其中使用虛數部分用 j 標識而不是數學書上的 i,由於這裏採用的是工程標準工具
五、列表:列表內置方法簡介:
1 # 追加一個元素 2 .append("something") 3 # 在指定的索引位置上插入新元素,原位置以及以後元素依次自動後移 4 .insert() 5 # # 經過添加迭代器中的元素實現列表擴展 6 .extend() 7 8 # 統計某個元素出現的次數 9 .count("re") 10 11 # 按ASCII碼錶順序排 12 .sort() 13 # 列表內元素倒序輸出 14 .reverse() 15 16 # 淺拷貝 17 .copy() 18 19 # 按索引號彈出,默認-1即最後一個元素 20 .pop() 21 # 移除指定元素 22 .remove("re") 23 # 清空 24 .clear()
六、字典:字典是無序的,是經過key值找到對應的value,因此key是惟一的!
1 # ------------------------------增增增改改改-------------------------------- 2 # 字典的建立: 3 d_test = {"a": "1", "b": "1"} 4 5 # 字典新增元素,若是key存在則更新,不存在則增長新記錄 6 d_test["b"] = "2" 7 d_test["c"] = "3" 8 9 # 字典新增元素,若是key存在則pass,不存在則增長新記錄 10 d_test.setdefault("c", "4") 11 d_test.setdefault("d", "5") 12 print(d_test) 13 14 # 實現了兩個字典的合併,key存在的,更新value,key不存在則新增記錄 15 d_test1 = {"a": "10", "d": "4", "f": 100} 16 d_test.update(d_test1) 17 print(d_test) 18 19 # 根據key建立一個新字典,第一個參數必須是迭代器類型,第二個參數是給每一個key賦的統一值 20 # Returns a new dict with keys from iterable and values equal to value. 21 d_test2 = d_test.fromkeys(["x", "y", "z", "u"], [1, 2, 3, 4]) 22 print(d_test2) 23 24 # ---------------------------查查查------------------------------ 25 # 根據key獲取value的兩種方法 26 print(d_test["b"], d_test.get("a")) 27 28 # 判斷字典中是否存在某個key 29 print("c" in d_test) 30 31 # 分別輸出'dict_keys dict_values dict_items三個類 32 print(type(d_test.keys()), type(d_test.values()), type(d_test.items())) 33 # 均可以經過循環遍歷的方式獲取值 34 for i in d_test.keys(): 35 print(i) 36 37 # 對比下列兩種獲取字典中key value信息的方法 38 # 第一種更高效,由於第二種須要將字典先轉換爲元組後才分別賦值給i,j 39 for i in d_test: 40 print(i, d_test[i]) 41 42 for i, j in d_test.items(): 43 print(i, j) 44 45 # ------------------------------刪刪刪--------------------------------- 46 # 根據key刪除字典中的記錄 47 d_test.pop("c") 48 49 # 調用通用方法刪除 50 del d_test["a"] 51 52 # 隨機彈出一條記錄 53 d_test.popitem() 54 print(d_test) 55 56 # -------------------------------嵌套------------------------------------ 57 # 多級嵌套字典的使用,獲取數據其實就是從外到內層層打開 58 multi_level_dict_test = { 59 "a": { 60 "a1": ["a11", "a12"] 61 }, 62 "b": { 63 "b1": ["b11", "b12"] 64 }, 65 "c": { 66 "c1": ["c11", "c12"] 67 } 68 } 69 70 print(multi_level_dict_test["b"]["b1"][1]) 71 72 73 74 """ 75 字典對象的內置方法: 76 d_test.copy() 77 d_test.get() 78 79 d_test.keys() 80 d_test.values() 81 d_test.items() 82 83 d_test.pop() 84 d_test.popitem() 85 d_test.clear() 86 87 d_test.setdefault() 88 d_test.update() 89 d_test.fromkeys() 90 """
七、集合:暫略
八、元組:與列表的區別是,不能夠更改,只包含兩個方法:分別是count()統計某個元素的個數,index()獲取某個元素的索引。
問題二:
Python模塊是什麼?怎麼分類,如何調用?
一、Python的模塊是什麼?
按我個人理解就是一些供其餘開發人員使用的.py文件集合而成的目錄,實現了代碼的重用,縮減開發成本,再簡單而言就是前人寫好的代碼,並且經過import能夠拿來即用。
二、怎麼分類:
最簡單的分類無非就是:標準庫和第三方庫,標準庫包含的更多的是通用型的代碼,第三方庫是包含着某一個細化領域的深刻實現;
三、如何調用這些庫?
無非就是使用import或from...import...來實現,兩種導入方式的區別?我是這麼理解的,import須要將整個模塊目錄下所有的文件加載,這樣若是該模塊包含的內容較多的時候不只會影響效率,也不符合精益理論思想,因此在這種狀況下徹底能夠導入此模塊目錄下的某一個具體的文件,這樣就能夠有針對性的加載,from模塊目錄import Py文件。
問題三:
什麼叫切片?怎麼使用?
切片是獲取一個對象子元素集的方法,好比字符串是由一個個的字符按序構成,列表中的元素也是按序存放,因此對於這種子元素之間有明顯順序關係的對象,就能夠經過切片來實現獲取它子元素集,說的有點抽象,但舉幾個例子就清楚了:
1 a="Str is String!" 2 3 # 從頭至尾 4 print(a[:]) 5 >>>Str is String! 6 7 # 從頭到最後一個元素以前(不包含最後一個),-1表示最後一個元素 8 print(a[:-1]) 9 >>>Str is String 10 11 # 從第一個元素到尾,說明切片獲取的是一個左閉右開的區間 12 print(a[0:]) 13 >>>Str is String! 14 15 # 從倒數第五個元素截取到倒數第二個(固然不包含倒數第二個) 16 print(a[-5:-2]) 17 >>>rin 18 19 # 這裏有意思的來了,截取還能夠設定步長,步長step>0 則每隔|step|-1截取一個元素 20 # start和end標識了子串的起止,step決定了截取的間隔。 21 print(a[3:-1:2]) 22 >>> sSrn 23 24 # 若是步長爲負數,則表示從右向左截取,同時start和end也要使用反向來排列 25 # 此時的子串爲左開右閉,正好和以前講的相反,間隔一樣是|step|-1 26 print(a[-1:-7:-2]) 27 >>> !nr
問題四:
操做符與優先級:(參考自:http://www.yiibai.com/python/python_basic_operators.html)
操做符
描述符 | 例子 | |
---|---|---|
+ | 加法 - 對操做符的兩側增長值 | a + b = 30 |
- | 減法 - 減去從左側操做數右側操做數 | a - b = -10 |
* | 乘法 - 相乘的運算符兩側的值 | a * b = 200 |
/ | 除 - 由右側操做數除以左側操做數 | b / a = 2 |
% | 模 - 由右側操做數和餘返回除以左側操做數 | b % a = 0 |
** | 指數- 執行對操做指數(冪)的計算 | a**b = 10 的冪 20 |
// | 地板除 - 操做數的除法,其中結果是將小數點後的位數被除去的商。 | 9//2 = 4 而 9.0//2.0 = 4.0 |
Python的比較操做符:
假設變量a持有10和變量b持有20,則:
運算符 | 描述 | 示例 |
---|---|---|
== | 檢查,兩個操做數的值是否相等,若是是則條件變爲真。 | (a == b) 不爲 true. |
!= | 檢查兩個操做數的值是否相等,若是值不相等,則條件變爲真。 | (a != b) 爲 true. |
<> | 檢查兩個操做數的值是否相等,若是值不相等,則條件變爲真。 | (a <> b) 爲 true。這個相似於 != 運算符 |
> | 檢查左操做數的值是否大於右操做數的值,若是是,則條件成立。 | (a > b) 不爲 true. |
< | 檢查左操做數的值是否小於右操做數的值,若是是,則條件成立。 | (a < b) 爲 true. |
>= | 檢查左操做數的值是否大於或等於右操做數的值,若是是,則條件成立。 | (a >= b) 不爲 true. |
<= | 檢查左操做數的值是否小於或等於右操做數的值,若是是,則條件成立。 | (a <= b) 爲 true. |
Python賦值運算符:
假設變量持有10和變量b持有20,則:
運算符 | 描述 | 示例 |
---|---|---|
= | 簡單的賦值運算符,賦值從右側操做數左側操做數 | c = a + b將指定的值 a + b 到 c |
+= | 加法AND賦值操做符,它增長了右操做數左操做數和結果賦給左操做數 | c += a 至關於 c = c + a |
-= | 減AND賦值操做符,它減去右邊的操做數從左邊操做數,並將結果賦給左操做數 | c -= a 至關於 c = c - a |
*= | 乘法AND賦值操做符,它乘以右邊的操做數與左操做數,並將結果賦給左操做數 | c *= a 至關於 c = c * a |
/= | 除法AND賦值操做符,它把左操做數與正確的操做數,並將結果賦給左操做數 | c /= a 至關於= c / a |
%= | 模量AND賦值操做符,它須要使用兩個操做數的模量和分配結果左操做數 | c %= a is equivalent to c = c % a |
**= | 指數AND賦值運算符,執行指數(功率)計算操做符和賦值給左操做數 | c **= a 至關於 c = c ** a |
//= | 地板除,並分配一個值,執行地板除對操做和賦值給左操做數 | c //= a 至關於 c = c // a |
Python位運算符:
位運算符做用於位和位操做執行位。假設,若是a =60;且b =13;如今以二進制格式它們將以下:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
Python語言支持下位運算符
操做符 | 描述 | 示例 |
---|---|---|
& | 二進制和複製操做了一下,結果,若是它存在於兩個操做數。 | (a & b) = 12 即 0000 1100 |
| | 二進制或複製操做了一個比特,若是它存在一個操做數中。 | (a | b) = 61 即 0011 1101 |
^ | 二進制異或運算符的副本,若是它被設置在一個操做數而不是兩個比特。 | (a ^ b) = 49 即 0011 0001 |
~ | 二進制的補運算符是一元的,並有「翻轉」位的效果。 | (~a ) = -61 即 1100 0011以2的補碼形式因爲帶符號二進制數。 |
<< | 二進位向左移位運算符。左操做數的值左移由右操做數指定的位數。 | a << 2 = 240 即 1111 0000 |
>> | 二進位向右移位運算符。左操做數的值是由右操做數指定的位數向右移動。 | a >> 2 = 15 即 0000 1111 |
Python邏輯運算符:
Python語言支持如下邏輯運算符。假設變量a持有10和變量b持有20則:
運算符 | 描述 | 示例 |
---|---|---|
and | 所謂邏輯與運算符。若是兩個操做數都是真的,那麼則條件成立。 | (a and b) 爲 true. |
or | 所謂邏輯OR運算符。若是有兩個操做數都是非零而後再條件變爲真。 | (a or b) 爲 true. |
not | 所謂邏輯非運算符。用於反轉操做數的邏輯狀態。若是一個條件爲真,則邏輯非運算符將返回false。 | not(a and b) 爲 false. |
Python成員運算符:
除了前面討論的運算符,Python成員運算符,在一個序列中成員資格的測試,如字符串,列表或元組。有兩個成員運算符解釋以下:
操做符 | 描述 | 示例 |
---|---|---|
in | 計算結果爲true,若是它在指定找到變量的順序,不然false。 | x在y中,在這裏產生一個1,若是x是序列y的成員。 |
not in | 計算結果爲true,若是它不找到在指定的變量順序,不然爲false。 | x不在y中,這裏產生結果不爲1,若是x不是序列y的成員。 |
Python標識運算符:
標識符比較兩個對象的內存位置。兩個運算符標識解釋以下:
運算符 | 描述 | 例子 |
---|---|---|
is | 計算結果爲true,若是操做符兩側的變量指向相同的對象,不然爲false。 | x是y,這裏結果是1,若是id(x)的值爲id(y)。 |
is not | 計算結果爲false,若是兩側的變量操做符指向相同的對象,不然爲true。 | x不爲y,這裏結果不是1,當id(x)不等於id(y)。 |
Python運算符優先級
下表列出了全部運算符從最高優先級到最低。
運算符 | 描述 |
---|---|
** | 冪(提升到指數) |
~ + - | 補碼,一元加號和減號(方法名的最後兩個+@和 - @) |
* / % // | 乘,除,取模和地板除 |
+ - | 加法和減法 |
>> << | 左,右按位轉移 |
& | 位'AND' |
^ | | 按位異'或`'和按期`或' |
<= < > >= | 比較運算符 |
<> == != | 等式運算符 |
= %= /= //= -= += *= **= | 賦值運算符 |
is is not | 標識運算符 |
in not in | 成員運算符 |
not or and | 邏輯運算符 |