python 基礎(chǔ)學(xué)習(xí)一
> 記錄學(xué)習(xí) 全部參考?https://github.com/datawhalechina/team-learning-program
注釋
#:單行注釋
''' ''' 或者 """ """? :多行注釋
運(yùn)算符
算數(shù)運(yùn)算符
加(+)減(-)乘(*)除(/) 整除(//) 取余(%) 冪(**)
比較運(yùn)算符
大于(>) 小于(<) 等于(==)? 不等于(!=) 大于等于(>=)? 小于等于(<=)
邏輯運(yùn)算符
與(and)? 或(or)? 非(not)
位運(yùn)算符
按位取反(~)? 按位與(&)? 按位或 (|) 按位異或(^)? 左移(<<) 右移(>>)
三元運(yùn)算符
res=cifa>belsed
# 若 a>b(true)? res = c
# 若 a>b(false) res = d
三目運(yùn)算符的嵌套
Python 三目運(yùn)算符支持嵌套,如此可以構(gòu)成更加復(fù)雜的表達(dá)式。在嵌套時(shí)需要注意 if 和 else 的配對(duì)
a,b,c,d=1,2,3,4
res=aifa>belsecifc>delsed# res = 4
res=aifa>belse(cifc>delsed)# res = 4
其他運(yùn)算符
in? 存在? 'A' in ['A', 'B', 'C']
not in? 不存在? 'h' not in ['A', 'B', 'C']
is? 是? "hello" is "hello"
is not? 不是? "hello" is not "hello"
注:
is, is not 對(duì)比的是兩個(gè)變量的內(nèi)存地址
==, != 對(duì)比的是兩個(gè)變量的值
比較的兩個(gè)變量,指向的都是地址不可變的類型(str等),那么is,is not 和 ==,!= 是完全等價(jià)的。
對(duì)比的兩個(gè)變量,指向的是地址可變的類型(list,dict,tuple等),則兩者是有區(qū)別的。
# 兩個(gè)變量均指向不可變類型
a="hello"
b="hello"
print(aisb,a==b)# True True
print(aisnotb,a!=b)# False False
?
# 比較的兩個(gè)變量均指向可變類型
a= ["hello"]
b= ["hello"]
print(aisb,a==b)# False True
print(aisnotb,a!=b)# True False
運(yùn)算符的優(yōu)先級(jí)
一元運(yùn)算符優(yōu)于二元運(yùn)算符。例如3 ** -2等價(jià)于3 ** (-2)。
先算術(shù)運(yùn)算,后移位運(yùn)算,最后位運(yùn)算。例如 1 << 3 + 2 & 7等價(jià)于 1 << (3 + 2)) & 7。
邏輯運(yùn)算最后結(jié)合。例如3 < 4 and 4 < 5等價(jià)于(3 < 4) and (4 < 5)。
數(shù)據(jù)類型與轉(zhuǎn)換
整型
a=1031
print(a,type(a))
# 1031 <class 'int'>
浮點(diǎn)型
print(1.,type(1.))
# 1.0 <class 'float'>
a=0.00000023
b=2.3e-7
print(a)# 2.3e-07
print(b)# 2.3e-07
保留浮點(diǎn)型的小數(shù)點(diǎn)后 n 位
用 decimal 包里的 Decimal 對(duì)象和 getcontext() 方法來實(shí)現(xiàn):
importdecimal
fromdecimalimportDecimal
?
a=decimal.getcontext()# Decimal 對(duì)象的默認(rèn)精度值是 28 位 (`prec=28`)
print(a)
?
# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999,
# capitals=1, clamp=0, flags=[],
# traps=[InvalidOperation, DivisionByZero, Overflow])
?
# 使 1/3 保留 4 位,用 getcontext().prec 來調(diào)整精度
b=Decimal(1)/Decimal(3)
print(b)? ? ? ? # 0.3333333333333333333333333333
?
decimal.getcontext().prec=4
c=Decimal(1)/Decimal(3)
print(c)# 0.3333
布爾型
布爾 (boolean) 型變量只能取兩個(gè)值,True 和 False。當(dāng)把布爾型變量用在數(shù)字運(yùn)算中,用 1 和 0 代表 True 和 False。
確定bool(X) 的值是 True 還是 False,就看 X 是不是空,空的話就是 False,不空的話就是 True。
對(duì)于數(shù)值變量,0, 0.0 都可認(rèn)為是空的。
對(duì)于容器變量,里面沒元素就是空的。
print(type(0),bool(0),bool(1))? ? # <class 'int'> False True
print(type(10.31),bool(0.00),bool(10.31))# <class 'float'> False True
print(type(True),bool(False),bool(True))# <class 'bool'> False True
?
# bool作用在容器類型變量:X 只要不是空的變量,bool(X) 就是 True,其余就是 False
print(type(''),bool(''),bool('python'))# <class 'str'> False True
print(type(()),bool(()),bool((10,)))# <class 'tuple'> False True
print(type([]),bool([]),bool([1,2]))# <class 'list'> False True
print(type(set()),bool(set()),bool({1,2}))# <class 'set'> False True
print(type({}),bool({}),bool({'a':1,'b':2}))# <class 'dict'> False True
獲取類型信息
獲取類型信息 type(object), type() 不會(huì)認(rèn)為子類是一種父類類型,不考慮繼承關(guān)系。
獲取類型信息 isinstance(object, classinfo) ,isinstance() 會(huì)認(rèn)為子類是一種父類類型,考慮繼承關(guān)系.
如果要判斷兩個(gè)類型是否相同推薦使用 isinstance()。
print(type(1))# <class 'int'>
print(type(5.2))# <class 'float'>
print(type(True))# <class 'bool'>
print(type('5.2'))# <class 'str'>
?
print(isinstance(1,int))# True
print(isinstance(5.2,float))# True
print(isinstance(True,bool))# True
print(isinstance('5.2',str))# True
類型轉(zhuǎn)換
轉(zhuǎn)換為整型 int(x, base=10)
轉(zhuǎn)換為字符串 str(object='')
轉(zhuǎn)換為浮點(diǎn)型 float(x)
print(int('520'))# 520
print(int(520.52))# 520
print(float('520.52'))# 520.52
print(float(520))# 520.0
print(str(10+10))# 20
print(str(10.1+5.2))# 15.3
print() 函數(shù)
print(*objects,sep=' ',end='\n',file=sys.stdout,flush=False)
將對(duì)象以字符串表示的方式格式化輸出到流文件對(duì)象file里。其中所有非關(guān)鍵字參數(shù)都按str()方式進(jìn)行轉(zhuǎn)換為字符串輸出;
關(guān)鍵字參數(shù)sep是實(shí)現(xiàn)分隔符,比如多個(gè)參數(shù)輸出時(shí)想要輸出中間的分隔字符;
關(guān)鍵字參數(shù)end是輸出結(jié)束時(shí)的字符,默認(rèn)是換行符\n;
關(guān)鍵字參數(shù)file是定義流輸出的文件,可以是標(biāo)準(zhǔn)的系統(tǒng)輸出sys.stdout,也可以重定義為別的文件;
關(guān)鍵字參數(shù)flush是立即把內(nèi)容輸出到流文件,不作緩存。
citylist= ['Shanghai','Beijing','Chengdu','Wuhan']
print("This is printed without 'end'and 'sep'.")
foritemincitylist:
print(item)
'''
This is printed without 'end'and 'sep'.
Shanghai
Beijing
Chengdu
Wuhan
'''
citylist= ['Shanghai','Beijing','Chengdu','Wuhan']
print("This is printed with 'end='&''.")
foritemincitylist:
print(item,end='&')
?
'''
This is printed with 'end='&''.
Shanghai&Beijing&Chengdu&Wuhan&
'''
citylist= ['Shanghai','Beijing','Chengdu','Wuhan']
print("This is printed with 'sep='--''.")
foritemincitylist:
print("welcome",item,sep='--')
'''
This is printed with 'sep='--''.
welcome--Shanghai
welcome--Beijing
welcome--Chengdu
welcome--Wuhan
'''
練習(xí)題:
怎樣對(duì)python中的代碼進(jìn)行注釋?
# 單行注釋
'''
多行注釋
多行注釋
'''
"""
多行注釋
多行注釋
"""
python有哪些運(yùn)算符,這些運(yùn)算符的優(yōu)先級(jí)是怎樣的?

