每個語言都有自己獨特的語法
數(shù)據(jù)類型
python支持以下幾種基本數(shù)據(jù)類型:整數(shù)靡菇、浮點數(shù)昌讲、字符串国夜、布爾、空值短绸;另外還有類似對象的類型list(數(shù)組)车吹、tuple(元組)、dict(Map)醋闭、set(集合)
基本數(shù)據(jù)類型
整數(shù)和浮點數(shù)
>>> a=1
>>> b=1.1
上面窄驹,a是整數(shù),b是浮點數(shù)证逻,整數(shù)與浮點數(shù)計算結(jié)果為浮點數(shù)乐埠。
字符串
嚴(yán)格來說,字符串算是一種對象類型囚企,但和java一樣字符串是一種不可變對象類型丈咐。
和js一樣,字符串是使用單引號或雙引號括起來的任意文本洞拨,字符串之前用“+”號鏈接可以拼接字符串扯罐,如下:
>>> a='我是一個字符串'
>>> b="我也是一個字符串"
>>> c="\n我用了一個換行符號"
>>> a+b+c
'我是一個字符串我也是一個字符串\n我用了一個換行符號'
>>> print(a+b+c)
我是一個字符串我也是一個字符串
我用了一個換行符號
print()用于打印字符串
“…”符號用于代替換行负拟,提高可讀性烦衣。。。
>>> a='''line1
... line2
... line3'''
>>> a
'line1\nline2\nline3'
ord()和chr()函數(shù)
ord函數(shù)用來顯示一個字符的ascii碼花吟,chr函數(shù)用來將ascii碼轉(zhuǎn)為字符秸歧。
>>> ord('e')
101
>>> chr(101)
'e'
>>> ord('ee') #參數(shù)只能是一個字符,否則會拋出如下異常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 2 found
使用占位符格式化
python的格式化方法c語言幾乎一樣衅澈,我總是記不住键菱,網(wǎng)上抄一個吧
格式 | 描述 |
---|---|
%% | 百分號標(biāo)記 |
%c | 字符及其ASCII碼 |
%s | 字符串 |
%d | 有符號整數(shù)(十進(jìn)制) |
%u | 無符號整數(shù)(十進(jìn)制) |
%o | 無符號整數(shù)(八進(jìn)制) |
%x | 無符號整數(shù)(十六進(jìn)制) |
%X | 無符號整數(shù)(十六進(jìn)制大寫字符) |
%e | 浮點數(shù)字(科學(xué)計數(shù)法) |
%E | 浮點數(shù)字(科學(xué)計數(shù)法,用E代替e) |
%f | 浮點數(shù)字(用小數(shù)點符號) |
%g | 浮點數(shù)字(根據(jù)值的大小采用%e或%f) |
%G | 浮點數(shù)字(類似于%g) |
%p | 指針(用十六進(jìn)制打印值的內(nèi)存地址) |
%n | 存儲輸出字符的數(shù)量放進(jìn)參數(shù)列表的下一個變量中 |
>>> a="我的名字叫%s今布,我今年%d歲了"
>>> print(a % ('john', 31))
我的名字叫john经备,我今年31歲了
bytes
bytes算是一種獨立的數(shù)據(jù)類型,但它與字符串類型一般分不開
encode()函數(shù)可以將字符串轉(zhuǎn)換為對應(yīng)字符集的bytes
>>> a='我是一個字符串'
>>> b=b'我是一個字符串'
File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.
>>> b=b'hello world'
>>> print(b)
b'hello world'
>>> a.encode('utf-8')
b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'
布爾
True和False部默,注意大小寫
空值
None相當(dāng)于java的null侵蒙,注意大小寫
數(shù)組(list)
python初始一個數(shù)組的方式和js很像
>>> array_1=['aa','bb','cc']
>>> array_2=[11,22,33]
>>> array_3=['aa',11,'cc']
>>> empty_array=[]
>>> len(empty_array)
0
len()函數(shù)可以獲得數(shù)組的長度,和java一樣傅蹂,數(shù)組的下標(biāo)也是從0開始的纷闺,超過下標(biāo)范圍也會報數(shù)組越界
但數(shù)組的下標(biāo)可以是負(fù)數(shù),表示從后往前的順序
>>> array_1[0]
'aa'
>>> array_2[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> array_2[-1]
33
>>> array_2[-2]
22
append()份蝴、insert()犁功、pop()
append(element)函數(shù)是在數(shù)組?末尾追加元素
insert(index, element)是在指定的位置插入元素
pop(index)是刪除指定位置的元素,如果不指定index婚夫,則刪除末尾的元素
>>> array_1
['aa', 'bb', 'cc']
>>> array_1.append('dd')
>>> array_1
['aa', 'bb', 'cc', 'dd']
>>> array_1.insert(2,'ff')
>>> array_1
['aa', 'bb', 'ff', 'cc', 'dd']
>>> array_1.pop()
'dd'
>>> array_1
['aa', 'bb', 'ff', 'cc']
>>> array_1.pop(1)
'bb'
>>> array_1
['aa', 'ff', 'cc']
元組(tuple)
元組一種初始化后就不能修改的數(shù)組浸卦,初始化時用"("和")"表示
>>> t=(1111,'bbbb',array_1) # 元組的三個元素在初始化時就確定了,但你可以通過修改array_1變量的值來變相地修改元組t的值
>>> print(t)
(1111, 'bbbb', ['aa', 'ff', 'cc'])
字典(dict)
字典類型有些類似與java中的map案糙,是一種key-value的數(shù)據(jù)結(jié)構(gòu)
>>> dict={"aa":33432, "bb": "I'm a string", "cc":"dddd"} # 初始化一個dict變量
>>> dict["aa"] # 如何訪問dict中的值
33432
>>> dict["bb"]
"I'm a string"
>>> dict["dd"] # 如果key不存在镐躲,會拋出異常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'dd'
>>> "dd" in dict # 判斷一個key是否存在
False
>>> "aa" in dict
True
>>> print (dict.get("dd")) # 使用get方法,不取不存在的key,返回None
None
>>> print (dict.get("dd", "I got nothing")) # get函數(shù)的第二個參數(shù)表示侍筛,如果返回None則用第二個參數(shù)代替
I got nothing
>>> dict["dd"] = "ddddddd" # 往dict里添加一個值萤皂,如果有相同的key,則覆蓋原來的值
>>> dict.get("dd")
'ddddddd'
>>> dict
{'dd': 'ddddddd', 'cc': 'dddd', 'aa': 33432, 'bb': "I'm a string"}
>>> dict.pop("dd") # pop方法從dict中刪除一個key
'ddddddd'
>>> dict
{'cc': 'dddd', 'aa': 33432, 'bb': "I'm a string"}
>>>
set
set可以認(rèn)為是一個值不能重復(fù)的數(shù)組
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
>>> s2 = set([1,"33",dict]) # set的值里不能放不可HASH的數(shù)據(jù)類型
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> s2 = set([1,"33",3.44])
>>> s2
{1, 3.44, '33'}
變量
命名方式匣椰,只能使用大小寫英裆熙、數(shù)字和"_"組合,不能以數(shù)字開頭
另外禽笑,python是大小寫敏感的語言入录,因此要注意大小寫。
與java不同佳镜,python是?動態(tài)語言僚稿,在聲明一個變量時,不需要指定變量的數(shù)據(jù)類型蟀伸,這一點和js一樣蚀同。
控制流語句
條件判斷
python做條件判斷的關(guān)鍵字是"if"缅刽、"elif"、"else"
if <條件判斷1>:
<執(zhí)行1>
elif <條件判斷2>:
<執(zhí)行2>
elif <條件判斷3>:
<執(zhí)行3>
else:
<執(zhí)行4>
判斷條件可以直接是一個變量蠢络,只要這個變量是非零數(shù)值衰猛、非空字符串、非空list等刹孔,就判斷為True啡省,否則為False
循環(huán)
循環(huán)有兩種寫法一種是for...in,一種是while
for主要用于遍歷一個數(shù)組之類的結(jié)構(gòu)髓霞,else部分為可選卦睹,在循環(huán)執(zhí)行完成后執(zhí)行
>>> for ele in array_1:
... print(ele)
... else
... print("over!")
aa
ff
cc
over!
while則是只要滿足條件,就不斷循環(huán)方库,條件不滿足時退出
>>> n = 0
>>> sum = 0
>>> while n <= 100:
... sum=sum+n
... n=n+1
...
>>> print(sum)
5050
break語句用來終止循環(huán)
contine用來路過本次循環(huán)中的剩余部分
代碼縮進(jìn)
代碼縮進(jìn)是難以接受的python一個特性分预,代碼塊不是用{}括起來,而是通過縮進(jìn)薪捍。笼痹。±掖看上面while的例子凳干,第4、5行必須在前面加上一個Tab被济,否則不在循環(huán)體中執(zhí)行救赐。如此簡潔的設(shè)計是為啥?只磷?
運算符
四則運算
最簡單和常用的经磅,需要記牢
運算符 | 名稱 | 說明 | 舉例 |
---|---|---|---|
+ | 加 | 兩個對象相加 | 3 + 5得到8。'a' + 'b'得到'ab' |
- | 減 | 兩個數(shù)相減 | -5.2得到一個負(fù)數(shù)钮追。50 - 24得到26 |
* | 乘 | 兩個數(shù)相乘或是返回一個被重復(fù)若干次的字符串 | 2 * 3得到6预厌。'la' * 3得到'lalala' |
** | 冪 | 返回x的y次冪 | 3 ** 4得到81(即3 * 3 * 3 * 3) |
/ | 除 | x除以y | 4/3得到1(整數(shù)的除法得到整數(shù)結(jié)果)。4.0/3或4/3.0得到1.3333333333333333 |
// | 取整除 | 返回商的整數(shù)部分 | 4 // 3.0得到1.0 |
% | 取模 | 返回除法的余數(shù) | 8%3得到2元媚。-25.5%2.25得到1.5 |
條件運算符
這也都是程序中常用的
運算符 | 名稱 | 說明 |
---|---|---|
<轧叽、<= | 小于、小于等于 | 返回x是否小于y刊棕。所有比較運算符返回1表示真炭晒,返回0表示假。這分別與特殊的變量True和False等價甥角。注意网严,這些變量名的大寫。 |
>嗤无、>= | 大于震束、大于 等于 | 返回x是否大于y |
== | 等于 | 比較對象是否相等 |
!= | 不等于 | 比較兩個對象是否不相等 |
not怜庸、and、or | 布爾“非”驴一、 “與”休雌、 “或” | 如果x為True灶壶,not x返回False、如果y為False,x and y返回False茂蚓,x or y 返回 True |
位運算
這種不會就算了交汤,會就要精通,否則等于不會
運算符 | 名稱 | 說明 | 舉例 |
---|---|---|---|
<< | 左移 | 把一個數(shù)的比特向左移一定數(shù)目(每個數(shù)在內(nèi)存中都表示為比特或二進(jìn)制數(shù)字恰响,即0和1) | 2 << 2得到8——2按比特表示為10 |
>> | 右移 | 把一個數(shù)的比特向右移一定數(shù)目 | 11 >> 1得到5趣钱。——11按比特表示為1011胚宦,向右移動1比特后得到101首有,即十進(jìn)制的5 |
& | 按位與 | 數(shù)的按位與 | 5 & 3得到1 |
豎線 | 按位或 | 數(shù)的按位或 | 5 豎線 3得到7 |
^ | 按位異或 | 數(shù)的按位異或 | 5 ^ 3得到6 |
~ | 按位翻轉(zhuǎn) | x的按位翻轉(zhuǎn)是-(x+1) | ~5得到6 |
函數(shù)
定義函數(shù)
python 定義一個函數(shù)的語法如下
>>> def 函數(shù)名稱 (參數(shù)列表...) :
>>> 代碼塊
參數(shù)
函數(shù)的參數(shù)列表可以有多個,在定義時可以給參數(shù)添加默認(rèn)值
>>> def func( a, b=100, c='str' ) :
... print ( "a=[%s], b=[%d], c=%s" % (a, b, c) )
... return None # return None相當(dāng)于沒有return枢劝,也可以return其它類型
調(diào)用函數(shù)時井联,可以不傳參數(shù),也可以指定參數(shù)
>>> func( "hello" ) # 只傳參數(shù)a您旁,b烙常、c用者是默認(rèn)值
a=[hello], b=[100], c=str
>>> func() # 什么參數(shù)都沒傳,a不能為空
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func() missing 1 required positional argument: 'a'
>>> func( "hello", c="world" ) # 指定了參數(shù)c鹤盒,這時就無所謂參數(shù)列表的順序了
a=[hello], b=[100], c=world
>>> func( "hello", c="world", b=25 ) # 這個例子也用來說明蚕脏,指定參數(shù)列表調(diào)用方式
a=[hello], b=[25], c=world