Python學習之語法學習

每個語言都有自己獨特的語法

數(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ù)計算結果為浮點數(shù)。

字符串

嚴格來說,字符串算是一種對象類型,但和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碼轉為字符。

>>> 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)上抄一個吧

格式 描述
%% 百分號標記
%c 字符及其ASCII碼
%s 字符串
%d 有符號整數(shù)(十進制)
%u 無符號整數(shù)(十進制)
%o 無符號整數(shù)(八進制)
%x 無符號整數(shù)(十六進制)
%X 無符號整數(shù)(十六進制大寫字符)
%e 浮點數(shù)字(科學計數(shù)法)
%E 浮點數(shù)字(科學計數(shù)法,用E代替e)
%f 浮點數(shù)字(用小數(shù)點符號)
%g 浮點數(shù)字(根據(jù)值的大小采用%e或%f)
%G 浮點數(shù)字(類似于%g)
%p 指針(用十六進制打印值的內存地址)
%n 存儲輸出字符的數(shù)量放進參數(shù)列表的下一個變量中
>>> a="我的名字叫%s,我今年%d歲了"
>>> print(a % ('john', 31))
我的名字叫john,我今年31歲了

bytes

bytes算是一種獨立的數(shù)據(jù)類型,但它與字符串類型一般分不開

encode()函數(shù)可以將字符串轉換為對應字符集的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相當于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ù)組的下標也是從0開始的,超過下標范圍也會報數(shù)組越界

但數(shù)組的下標可以是負數(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ù)結構

>>> 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可以認為是一個值不能重復的數(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做條件判斷的關鍵字是"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ù)組之類的結構,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)中的剩余部分

代碼縮進

代碼縮進是難以接受的python一個特性,代碼塊不是用{}括起來,而是通過縮進。。??瓷厦鎤hile的例子,第4、5行必須在前面加上一個Tab,否則不在循環(huán)體中執(zhí)行。如此簡潔的設計是為啥??

運算符

四則運算

最簡單和常用的,需要記牢

運算符 名稱 說明 舉例
+ 兩個對象相加 3 + 5得到8。'a' + 'b'得到'ab'
- 兩個數(shù)相減 -5.2得到一個負數(shù)。50 - 24得到26
* 兩個數(shù)相乘或是返回一個被重復若干次的字符串 2 * 3得到6。'la' * 3得到'lalala'
** 返回x的y次冪 3 ** 4得到81(即3 * 3 * 3 * 3)
/ x除以y 4/3得到1(整數(shù)的除法得到整數(shù)結果)。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ù)在內存中都表示為比特或二進制數(shù)字,即0和1) 2 << 2得到8——2按比特表示為10
>> 右移 把一個數(shù)的比特向右移一定數(shù)目 11 >> 1得到5?!?1按比特表示為1011,向右移動1比特后得到101,即十進制的5
& 按位與 數(shù)的按位與 5 & 3得到1
豎線 按位或 數(shù)的按位或 5 豎線 3得到7
^ 按位異或 數(shù)的按位異或 5 ^ 3得到6
~ 按位翻轉 x的按位翻轉是-(x+1) ~5得到6

函數(shù)

定義函數(shù)

python 定義一個函數(shù)的語法如下

>>> def 函數(shù)名稱 (參數(shù)列表...) :
>>>     代碼塊

參數(shù)

函數(shù)的參數(shù)列表可以有多個,在定義時可以給參數(shù)添加默認值

>>> def func( a, b=100, c='str' ) :
...     print ( "a=[%s], b=[%d], c=%s" % (a, b, c) )
...     return None # return None相當于沒有return,也可以return其它類型

調用函數(shù)時,可以不傳參數(shù),也可以指定參數(shù)

>>> func( "hello" ) # 只傳參數(shù)a,b、c用者是默認值
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ù)列表調用方式
a=[hello], b=[25], c=world
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • http://python.jobbole.com/85231/ 關于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,804評論 1 118
  • 一、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù),當然包括負整數(shù),在Python程序...
    績重KF閱讀 2,015評論 0 1
  • 最近在慕課網(wǎng)學習廖雪峰老師的Python進階課程,做筆記總結一下重點。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,940評論 0 5
  • 進入公司即將4個月,零零總總小項目跟了幾個,跟進了一個產(chǎn)品從出生到現(xiàn)在上小學的歷程,經(jīng)驗不多,但很想把自己當下的感...
    Miss丶企鵝閱讀 190評論 0 1
  • 正式上學前一天老師要每人準備一分鐘的自我介紹。等到要介紹時我卻發(fā)現(xiàn)大家都是很短且比較隨意 ,而我的準備的相比...
    事就是A閱讀 282評論 0 0

友情鏈接更多精彩內容