- 基本文法
- 注釋
Python中的注釋以 # 開頭
# 第一個注釋
print("Hello, Python!") # 第二個注釋
# 号右邊的文字都會被當作說明文字,而不是真正要執行的程式。
# 号後面建議先添加一個空格,然後再編輯相應的說明文字
如果在代碼後面添加注釋,注釋和代碼之間至少要有兩個空格。
還有一種獨一無二的注釋方式,那就是文檔字元串。
def find_all(self):
"""Return all items."""
return self.find ('all')
- 行與縮進
# 行與縮進
if True:
print("True")
else:
print("False")
最好使用4個空格進行懸挂式縮進,并且同一個代碼塊的語句,
必須含有相同的縮進空格數。
注意:
在Python中使用縮進時,絕對不要使用Tab,也不要Tab和空格混用。
- 語句換行
# 語句換行 每行代碼長度不要超過80個字元。對于過長代碼可在語句外加一對圓括号,将其進行換行顯示
string = ("Python是一種面向對象、解釋型計算機程式設計語言,"
"Guido van Rossum 于1989年底發明。"
"第一個公開發行版本發行于1991年。"
"Python源代碼同樣遵循 GPL (GNU General Public License)協定。")
需要注意的是:
在[]、{}、()中包含的多行語句會進行隐式連接配接,無需再使用圓括号進行換行。
total = ['one', 'two', 'three', 'four', 'five']
- 變量和資料類型
- 變量和指派
num_one = 100
num_two = 87
result = num_one + num_two
print(result)
- 變量的類型
- 數字類型
包含整型、浮點型和複數類型,具體如下:
整型:0101 83 -239 0x80 88743743754
浮點型:3.1415 4.2E-10 -2.34E-19
複數類型:3.12+1.23j -1.23-98j
- 布爾類型
特殊的整型,它的值隻有兩個,分别是True和False。
如果将布爾值進行數值運算,True會被當作整型1,False會被當作整型0。
- 字元串類型
Python中的字元串被定義為一個字元集合,它被引号所包含,引号可以是單引号、雙引号或者三引号(三個連續的單引号或者雙引号)。
字元串具有索引規則,第1個字元的索引是0,第1個字元的索引是1,以此類推。
string_one = 'Python1'
string_two = "Python2"
string_three = '''Python3'''
- 清單和元組類型
可以将清單和元組當作是普通的“數組”,它們可以儲存任意數量的任意類型的值,這些值稱作元素。
清單中的元素使用中括号[]包含,元素的個數和值是可以随意修改的。
而元組中的元素使用小括号()包含,元素不可以修改。
list_name = [1, 2, 'hello'] # 這是一個清單
tuple_name = (1, 2, 'hello') # 這是一個元組
- 字典類型
字典是Python中的映射資料類型,由鍵-值對組成。字典可以存儲不同類型的元素,元素使用大括号{}來包含。
通常情況下,字典的鍵會以字元串或者數值的形式來表示,而值可以是任意類型。
# 這是一個字典
dict_name = {"name":"zhangsan", "age":18}
上述變量dict_name是一個字典類型,它存儲了資料,
第1個元素的鍵為name,值為zhangsan,
第2個元素的鍵為age,值為18
在Python中,隻要定義了一個變量,并且該變量存儲了資料,那麼變量的資料類型就已經确定了。這是因為系統會自動辨識變量的資料類型。
number = 5.2
type(number)
>>> number=5.2
>>> type(number)
<class 'float'>
>>>
- 集合類型
集合(set)是一個無序的不重複元素序列。
可以使用大括号 { } 或者 set() 函數建立集合,
注意:建立一個空集合必須用 set() 而不是 { },
因為 { } 是用來建立一個空字典
>>> basket={'apple','orange','apple','banana','apple','watermelon'}
>>> basket
{'orange', 'banana', 'apple', 'watermelon'}
>>> 'orange' in basket
True
>>> 'abc' in basket
False
>>>
# 下面展示兩個集合間的運算
>>> a=set('abcaradabra')
>>> b=set('acalazma')
>>> a
{'d', 'c', 'r', 'a', 'b'}
>>> b
{'c', 'l', 'z', 'm', 'a'}
>>> a-b # 集合a中包含而集合b中不包含的元素
{'r', 'b', 'd'}
>>> a|b # 集合a或b中包含的所有元素
{'d', 'c', 'r', 'l', 'z', 'm', 'a', 'b'}
>>> a&b # 集合a和b中都包含了的元素
{'c', 'a'}
>>> a^b # 不同時包含于a和b的元素
{'d', 'z', 'r', 'm', 'b', 'l'}
>>>
>>> test_set=set('AAA','BBB','CCC')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: set expected at most 1 arguments, got 3
>>> test_set=set(('AAA','BBB','CCC'))
>>> test_set
{'CCC', 'AAA', 'BBB'}
>>> test_set.add('DDD') # 添加元素
>>> test_set
{'CCC', 'AAA', 'DDD', 'BBB'}
>>> test_set.update({1,3}) # 添加元素
>>> test_set
{'AAA', 1, 3, 'DDD', 'CCC', 'BBB'}
>>> test_set.update([1,4],[5,6]) # 添加元素
>>> test_set
{'AAA', 1, 3, 4, 5, 'DDD', 6, 'CCC', 'BBB'}
>>>
>>> test_set.remove(4) # 移除元素
>>> test_set
{'AAA', 1, 3, 5, 'DDD', 6, 'CCC', 'BBB'}
>>>
>>> test_set.remove('BBB') # 移除元素
>>> test_set
{'AAA', 1, 3, 5, 'DDD', 6, 'CCC'}
>>>
>>> test_set.pop() #随機删除集合中的一個元素
'AAA'
>>>
>>> test_set
{1, 3, 5, 'DDD', 6, 'CCC'}
>>>
>>> len(test_set) #計算集合元素個數
6
>>> 3 in test_set #判斷元素是否在集合中
True
>>> 30 in test_set #判斷元素是否在集合中
False
>>>
>>> test_set.clear() #清空集合
>>> test_set
set()
>>>
- 辨別符和關鍵字
- 辨別符
- 由字母、下劃線和數字組成,且不能以數字開頭。
- 區分大小寫。
- 辨別符不能使用關鍵字。
- 規範:
1)見名之意;2)類名使用大寫字母開頭,子產品名用小寫加下劃線方式
- 關鍵字
>>> help()
help> keywords
Here is a list of the Python keywords. Enter any keyword to get more help.
False def if raise
None del import return
True elif in try
and else is while
as except lambda with
assert finally nonlocal yield
break for not
class from or
continue global pass
- 簡單數值類型
- 整型
整數類型簡稱整型,它用于表示整數,十進制、二進制(以0B或者0b開頭)、八進制(以數字0開頭)和十六進制(以0x或者0X開頭)
>>> a = 0b10100
>>> type(a)
<class 'int'>
>>> a
20
>>> a = 0b11100
>>> type(a)
<class 'int'>
>>> a
28
>>> a = 1011
>>> a
1011
>>> a = 0b1011
>>> a
11
>>> a = 0b0101
>>> a
5
>>> a = 0b0110
>>> a
6
>>> bin(20)
'0b10100'
>>> oct(20)
'0o24'
>>> hex(20)
'0x14'
>>>
>>> a=100000000000*10000000000
>>> a
1000000000000000000000
>>> type(a)
<class 'int'>
>>>
- 浮點型
遵循IEEE754雙精度标準,每個浮點數占8個位元組,
能表示的範圍是-1.79E+308 ~ +1.79E+308
>>> 1.2e5
120000.0
>>> -1.8e308
-inf
>>> 1.8e308
inf
>>>
隻有兩個取值:True和False,分别對應整型的0和1。
可用于布爾測試(如用在if、while中)
以下對象的布爾值都是False:
- None
- False(布爾值)
- 0(整型0)
- 0L(長整型0)
- 0.0(浮點型0)
- 0.0+0.0j(複數0)
- “”(空字元串)
- [](空清單)
- ()(空元組)
- {}(空字典)
- 複數類型
實部和虛部構成,都是浮點型
>>> a=1+2j
>>> a
(1+2j)
>>> a.real
1.0
>>> a.imag
2.0
>>> type(a.real)
<class 'float'>
>>> type(a.imag)
<class 'float'>
>>>
- 數字類型轉換
>>> a=1.2
>>> int(a)
1
>>> b=2
>>> float(b)
2.0
>>> complex(3,4)
(3+4j)
>>>
>>> complex(3.6)
(3.6+0j)
>>>
- 運算符
- 算術運算符
a = 20
b = 10
c = 0
# 加法運算
c = a + b
print("1--c的值為:", c)
# 減法運算
c = a - b
print("2--c的值為:", c)
# 乘法運算
c = a * b
print("3--c的值為:", c)
# 除法運算
c = a / b
print("4--c的值為:", c)
# 取餘運算
c = a % b
print("5--c的值為:", c)
# 取整除運算
c = a // b
print("6--c的值為:", c)
# 修改變量 a、b、c
a = 2
b = 3
c = a ** b # 幂的運算
print("7--c的值為:", c)

