python除了生孩子,什麼都會。作為解釋型語言,不需要像java一樣編譯。
支援三種類型:數字、字元串、運算表達式
print(1,"hello world",1+2)
用于輸出特殊符号:\\ \' \"
用于輸出特殊功能:\n 換行 \r 回車 \t 水準制表符 \b 退一格 new line 、return、table、blank
不希望轉義符起作用
print(r"hello\nworld")
python預設十進制輸出
print(chr(0b 100))
print(ord("4"))
import keyword
print(keyword.kwlist)
變量包括三部分:辨別、類型、值 id type value
name="瑪麗亞"
print(id(name),type(name),name)
變量指向新的空間,舊的變量成為記憶體垃圾
name="sandy"
print(name)
包括四種:整數、浮點數、布爾、字元串 int float bool str
int:正數、負數、0
整數可以表示二進制、八進制、十進制、十六進制 0b 0o 預設 0x
float:浮點數存儲存在不精确的問題,這是由于二進制底層問題造成
print(1.1+2.2) → 3.300000003
解決方案:導入decimal子產品
from decimal import decimal
print(decimal("1.1")+decimal("2.2")) → 3.3
bool類型中true 取值為1 false 取值為0
print(true+false) → 1
str字元串類型 單引号'' 雙引号" " 三引号''' ''' """ """
友善不同類型資料的拼接
name="張三"
age=10
print("我叫"+name+",今年"+str(age)+"歲。")
單行注釋 #
多行注釋 一對三引号
中文編碼說明
#coding:gbk #coding:utf-8
在檔案開頭附上,可以用記事本另存為檢視編碼格式
11.輸入函數input()
a=int(input("輸入a:"))
b=int(input("輸入b:"))
print(a+b)
運算符包括:算數運算符、指派運算符、比較運算符、布爾運算符、位運算符
算數運算符: + - * / 整數// 取餘% 幂**
print(9//-4,-9//4) → -3 -3
print(9%-4,-9%4) → -3 3
指派運算符:鍊式指派、參數指派、解包指派
a=b=c=20
a+=1
a,b,c=1,2,3
交換變量:a,b,c=c,b,a → 3,2,1
比較運算符:type=bool
比較value:> < == != >= <=
比較id: is is not
布爾運算符:and or not in not in
print("w" in "hello world")
位運算符:
0000 0100 → 4
0000 1000 → 8
位與 & print(4&8) → 0
位或 | print(4|8) → 12
左移位運算 << print(4<<1) 4左移一位,相當于乘以2的1次方
右移位運算 >> print(4>>1) 4右移一位,相當于除以2的1次方
算術運算符→位運算符→比較運算符→布爾運算符
包括:順序結構、選擇結構、循環結構
選擇結構:單分支結構、雙分支結構、多分支結構
格式:if if..else:.. if..elif..elif..else:
條件表達式:true if 條件 else false
print("y" if a!=1 else "n")
循環結構:①while ②for-in
while遵循四個條件:初始化變量-條件判斷-執行指令-改變變量
a=1
while a <=10:
print(a)
a+=1
for a in range(1,11):
常見練習:計算1-100内偶數之和、計算100-999之間的水仙花數有哪幾個、列印99乘法表
擷取對象的布爾值,使用内置函數bool(),以下對象的布爾值為0:
false 0 none 空字元串 空清單list()/[] 空元組tuple()/() 空字典dict()/{} 空集合set()
充當占位符,在搭建文法結構還沒有想好怎麼寫的時候可以用
range(stop)預設0開始stop-1結束.步長為1
range(start,stop) [start,stop)步長為1
range(start,stop,step) [start,stop)步長為step
r=range(1,10,2)
print(r) → [1,3,5,7,9]
break:直接退出循環
常見練習:輸入三次銀行卡密碼
continue:結束目前循環,進入下一循環。可以了解為執行非條件體内容
建立方式:[] 或者 使用内置函數list() 或者 清單生成式
lst=[1,2,3,4] lst=list([1,2,3,4]) lst=[i for i in range(1,5)]
清單的特點:清單元素按順序排列;索引映射唯一資料;可以存儲重複資料;任意類型混存;根據需要動态配置設定和回收記憶體
查詢:.index() 輸出的是數值所對應的索引
print(lst.index(1)) == print(lst.index(-3)) → 2
切片:
print(lst[1:3]) → [2,3]
print(lst[::2]) → [1,3]
print(lst[::-1]) → [4,3,2,1]
判斷:
in not in
元素周遊:for i in lst:
增加:
單一進制素 .append()
多元素.extend() 或者 切片替換
任意位置插入一個元素 .insert()
lst2=[1:2:3:4]
lst[0]=lst2
删除:
.remove(元素) 一次删除一個元素
.pop(索引)删除指定索引位置上的元素
切片替換
.clear()清空清單
del lst 删除清單對象
元素排序
兩種方法:①.sort()方法 ②内置函數sorted()
lst.sort(reverse=false) false或不寫,元素升序排列;true降序
print(lst)
print(sorted(lst,reverse=true))
字典以鍵值對的方式存儲資料,字典是一個無序的序列
字典原理是,根據key查找value所在位置,這裡的key經過hash轉化,是以要求key為不可變序列
字典特點:字典元素都是鍵值對,key不允許重複;字典元素是無序的;字典中key必須是不可變對象;字典可以根據需求動态伸縮;字典會浪費較大記憶體,是一種空間
換時間的資料結構。
建立方式:
socre={'king':100,'sandy':90,'lily':89}
score=dict({'king':100,'sandy':90,'lily':89})
score={name:scores for name,scores in zip(name,scores)}生成式 name=['king','sandy','lily'] soores=[100,90,89]
利用内置函數zip() 将對應元素打包成一個元組,然後傳回元組組成清單
元素擷取:[] 或 .get()
print(score['king']) 查找不到抛出keyerror
print(score.get('king')) 查找不到不會報錯,可以指定傳回值。 score.get('kiki',-1)
判斷元素存在與否: in not in
增加元素: score['jacky']=99
更改元素: score['king']=92
删除元素: del score['king']
清空元素: score.clear()
擷取字典試圖的三個方法:
.keys() 擷取所有key,輸出類型為dict_keys['king','sandy','lily']
.values() 擷取所有values,輸出類型為dict_values[100,90,89]
.items() 擷取所有key,value鍵值對,輸出類型為dict_items([('king',100),('sandy',90),('lily',89)])
将keys、values轉成清單格式: print(list(score.keys))
字典元素周遊:
for key in scores:
print(key,score[key]) 或 print(key,socre.get(key))
元組是python内置資料結構之一,是一個不可變序列。沒有增删改操作
為什麼将元組設計成不可變序列:
在多任務環境下,同時操作同一對象時不需要加鎖;在程式中盡量使用不可變序列
①() 或者 省略
tup=('python','hello',90) 或 tup='python','hello',90
隻有一個元素時候
tup=('python',) 此處,不能省略,省略後輸出類型為str
②内置函數tuple()
tup=tuple( ('python','hello',90) )
元組不能增删改,但内部元素資料可以
tup=('python','hello',90,[1,2])
tup[3].append(100)
print(tup) → ('python','hello',90,[1,2,100])
集合是内置資料結構,與清單、字典一樣屬于可變類型的序列;集合是沒有value的字典。
建立方式:
{}或 set()
s={'python','hello',90} 、s=set({'python','hello',90})
空集合print(set()) 不然會和空字典混淆
集合生成式:s={i for i in range(1,5)} 要求元素具有疊代特征
清單、元組、字元串轉換成集合:
print( set(lst) ) → {1,2,3,4}
print( set(('python','hello',90)) ) → {'python','hello',90}
print( set("python") ) → {'p','h','y','t','o','n'}
判斷: in not in
新增:
單個元素: .add() s.add(80)
多個元素: .update() s.update([1,2,3,4])、s.update({1,2,3,4})、s.update((1,2,3,4))
删除:
.remove(key) 一次删除一個元素,不存在keyerror
.discard() 一次删除一個元素,不存在不抛出異常
.pop() 随機删除任意一個元素,不可指定參數。與清單差別
.clear() 清空集合
集合之間的關系判斷:輸出結果為true false
== !=
a.issubset(b) a是b的子集
a.issuperset(b) a是b的超集
a.isdisjoint(b) a和b存在交集
集合運算:
.intersection() & 交集
.union() | 并集
.difference() - 差集
.symmetric_difference() ^ 對稱并集
s1={1,2,3,4} s2={2,3,5,6}
print(s1.intersection(s2)) → {2,3} print(s1 & s2)
print(s1.union(s2)) → {1,2,3,4,5,6} print(s1 | s2)
print(s1.difference(s2)) → {1,4} print(s1 - s2)
print(s1.symmetric_difference(s2)) → {1,4,5,6} print(s1 ^ s2)
tiele 3
font:courier new