python 中 is, is not 與 ==, != 的區(qū)別是什么?
is, is not 對(duì)比的是兩個(gè)變量的內(nèi)存地址
==, != 對(duì)比的是兩個(gè)變量的值
當(dāng)指向地址都是不可變類型時(shí) is,is not 和 ==,!= 是完全等價(jià)的
python有哪些運(yùn)算符,這些運(yùn)算符的優(yōu)先級(jí)是怎樣的?這些數(shù)據(jù)類型之間如何轉(zhuǎn)換?
? 6個(gè)標(biāo)準(zhǔn)數(shù)據(jù)類型
? ? ? ? ? ? ? ? ? *Number(數(shù)字)
? ? ? ? ? ? ? ? ? ? ? *True=1
? ? ? ? ? ? ? ? ? ? ? *False=0
? ? ? ? ? ? ? ? ? ? ? *數(shù)值的除法(/)總是返回一個(gè)浮點(diǎn)數(shù),要獲取整數(shù)使用//操作符
? ? ? ? ? ? ? ? ? ? ? *在混合計(jì)算時(shí),python會(huì)把整形轉(zhuǎn)換為浮點(diǎn)數(shù)
? ? ? ? ? ? ? ? ? *String(字符串)
? ? ? ? ? ? ? ? ? ? ? *字符串用'或"括起來,同時(shí)使用\轉(zhuǎn)義特殊字符串
? ? ? ? ? ? ? ? ? ? ? *如果不想讓反斜杠發(fā)生轉(zhuǎn)義,可以在字符串前面加個(gè)r表示原始字符串
? ? ? ? ? ? ? ? ? ? ? *索引值以0為開始,-1為末尾的開始位置
? ? ? ? ? ? ? ? ? ? ? *加號(hào)+是字符串的連接符,星號(hào)*表示復(fù)制當(dāng)前的字符串,緊跟的數(shù)字為復(fù)制的次數(shù)
? ? ? ? ? ? ? ? ? *List(列表)
? ? ? ? ? ? ? ? ? ? ? *list寫在方括號(hào)之間,元素用逗號(hào)隔開
? ? ? ? ? ? ? ? ? ? ? *和字符串一樣,list可以被索引和切片
? ? ? ? ? ? ? ? ? ? ? *list可以使用+操作符進(jìn)行連接
? ? ? ? ? ? ? ? ? ? ? *list中的元素可以改變的
? ? ? ? ? ? ? ? ? *Tuple(元組)
? ? ? ? ? ? ? ? ? ? ? *元組與列表類似,不同之處在于元組的元素不能修改,元組寫在小括號(hào)里。元素之間用逗號(hào)隔開
? ? ? ? ? ? ? ? ? ? ? *元組也可以被索引和切片,方法一樣
? ? ? ? ? ? ? ? ? ? ? *注意構(gòu)造包含0或1個(gè)元素的元組的特殊語法規(guī)則
? ? ? ? ? ? ? ? ? ? ? *元組也可以用+操作符進(jìn)行拼接
? ? ? ? ? ? ? ? ? *Sets(集合)
? ? ? ? ? ? ? ? ? ? ? *set是一個(gè)無需不重復(fù)的序列,基本功能是進(jìn)行成員關(guān)系的測試和刪除重復(fù)元素
? ? ? ? ? ? ? ? ? Dictionary(字典)
? ? ? ? ? ? ? ? ? ? ? *字典是一種映射類型,字典用{}標(biāo)識(shí),它是一個(gè)無序的建(key):值(value)對(duì)集合
? ? ? ? ? ? ? ? ? ? ? *建(key)必須使用不可變類型。在同一個(gè)字典中建(key)必須是唯一的
? ? ? ? ? ? ? ? ? ? ? *創(chuàng)建空字典使用{}
?? *int(x,base=10)x字符串或數(shù)字,base進(jìn)制數(shù),默認(rèn)十進(jìn)制 浮點(diǎn)轉(zhuǎn)為整數(shù)
?? *float 整數(shù)轉(zhuǎn)換為浮點(diǎn)型
?? *complex(1,2) 轉(zhuǎn)換為復(fù)數(shù)
?? *str(10)將對(duì)象轉(zhuǎn)換為字符串
?? *repe()將對(duì)象轉(zhuǎn)換為表達(dá)式字符串
?? *repr(dict)將對(duì)象轉(zhuǎn)換為表達(dá)式字符串
?? *eval(str)用來計(jì)算在字符串中有效的python表達(dá)式,返回一個(gè)對(duì)象
?? *tuple(listi)將列表轉(zhuǎn)化為元組
?? *list()將元組轉(zhuǎn)換為列表
?? *set轉(zhuǎn)換集合
?