python 基礎(chǔ)學(xué)習(xí)一

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)換集合

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容