pip install pandas -i --trusted-host pypi.douban.com 安裝pandas模組
pip install matplotlib -i --trusted-host pypi.douban.com 安裝matplotlib模組
pillow --安裝image庫
pytesseract
pypiwin32 -- 安裝win32api
/:除法運算結果是小數
//:整除(丟掉小數部分)
10%3=1
10%-3=-2
-10%3=2
-10%-3=-1
向下圓整除,結果為負數時,離0更遠
10//3=3
10//-3=-4
-10//3=-4
-10//-3=3
求冪運算
2 ** 3 =8
pow(2,3)
獲取使用者的輸入
input("x:")
if 1==2: print('相等')
在互動式直譯器中輸入if語句後,需要按兩次回車鍵才可以執行它
將浮點數圓整為與之最接近的整數,兩個整數一樣近時圓整到偶數
round(2/3)=1.0
abs(-10)=10
import math 匯入模組
math.floor(32.9)=32 向下圓整
ceil與floor相反,返回大於或等於給定數的最小整數
int(32.9) 將數字轉為整數
from math import sqrt 確定不會從不同模組匯入多個同名函式,此時呼叫函式時可以不用指定模組字首
sqrt(9)=3.0
sqrt(-1)有些平台直接報錯,有時輸出nan(意思是非數值)
此時如果堅持將值域限定為實數,並使用其近似的浮點數實現,就無法計算負數的平凡根
負數的平方根為虛數,而由實部和虛部組成的數為複數。
專門處理複數的模塊
import cmath
cmath.sqrt(-1)
輸出1j
python副檔名需要是.py字尾
想要更有趣的輸出,應考慮使用模組turtle,它實現了海龜繪圖法
form turtle import *
from turtle import *
forward(100)
left(120)
forward(100)
left(120)
forward(100)
要讓鉛筆抬起可使用penup()
要讓鉛筆重新放下,可使用pendown()
命令列執行python指令碼:python test.py
linux下,讓指令碼像程式一樣執行,在檔案最開始加上#!/user/bin/env python
windows下,可以在指令碼末尾加上input("press ")
注釋用#
「let's go!」 不能用單引號將整個字串括起
拼接字串用+
將字串中的特殊字元編碼轉換為相應的字元用
print(repr("hello,\nworld!")
print(str("hello,\nwordld!") 原樣輸出
print("hello,\nworld!") 轉義換行符
print('c:\\nowhere') 輸出c:\nowhere
print(r'c:\nowhere') 輸出c:\nowhere 原始字串字串末尾不能以\結尾
print(r'c:\nowhere' '\\') 原始字串可以用此技巧以\結尾
在python3中,所有的字串都是unicode字串
要表示很長的字串,(跨越多行的字串),可使用三引號''',此時無需使用反斜槓進行轉義
不可變的bytes (python bytes字面量只支援ascii標準中的128個字元,餘下的需要使用轉義符表示)
可變的bytearray
建立bytes物件,使用字首b,如b'hello,world!'
「hello,world!」.encode("utf-8")
要替換其中的字串,必須將其指定為0-255的值,要插入字元,必須使用ord獲取其序數值
bytearray(b"hello!")
python最基本的資料結構是序列
序列:每個元素都有編號,即其位置或索引,第乙個元素索引是0
負數表示序列末尾元素的位置
常用的序列列表是可以修改,元組不可以
john=['john',50]
edward=['edward',42]
database=[john,edward] 序列還可以包含其他序列
python支援一種資料結構的基本概念-容器,容器基本上可以包含其他物件的物件
既不是序列,也不對映的容器,就是集合(set)
對序列進行迭代,意味著對其每個元素都執行特定的操作
greet='hello'
greet[0] 輸入的就是'h'
-1表示最後乙個元素的位置
切片:tag=''
tag[9:20] 提取序列中的一部分
tag[3:6][4] 第乙個索引指定的元素包含在切片內,第二個索引指定的元素不包含在切片內
tag[-3:0] 結果顯示為[ ] ,如果第乙個索引指定的元素位於第二個索引指定的元素後面,結果就為空序列
如果切片結束於序列末尾,可省略第二個索引,如tag[-3:]
如果切片開始於序列開頭,可省略第乙個索引
要複製整個序列,可將兩個索引都省略[:]
最後乙個引數指定切片的步長:numbers[0:10:2]
每隔3隔元素提取1個,可以使用number[::4]
步長不能為0,但可以為負數
可以用+來拼接序列,即[1,2]+[3,4] 輸出是[1,2,3,4]
不能拼接列表和字串,雖然他們都是序列,不能拼接不同型別的序列
'python'*5 將重複這個序列x次
空列表是使用不包含任何內容的兩個方括號[ ]表示
建立可包含10個元素的列表,但沒有任何內容,可使用[0]*10,或[none]*10
permissions='rw'
'w' in permissions 檢查特定的值包含在序列中,可使用運算子in,返回true或false
len返回序列包含的元素個數
min、max返回序列中的最小值和最大值
list('hello') 使用字串來建立列表 輸入為['h','e','l','l','o']
要講字元列表轉換為字串,可使用' '.join(somelist)
需改列表:x[1]=2 不能給不存在的元素賦值
刪除列表中的元素:
del names[2]
給切片賦值
name[2:]=list('ar') 從第2個以後的列表替換為'a' 'r'
number[1:1]=[2,3,4] 在1的位置插入2,3,4
number[1:4]= 從索引1開始到索引4,但是不包括索引4
將乙個物件新增到列表中
清空列表 number.clear() 類似於number[:]=
從python2.2開始,list是型別,不是函式了
複製: b=a.copy()
計算指定的元素在列表**現的次數:
x.count('to')
將多個值附加到列表末尾:
a.extend(b) 其中b=[4,5,6] a=a+bz這種效率要比extend效率要低
在列表中查詢指定值第一次出現的索引
number.index['who'] 返回數字值
將乙個物件插入列表
number.insert(3,'four') 在索引3的位置插入'four' 類似number[3:3]=['four']
從列表中刪除最後乙個元素(末尾為最後乙個元素),並返回這個元素
x.pop()
x.pop(0) 刪除第乙個元素
刪除第乙個指定值的元素
x.remove('be')
相反的順序排列列表中的元素
x.reverse()
對列表排序
x.sort() 從小到大,改變列表
y=sorted(x) 不改變原有x列表
x.sort(key=len) 按照列表中值的長度從小到大排序
x.sort(reverse=true) 相反方向排序
元組,用圓括號括起
包含乙個值的元組,必須在它後面加上逗號(42,) 不加逗號時,(42)和42時完全等效的
tuple([1,2,3]) 將乙個序列作為引數,並將其轉換為元組;如果引數是元組,就原封不動的返回它
x=1,2,3 元組的建立和訪問於序列一樣
元組的切片也是元組,就像列表的切片也是列表一樣
熟悉元素的原因:有些函式和方法返回元組
字串(是不可變的)
設定字串的格式
format="hello,%s.%s enough for ya?"
values=('world','hot')
format % values
這種生活同豬有什麼不同?
工作?還是生活?原本,這不應該是個問題。但是,觀察所見,這個不僅僅是個問題,而且問題還很大。中華民族是乙個勤勞勇敢的民族 也許我們大多數人,在孩童時代,在某個教室裡,當初晨的陽光穿越了窗稜,對映出空氣中細小的塵埃,我們在朗朗書聲中,都讀過這樣一句話。是的,中華民族,的確是乙個勤勞的民族,太勤勞了!也...
這種生活同豬有什麼不同?
工作?還是生活?原本,這不應該是個問題。但是,觀察所見,這個不僅僅是個問題,而且問題還很大。中華民族是乙個勤勞勇敢的民族 也許我們大多數人,在孩童時代,在某個教室裡,當初晨的陽光穿越了窗稜,對映出空氣中細小的塵埃,我們在朗朗書聲中,都讀過這樣一句話。是的,中華民族,的確是乙個勤勞的民族,太勤勞了!也...
C 中為什麼有delete 這種寫法?
以 vc 2008 舉例,如果執行以下 foo p new foo 10 intn int p 1 猜猜 n 的值是多少?是 10 編譯器在使用new分配記憶體的時候在返回的記憶體塊裡放了乙個 陣列的 size 而用 new 分配的時候則不會 在使用 delete 的時候,生成的 最後是用 p 去呼...