- 指派運算符 =
>>> number=1
>>> number
1
>>> x=y=z=1
>>> x
1
>>> y
1
>>> z
1
>>> a,b = 1,2
>>> a
1
>>> b
2
>>>
注:Python中不支援C語言中的自增(++)和自減(--)運算符
- 複合指派運算符
a = 20
b = 10
c = 0
# 加法指派運算
c += a
print("1---c的值為:", c)
# 乘法指派運算
c *= a
print("3---c的值為:", c)
# 除法運算
c /= a
print("4---c的值為:", c)
# 先修改變量c的值,然後進行取餘指派運算
c = 2
c %= a
print("5---c的值為:", c)
# 先修改變量 a和c的值,然後進行幂指派運算
a = 2
c = 3
c **= a
print("6---c的值為:", c)
# 取整除指派運算
c //= a
print("7---c的值為:", c)
- 比較運算符
a = 20
b = 10
c = 0
# 比較 a 和 b 的值是否相等
if (a == b):
print("1——a等于b")
else:
print("1——a不等于b")
# 比較 a 和 b 的值是否不相等
if (a != b):
print("2——a不等于b")
else:
print("2——a等于b")
# 比較 a 是否小于 b
if (a < b):
print("3——a小于b")
else:
print("3——a大于等于b")
# 比較 a 是否大于 b
if (a > b):
print("4——a大于b")
else:
print("5——a小于等于b")
# 修改變量 a 和 b 的值
a = 5
b = 20
# 比較 a 是否小于等于 b
if (a <= b):
print("5——a小于等于b")
else:
print("5——a大于b")
# 比較 b 是否大于等于 a
if (b >= a):
print("6——b大于等于a")
else:
print("6——b小于a")
- 邏輯運算符
# 邏輯運算符
a = 20
b = 10
# 判斷 a and b 布爾“與”。若a為真,繼續計算b,表達式結果為b的值;若a為假,無需計算b,表達式結果為a的值
if a and b:
print("1---變量a 和 b 都為 true")
else:
print("1---變量a 和 b 有一個不為 true")
# 判斷 a or b 布爾“或”。若a為真,無需計算b,表達式結果為a的值;若a為假,繼續計算b,表達式結果為b的值
if a or b:
print("2---變量a 和 b 都為 true,或其中一個變量為 true")
else:
print("2---變量a 和 b 都不為 true")
# 修改變量 a 的值
a = 0
if a and b:
print("3---變量a 和 b 都為 true")
else:
print("3---變量a 和 b 有一個不為 true")
if a or b:
print("4---變量a 和 b 都為 true,或其中一個變量為 true")
else:
print("4---變量a 和 b 都不為 true")
# 判斷not(a and b)
if not a and b:
print("5---變量a 和 b 都為 false,或其中一個變量為 false")
else:
print("5---變量a 和 b 都為 true")
- 成員運算符
# 成員運算符
a = 20
b = 10
list_demo = [1,2,3,4,5]
# 判斷變量a 是否在給定的清單list_demo中
if a in list_demo:
print("1---變量a 在給定的清單 list_demo 中")
else:
print("1---變量a 不在給定的清單 list_demo 中")
# 判斷變量b 是否在給定的清單list_demo中
if b not in list_demo:
print("2---變量b 不在給定的清單 list_demo 中")
else:
print("2---變量b 在給定的清單 list_demo 中")
# 修改變量 a 的值
a = 2
if a in list_demo:
print("3---變量a 在給定的清單 list_demo 中")
else:
print("3---變量a 不在給定的清單 list_demo 中")
- 位運算
>>> a =6
>>> a
6
>>> bin(a << 2) #左移
'0b11000'
>>> a = 9
>>> bin(a << 2) #左移
'0b100100'
>>>
>>> a = 9
>>> a
9
>>> bin(a)
'0b1001'
>>> bin(a << 2) #左移
'0b100100'
>>> bin(a << 4) #左移
'0b10010000'
>>> bin(a << 6) #按位左移
'0b1001000000'
>>>
>>> a = 8
>>> bin(a)
'0b1000'
>>> bin(a >> 1) #右移
'0b100'
>>> a
8
>>> bin(a >> 2) #右移
'0b10'
>>> bin(a >> 3) #右移
'0b1'
>>> bin(a >> 4) #右移
'0b0'
>>> bin(a >> 5) #按位右移
'0b0'
>>>
>>> a = 9
>>> b = 3
>>> a & b #按位與
1
>>> bin(a&b)
'0b1'
>>>
>>> c = 7
>>> d = 5
>>> c & d
5
>>> bin(c & d) #按位與
'0b101'
>>> e = 6
>>> c & e
6
>>> bin(c & e) #按位與
'0b110'
>>>
>>> a = 6
>>> b = 5
>>> bin(a | b) #按位或
'0b111'
>>>
>>> a = 8
>>> b = 3
>>> bin(a | b) #按位或
'0b1011'
>>> a = 8
>>> b = 3
>>> bin(a)
'0b1000'
>>> bin(b)
'0b11'
>>> bin(a | b) #按位或
'0b1011'
>>> a = 6
>>> b = 5
>>> bin(a)
'0b110'
>>> bin(b)
'0b101'
>>> bin(a | b) #按位或
'0b111'
>>>
>>> a = 8
>>> b = 4
>>> bin(a)
'0b1000'
>>> bin(b)
'0b100'
>>> bin(a | b) #按位或
'0b1100'
>>> bin(a ^ b) #按位異或
'0b1100'
>>>
>>> a = 9
>>> ~a
-10
>>> bin(a)
'0b1001'
>>> bin(~a) #按位取反
'-0b1010'
>>>
- 運算符優先級
a = 20
b = 10
c = 15
d = 5
e = 0
e = (a + b) * c / d
print("e = (a + b) * c / d 運算結果為:", e)
e = ((a + b) * c) / d
print("e = ((a + b) * c) / d 運算結果為:", e)
e = (a + b) * (c / d)
print("e = (a + b) * (c / d) 運算結果為:", e)
e = a + (b * c) / d
print("e = a + (b * c) / d 運算結果為:", e)
- 練習題
一、填空題
1、在Python中,int表示的資料類型是整型。
2、布爾類型的值包括True和False。
3、Python的浮點數占8個位元組。
4、如果要在計算機中表示浮點數1.2×10^5
,則表示方法為1.2e5。
5、00001000>>2的結果是00000010。
6、若a=20,那麼bin(a)的值為0b10100。
7、如果想測試變量的類型,可以使用 type() 來實作。
8、若a=1,b=2,那麼(a or b)的值為1。
9、若a=10,b=20,那麼(a and b)結果為20。
10、4.34E5表示的是4.34×10^5。
二、判斷題
Python使用符号#表示單行注釋。(√)
辨別符可以以數字開頭。(×)
type()方法可以檢視變量的資料類型。(√)
Python中的代碼塊使用縮進來表示。(√)
Python中的多行語句可以使用反斜杠來實作。(×)
Python中辨別符不區分大小寫。(×)
Python中的辨別符不能使用關鍵字。(√)
使用help()指令可以進入幫助系統。(√)
Python中的成員運算符用于判斷制定序列中是否包含某個值。(√)
比較運算符用于比較兩個數,其傳回的結果智能是True或False。(√)
三、選擇題
1、下列選項中,(D)的布爾值不是Flase。
A.None
B.0
C.()
D.1
2、假設a=9,b=2,那麼下列運算中,錯誤的是(D)。
A.a+b的值是11
B.a//b的值是4
C.a%b的值是1
D.a**b的值是18
3、下列辨別符中,合法的是(AD)。
A.helloWorld
B.2ndObj
C.hello#world
D._helloworld
4、下列符号中,表示Python中單行注釋的是(A)。
A.#
B.//
C.<!-- -->
D."“"
5、下列選項中,符合Python命名規範的辨別符是(C)。
A.user-Passwd
B.if
C._name
D.setup.exe
下列選項中,Python不支援的資料類型有(B)。
A.int
B.char
C.float
D.dicitionary
下清單達式中,傳回 True 的是(B)。
A.a=2 b=2 a=b
B.3>2>1
C.True and False
D.2!=2
下列語句中,哪個在 Python 中是非法的?(B)。
A.x = y = z = 1
B.x = (y = z + 1)
C.x, y = y, x
D.x += y
下列關于 Python 中的複數,說法錯誤的是(C)。
A.表示複數的文法是 real + image j
B.實部和虛部都是浮點數
C.虛部必須字尾 j,且必須是小寫
D.一個複數必須有表示虛部的實數和 j
下列選項中,幂運算的符号為(D)。
A.*
B.++
C.%
D.**
四、簡答題
簡述Python中辨別符的命名規則。
•辨別符由字母、下劃線和數字組成,且數字不能開頭。
•python中的辨別符是區分大小寫的。
•python中的辨別符不能使用關鍵字。
簡述Python中的數字類型。
int(整型)、long(長整型)、float(浮點數)、complex(複數)
五、程式題
1、輸入直角三角形的兩個直角邊的長度a、b,求斜邊c的長度。
2、編寫一個程式,用于實作兩個數的交換。