Python核心程式設計筆記第二章----快速入門
2.1.程式輸出,print語句及"Hello World!"
核心筆記:在交換式直譯器中顯示變數的值
在一般情況下,需要輸入print來檢視各變數的值,但在互動式直譯器中,可以直接輸入變數名檢視該值的原始值。
>>> String = 'love you'
>>>
>>> print String
love you
>>> String
'love you'
下劃線 _ 在直譯器中表示最後一個表示式的值。
>>> _
'love you'
print的語句與字串格式操作符%結合使用,實現字串替換功能。
>>> print 'I %s so much' % String
I love you so much
%s表示用一個字串來替換,%d表示用一個整型來替換,%f表示浮點型替換。
2.2.程式輸入和raw_input()內建函式
從使用者那得到資料的最簡單方法就是raw_input()內建函式。可以用int()內建函式將使用者輸入的字串轉換為整型。
>>> nums = raw_input('Input some numbers: ')
Input some numbers: 1103
>>> print 'The luck number is %d.' % int(nums)
The luck number is 1103.
>>> names = raw_input('Input some names: ')
Input some names: cytus
>>> print 'my name is %s.' % names
my name is cytus.
不使用int轉換字串格式則會報一個異常>>> print '%d' % nums
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
型別錯誤:%d只能替換整型型別,而不是字串。
核心筆記:從互動式直譯器中獲得幫助
如果需要得到一個不熟悉的函式能幹什麼事情,只需要對其呼叫內建函式help()
>>> help(list)
Help on class list in module __builtin__:
class list(object)
| list() -> new empty list
| list(iterable) -> new list initialized from iterable's items
核心風格:一直在函式外做使用者互動工作
函式應該保持清晰性,只接受引數,返回結果。輸出結果由函式外部來實現,函式只處理從使用者得到的資訊,返回或者不返回值,在函式中應少用print和raw_input語句,這樣就能夠在其他地方使用函式而不用擔心自定義輸出的問題。
2.3.註釋
#號表示註釋,從#開始到一行結束的內容都是註釋。註釋一般放在語句上方,做解釋作用。還有一種叫文件字串的特別註釋,在類和函式和模組的起始新增一個字串,起到線上文件的功能。
>>> # love you
... print 'i love you'
i love you
>>>
>>> def you():
... "i so like you"
... return True
...
>>> print you()
True
2.4.操作符
+ - * / // % **
加減乘除和取餘都是標準操作符。Python有兩種除法操作符,單斜槓為傳統除法,雙斜槓用作浮點除(對結果四捨五入)。傳統除法是指兩個操作符都為整型,將執行地板除(取比商小的最大整數),而浮點除是真正的除法。
乘方操作符,雙星號(**)
>>> print -3 + 5 * 2 - 2 ** 3
-1
操作符優先順序:+和-號優先順序最低,* / // %優先順序較高,單目操作符+和-優先順序更高,乘方優先順序最高。
比較操作符:< <= > >= == != <>
>>> 4 > 3
True
>>> 5 < 1
False
>>> 7 != 3
True
>>> 7 <> 3
True
!=和<>都是不等於,推薦使用前者
邏輯操作符:and or not
>>> 2 < 4 and 2 <3
True
>>>
>>> 2> 6 or 2 <5
True
>>> 3 < 4 <6
True
核心風格:合理使用括號增強程式碼的可讀性
多使用括號總沒錯,使程式更具有邏輯性,可讀性,可維護性,更難出現異常。
2.5.變數和賦值
變數名只能用大小寫字母或者_開頭,其他字元可以用數字字母_。Python的大小寫敏感,list和List是兩個不同變數。
Python是動態型語言,不需要預先宣告變數的型別。變數的型別和賦值在賦值的那一刻被初始化,變數賦值通過等號來執行。
>>> my_name = 'cytus'
>>> you_name = 'loli'
>>> do_s = 'love'
>>> how_b = 'so much'
>>> print '%s %s %s %s' % (my_name, do_s, you_name, how_b)
cytus love loli so much
Python也支援增量賦值
>>> s = 0
>>> s = s + 5
>>> print s
5
>>> s += 5
>>> print s
10
2.6.數字
有五種基本數字型別:有符號型別,長整型,布林值,浮點值,負數
int 123 434 657 -22 0x89 011
long 7321837128L 3874823478L 0xADA2768DDAL
bool True False
float 3.14 3772.22 -90. 6.443e23
complex 6.23+1.5j 0+1j
布林值是特殊的整型,假如布林值和一個數字相加,True會被當成整數1,False會被當成整數0.
2.7.字串
字串為引號之間的字符集合。支援使用成對的雙引號單引號三引號(三個連續的單引號或者雙引號)用來包含特殊字元。使用索引操作符[]和切片操作符[:]可以得到子字串。第一個字元的索引是0,最後一個字元的索引是-1.加號用於字串連線,星號用於字串重複。
>>> str1 = 'iill'
>>> str2 = 'lloo'
>>> sr1[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sr1' is not defined
>>> str1[0]
'i'
>>> str1[2:3]
'l'
>>> str1[-1]
'l'
>>> str1 + str2
'iilllloo'
>>> str1 * 3
'iilliilliill'
>>> '-' * 20
'--------------------'
>>> str1 = '''you are
... loser'''
>>> str1
'you are\nloser'
2.8.列表和元組
可以將列表和元組當成普通的陣列,它能儲存任意數量的Python物件。和陣列一樣通過0開始的陣列索引訪問元素,但是列表和元組可以儲存不同的物件。
列表和陣列的區別:列表使用[]包裹元素,元素的個數和元素的值可以被改變。元組用()包裹,不可以更改(內容假如為可變型別可以更改其內容)。元組看成是隻讀的列表,可以通過切片運算得到子集
>>> aList = [1, 3, 5, 7]
>>> aList
[1, 3, 5, 7]
>>> aList[:3]
[1, 3, 5]
>>> aList[:-1]
[1, 3, 5]
>>> aList[1] = 9
>>> aList
[1, 9, 5, 7]
>>> aTuple = ('aini', 77, 88, [123])
>>> aTuple
('aini', 77, 88, [123])
>>> aTuple[3]
[123]
>>> aTuple[:3]
('aini', 77, 88)
>>> aTuple[3] = 22
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
異常是指元組是不可變的
2.9.字典
由鍵-值對構成。一般由數字和字串做鍵,可變型別列表不能做字典的鍵。值可以是任意Python物件。字典元素用大括號{}包裹
>>> data_base = {'name': 'cytus', 'age': 18}
>>> data_base['name']
'cytus'
>>> data_base.keys()
['age', 'name']
>>> for key in data_base:
... print key, data_base[key]
...
age 18
name cytus
2.10.程式碼塊及縮排對齊
程式碼塊通過縮排對齊表達程式碼邏輯,可讀性更高,能清楚的表達一個語句屬於哪個程式碼塊。程式碼塊可以只有一個語句組成。
2.11.if語句
nums = int(raw_input("Input numbers: "))
if nums < 100:
print 'The number is too small.'
elif nums > 1000:
print 'The number is so big.'
elif nums <= 1000 and nums >= 100:
print 'The number is fit.'
else:
print 'Try some numbers.'
if用來判斷條件是否複合程式要求,符合則進行下一步,不符合則終止,elif = else-if用於多個條件判斷,else當以上if語句都不成立時才執行。
2.12.while迴圈
i = 0
while i < 10:
print i + 1
i += 1
在while迴圈下使用縮排表示語句在迴圈體中。while迴圈語句會一直無限迴圈,直到迴圈體內部break或者表示式的值變成0或False。
2.13.for迴圈和range()內建函式
Python中的for接受可迭代物件作為其引數,例如序列或迭代器,每次迭代其中一個元素。
str1 = [23, 232, 34, 3434]
for i in str1:
print i
輸出為一個列項序列,這是因為print語句預設給每一行新增一個換行符,只要在print語句的最後新增一個逗號,就可以改變它這種行為。str1 = [23, 232, 34, 3434]
for i in str1:
print i,
23 232 34 3434
帶逗號的print語句輸出元素之間會自動新增一個空格,來美觀輸出。
python range() 函式可建立一個整數列表,一般用在 for 迴圈中,用來輸出一個遞增計數的序列。
for i in range(7):
print i
0
1
2
3
4
5
6
range()函式經常和len()函式一起用於字串索引。
>>> foo = 'abc'
>>> for i in range(len(foo)):
... print foo[i], '(%d)' % i
...
a (0)
b (1)
c (2)
但是這樣操作只能迴圈一個,元素或者索引。而enumerate()函式很好彌補了這一點。
enumerate() 函式用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中。
>>> for i, ch in enumerate(foo):
... print ch, '(%d)' % i
...
a (0)
b (1)
c (2)
2.14.列表解析
列表解析表示你可以在一行中使用一個for迴圈將所有值放到一個列表當中:
a = [x ** 4 for x in range(3)]
for i in a:
print i
0
1
16
還可以挑選出符合的值放入列表
a = [x ** 4 for x in range(8) if not x % 2]
for i in a:
print i
0
16
256
1296
2.15.檔案和內建函式open(),file()
檔案訪問是相當重要的一環,一些工作完成後,將它儲存到持久儲存很重要
使用open()函式開啟一個檔案
file_1 = open(filename, access_mode = 'r')
file_name變數包含我們希望開啟的檔名,access_mode中'r'表示讀取,'w'表示寫入,'a'表示新增,'+'表示讀寫,'b'表示二進位制訪問。預設的檔案模式是'r'讀取。當一個檔案物件返回後,就可以使用它的一些方法,比如readlines(),close()。檔案物件的方法屬性也必須通過句點屬性標識法訪問
核心筆記:什麼是屬性?
屬性是與資料有關的專案。屬性可以是簡單的資料值,也可以是可執行物件。類,模組,檔案,複數等物件都擁有屬性,使用句點屬性標識法,也就是在物件名和屬性名之間加一個句號:例,list.append()
filename = raw_input('Enter file name: ')
fobj = open(filename, 'r')
for eachLine in fobj:
print eachLine,
fobj.close
以上的程式碼用來顯示檔案內容。
在print語句中使用逗號來印製自動生成的換行符號,檔案的每行文字都自帶了換行字元,如果我們不抑制print語句產生的換行符,文字在顯示時就會有額外的空行產生。
file()內建函式功能跟open()函式一致,是一個工廠函式(生成檔案物件)。
2.16.錯誤和異常
要給程式碼新增錯誤檢測及異常處理,只需要將它們封裝在try-except語句中。try之後的程式碼組,就是打算管理的程式碼,except之後的程式碼組,則是處理錯誤的程式碼。
try:
filename = raw_input('Enter file name: ')
fobj = open(filename, 'r')
for eachLine in fobj:
print eachLine
fobj.close()
except IOError, e:
print 'file open error: ', e
也可以通過raise語句丟擲一個異常。
2.17.函式
Python中函式使用小括號呼叫,函式在呼叫之前必須先定義。如果函式中沒有return語句,就會自動返回None物件。
2.17.1.如何定義函式
用def 關鍵字及緊隨其後的函式名,再加上該函式需要的幾個引數組成。(可以沒有引數)以一個:號結尾。
def add(m):
return m + m
這個函式實現了自身相加
2.17.2如何呼叫函式
print add(3)
print add(20)
print add('abc')
6
40
abcabc
函式名加上()內所傳遞的引數(沒有則不傳),print語句輸出函式返回值
2.17.3預設引數
函式的引數可以有一個預設引數,如果有提供預設值,在函式定義中,引數以賦值語句形式提供。
2.18.類
類是物件導向程式設計的核心,它扮演相關資料及邏輯容器的角色。
如何定義類
使用class關鍵字定義類。可以提供一個可選的父類或者說基類;如果沒有合適的基類,就使用object作為基類
class MyClass(object):
...
2.19.模組
模組是一種組織形式,它將彼此有關係的Python程式碼組織到一個個獨立檔案當中,模組可以包含可執行程式碼,函式和類,或者這些東西的組合。自己也可以建立模組,建立一個Python的原始檔,模組名字就是不帶.py字尾的檔名。用import匯入使用
2.19.1如何訪問一個模組函式或訪問一個模組變數
一旦匯入完成,模組的屬性可以通過句點屬性標識法訪問
module.function()
module.variable
匯入模組的方法,這裡以random模組舉例
import random
from random import randint
import random as randint
import random *
*表示取出random裡面所有的屬性
2.20.實用的函式
dir():顯示物件的屬性,如果沒有提供引數,則顯示全域性變數的名字。
help():顯示物件的文件字串,沒有提供引數則進入互動式幫助
int():將一個物件轉換成整型
len():返回物件的長度
open(): 以mode方式開啟一個檔案
range(): 返回一個整型列表
raw_input():等待使用者輸入一個字串,可以提供一個可選的引數str用作提示資訊
str(): 將一個物件轉換為字串
type(): 返回物件的型別
相關文章
- Python快速程式設計入門課後程式題答案Python程式設計
- Swift快速入門筆記Swift筆記
- 《Windows核心程式設計》筆記(一)Windows程式設計筆記
- C++核心程式設計筆記C++程式設計筆記
- python程式設計:從入門到實踐學習筆記-字典Python程式設計筆記
- python核心程式設計:入門Python程式設計的8個實踐性建議Python程式設計
- Python程式設計入門Python程式設計
- Hibernate快速入門筆記筆記
- ReactNative快速入門筆記React筆記
- Go語言程式設計快速入門Go程式設計
- python程式設計:從入門到實踐學習筆記-函式Python程式設計筆記函式
- Python入門筆記Python筆記
- Python 入門筆記Python筆記
- 《Python程式設計:從入門到實踐》 筆記(一)基礎知識Python程式設計筆記
- Docker快速入門總結筆記Docker筆記
- HTML基礎快速入門筆記HTML筆記
- 【整理】ReactNative快速入門筆記React筆記
- spring框架快速入門筆記Spring框架筆記
- 【Python核心程式設計筆記】一、Python中一切皆物件Python程式設計筆記物件
- [PYTHON] 核心程式設計筆記(14.Python執行環境)薦Python程式設計筆記
- Hadoop 入門筆記—核心元件 MapRuduceHadoop筆記元件
- Hadoop 入門筆記—核心元件 HDFSHadoop筆記元件
- Hadoop 入門筆記—核心元件 YARNHadoop筆記元件Yarn
- Python入門筆記(程式碼中成長)Python筆記
- python入門筆記1Python筆記
- 好程式設計師大資料教程分享Spark快速入門(72集影片+原始碼+筆記)程式設計師大資料Spark原始碼筆記
- Python 非同步程式設計入門Python非同步程式設計
- Python程式設計入門(1) (轉)Python程式設計
- Python程式設計入門(3) (轉)Python程式設計
- Python程式設計入門(4) (轉)Python程式設計
- Python程式設計入門(6) (轉)Python程式設計
- Python程式設計入門(7) (轉)Python程式設計
- Python程式設計入門(8) (轉)Python程式設計
- Thinkphp5.0快速入門筆記(1)PHP筆記
- 【MongoDB學習筆記】MongoDB 快速入門MongoDB筆記
- JavaScript學習筆記1—快速入門JavaScript筆記
- Go語言快速入門筆記01Go筆記
- Struts2框架快速入門筆記框架筆記