先貼乙個教程
▲input('……')
輸出引號裡內容並讀入
▲print('……',a,b)
引號裡內容原樣輸出;每用乙個逗號分隔都會輸出乙個空格;
print('%d %s %.2f' % (2,'123',3.0))
輸出乙個%需要用%%轉義
末尾會預設加乙個換行,可以用print(……,end=' ')取消回車
注意可以把輸出的值放在list裡再輸出來加速
print (' '.join(map(str, res)))
▲print('''a
bc''')
每行都能換行。
▲#注釋
▲單引號和雙引號都可以表示字串;用\進行轉義。
▲縮排決定子程式;if和else後要加冒號。可以用elif代替else if。
▲for迴圈:
for i in range(0,100000):
本質是生成了乙個很大的list然後乙個個訪問過去。
▲while迴圈:
while (x>0):
▲int():轉化成整數。
▲import math:匯入math庫。
▲dict:
類似於unordered_map,用大括號定義。d =
可以直接用中括號訪問和修改。
可以用'bob' in d 進行詢問是否存在;也可以用d.get('bob',-1)訪問,沒有元素返回-1。
用d.pop('bob',-1)刪除。
for迴圈in後面可以放dict型別。直接引用預設迭代key。
如果要迭代value,用for value in d.values()
如果要同時迭代key和value 用for k, v in d.items()。
enumerate()可以把list轉化為「下標-list」的pair
▲set:
用小括號和乙個list定義。s = set([1, 2, 3])
用add(key)和remove(key)進行加入和刪除。
注意可以完全看做乙個集合,因此可以進行s1&s2,s1|s2等運算。
▲用lambda快速定義函式
比如f=lambda x,y:x+y
▲定義乙個普通函式
def move(x, y, step, angle=0):
nx=ny=1
return nx, ny
▲傳入可變引數
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
呼叫的時候,可以往move裡放0或多個引數(如move(1,2,3))。進入函式後,它們會打包成乙個list。
如果就是要往裡面傳整個list型別的東西,可以簡寫成move(*list)。
▲傳入關鍵字引數
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
呼叫的時候,可以在末尾放0或多個引數,比如person('adam', 45, gender='m', job='engineer')。
進入函式後,它們會打包成乙個dict。同樣的,可以簡單地用**dict來傳入乙個dict型別的容器。
▲傳入命名關鍵字引數
def person(name, age, *, city, job):
中間要加個*號以示區分。在這樣的情況下,後面只接受名字(第一維)為city,job的關鍵字。
如果之前已經定義過可變引數了,那麼不用加*來區分了。
▲定義函式引數的順序:必選引數->預設引數->可變引數->命名關鍵字引數->關鍵字引數
def f(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
甚至可以組裝乙個tuple和乙個dict直接傳進去,即任意乙個函式f都可以用形如f(*args,**kw)的形式呼叫。
▲基本函式
eval()將引號裡的東西用python表示式計算結果
math.sqrt()
math.acos()
abs()
round(x,2)保留2位小數
▲隨機數相關(import random)
seed(x)
random() 生成[0.0,1.0)之間的隨機小數
randint(a,b) 生成[a,b]之間的整數
shuffle(seq) 把乙個序列型別打亂
▲使用import decimal呼叫浮點數高精度庫。
設定計算時的精度:decimal.getcontext().prec=n
將乙個數x轉化為它:decimal.decimal(x)
初始化常量時,要用單引號括起來。
▲切片a[0:3] :擷取list裡固定的一段(注意下標左閉右開)。支援負數,0可以省略。
a[:10:2]:前10個數里每兩個中取乙個(即a[0],a[2],a[4],a[6],a[8])。中間的數省略,視為在整個list裡選。
▲列表生成式
[x * x for x in range(1, 11)]
甚至可以加判斷 [x * x for x in range(1, 11) if x % 2 == 0]
▲生成器generator
定義方式①:將列表生成式的替換成()
每次用g.next()呼叫下乙個值;也可以用 for i in g 迴圈呼叫
定義方式②:用函式。每次在關鍵字yield後丟擲乙個值,next後從上次丟擲位置繼續。
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
▲開啟和關閉
《變數名》=open(《檔名》,《開啟模式》)
開啟模式和c類似。'r'是唯讀,'w'覆蓋寫,'a'追加;'t'為文字檔案型別,'b'為二進位制檔案型別;末尾加乙個'+'表示在原功能上同時加上讀寫功能。
open預設以"rt"的方式開啟;如果讀入、**等,就要用'*b'開啟。
釋放檔案使用權:《變數名》.close()
▲讀寫格式
.readall()
.readline(size=-1) 讀入一行。(如果有引數,就是讀入size個字元)
.readlines(size=-1) 讀入所有行,放到乙個list裡。
檔案變數本身是行序列,所以可以用 for line in 《檔名》: 遍歷。
.write(s) 寫入s
.writeline(lines) 將乙個字串list寫入檔案
.seek(offset)改變檔案裡操作指標位置。0(開頭),1(當前位置),2(檔案結尾)
python教學筆記 python學習筆記(一)
1.eval 函式 eval是單詞evaluate的縮寫,就是 求.的值的意思。eval 函式的作用是把str轉換成list,dict,tuple.li 1 1,2,3 print eval li 1 di 1 print eval di 1 tu 1 2,4,6 print eval tu 1 執...
python學習筆記
coding utf 8 coding utf 8 應該像八股文一樣在每個指令碼的頭部宣告,這是個忠告 為了解決中文相容問題,同時你應該選擇支援 unicode 編碼的編輯器環境,保證在執行指令碼中的每個漢字都是使用 utf 8 編碼過的。cdays 5 exercise 3.py 求0 100之間...
Python 學習筆記
python 學習筆記 def run print running.def execute method method execute run result running.condition false test yes,is true if condition else no,is false ...