[Python]第一章 快速上手:基礎知識
文章目錄
1.1互動式直譯器
>>> print("Hello, world!") Hello, world! >>>
1.2演算法是什麼
計算機程式設計就是告訴計算機如何做
1.3數和表示式
加減乘除±*/
>>> 53672 + 235253
288925
取整//--------向下(小)圓整
>>> 5.0 // 2.4
2.0
取模(取餘)%
>>> 10 % 3
1
乘方(求冪)
>>> (-3) ** 2
9
十六進位制、八進位制和二進位制
>>> 0xAF
175
1.4變數
賦值
>>> x = 3
使用
>>> x * 2 6
Notice:使用Python變數前必須給它賦值,因為Python變數沒有預設值。在Python中,名稱(識別符號)只能由字母、數字和下劃線(_)構成,且不能以數字打頭。
因此Plan9是合法的變數名,而9Plan不是。
1.5語句
賦值語句
Print語句(呼叫print函式的語句)
表示式:是一些東西
語句:做一些事情,根本特徵是執行修改操作
1.6獲取使用者輸入input()
Input函式
>>> input("The meaning of life: ")
The meaning of life: 42
'42'
輸入內容以文字或字串方式返回
>>> x = input("x: ")
x: 34
>>> y = input("y: ")
y: 42
>>> print(int(x) * int(y))
1428
>>> print(x+y)
3442
If語句
>>> if 1 == 2: print('One equals two')
...
>>> if 1 == 1:
print('One equals one')
...
One equals one
>>>
NOTICE:相等運算子(==)
1.7函式
呼叫函式:你向它提供實參,而它返回一個值。
鑑於函式呼叫返回一個值,因此它們也是表示式
pow()冪函式
>>> 2 ** 3
8
>>> pow(2, 3)
8
pow等標準函式稱為內建函式,可結合使用函式呼叫和運算子來編寫更復雜的表達
abs()計算絕對值
>>> abs(-10)
10
Round()將浮點數圓整為與之最接近的整數。
>>> 2 // 3
0
>>> round(2 / 3)
1.0
//整除符號是向下(小)圓整,
round()是向近圓整,有一個floor()可以向下(小)圓整,但不能直接使用,ceil()向上圓整
(也可floor()+1就是向上圓整)
1.8 模組
可將模組視為擴充套件,通過將其匯入可以擴充套件Python功能
工作原理:我們使用import module匯入模組,再以module.function的方式使用模組
中的函式
floor()向下圓整
>>> import math
>>> math.floor(32.9)
32
int()取整(類似的str()、float()實際上是類)
>>> int(32.9)
32
ceil()向上圓整
>>> math.ceil(32.3)
33
確定不會從不同模組匯入多個同名函式,避免每次呼叫函式時都指定模組名,可以如下
變種from module import function
Sqrt()開平方
>>> from math import *
>>> sqrt(9)
3.0
Notice:如果使用這種命令,其他模組的同名函式則無法被呼叫。
事實上,可使用變數來引用函式(以及其他大部分Python元素)
>>> import math
>>> foo =math.sqrt
>>> foo(4)
2.0
1.8.1 cmath 和複數
如果有數平方是負數的話,那個數就是虛數。實部和虛部組成的數為複數。
Python標準庫提供了一個專門用於處理複數的模組cmath。
>>> import cmath
>>> cmath.sqrt(-1)
1j
1j是個虛數,虛數都以j(或J)結尾。複數算術運算都基於如下定義:-1的平方根為1j
>>> (1 + 3j) * (9 + 4j)
(-3 + 31j)
1.8.2 回到未來
神奇模組__future__
1.9儲存並執行程式
1.9.1從命令提示符執行 Python 指令碼
Windows系統下:
前提:
正確配置環境變數
存放hello.py檔案的目錄也要配置到環境變數,檔案內容:print(“Hello, world!”)
不要忘記在檔名前輸入“Python”
同理,改變hello.py內容
這裡Jack是手動輸入的
海歸繪圖法-比print更有趣的輸出
>>> from turtle import *
>>> forward(100)
>>> left(120)
>>> forward(100)
>>> left(120)
>>> forward(100)
要將鉛筆擡起,可使用penup();要將鉛筆重新放下,可使用pendown()。
1.9.2 讓指令碼像普通程式一樣
UNIX
#!/usr/bin/env python
$ chmod a+x hello.py
$ hello.py (嘗試用./hello.py)
Windows
雙擊.py檔案選擇開啟程式
修改檔案,避免操作完就退出
按完Enter鍵後退出
1.9.3 註釋#
>>> #這是註釋
... print('hello')
Hello
1.10 字串
1.10.1 單引號字串以及對引號轉義’’ “” \
單引號和雙引號在列印字串的時候相同
>>> 'hello,world'
'hello,world'
>>> "hello,woeld"
'hello,woeld'
但當列印的字串中有引用,需要同時用到這兩種引號
>>> 'she said:"hello,world"'
'she said:"hello,world"'
>>> "Let's go!"
"Let's go!"
或者用反斜槓\轉義
>>> 'Let\'s go!'
"Let's go!"
1.10.2 拼接字串+
同時一次輸入兩個字元產,則自動關聯
>>> "Let's say:"'"Hello,World"'
'Let\'s say:"Hello,World"'
拼接方法:+
>>> x='Hello,'
>>> y='World!'
>>> x+y
'Hello,World!'
1.10.3 字串表示 str 和 repr
將值轉換成了字串。print輸出比直接輸出,消除引號,並可以識別字符串中的 轉義符
'Hello,Woeld!'
>>> "Hello,World!"
'Hello,World!'
>>> print("Hello,World!")
Hello,World!
>>> "Hello,\nWorld!"
'Hello,\nWorld!'
>>> print("Hello,\nWorld!")
Hello,
World!
使用str(注意:這是個類)能以合理的方式將值轉換為使用者能夠看懂的字串。 例如,儘可能將特殊字元編碼轉換為相應的字元。
使用repr(object)(注意:這是個函式)時,通常會獲得值的合法Python表示式 表示。返回一個物件的 string 格式。
>>> s='hello,\nworld'
>>> str(s)
'hello,\nworld'
>>> print(str(s))
hello,
world
>>> repr(s)
"'hello,\\nworld'"
>>> print(repr(s))
'hello,\nworld'
>>>
1.10.4 長字串、原始字串和位元組
1. 長字串
要表示很長的字串(跨越多行的字串),可使用三引號(而不是普通引號)。
>>> print('''This is a very long string,It continues here.
... and it's not over yet."Hello,World"
... Still here.''')
This is a very long string,It continues here.
and it's not over yet."Hello,World"
Still here.
>>>
常規字串換行只要在換行出加\
>>> 1+2+\
... 4+5
12
2. 原始字串
針對反斜槓的轉義,可以在\前再增加一個\,對之前的\進行轉義,從而列印 出完整的字串
>>> path='C:\nwhere'
>>> path
'C:\nwhere'
>>> print(path)
C:
where
>>> print('C:\\nwhere')
C:\nwhere
或者在字串前加r,原始字串用字首r表示
>>> print(r'C:\where')
C:\where
原始字串不能以反斜槓結尾。
>>> print(r'This is illegal\')
File "<stdin>", line 1
print(r'This is illegal\')
^
SyntaxError: EOL while scanning string literal
如果非要以\結尾,可以嘗試以下方法
>>> print(r'C:\Progrm\foo\bar'+'\\')
C:\Progrm\foo\bar\
>>> print(r'C:\Progrm\foo\bar\\'[:-1])
C:\Progrm\foo\bar\
>>> print('C:\\Progrm\\foo\\bar\\')
C:\Progrm\foo\bar\
3.Unicode、bytes和bytearray
每個Unicode字元都用一個碼點(code point)表示,而碼點是Unicode標準給每個字元指定的數字。
http://unicode-table.com
>>> '\u00C6'
'Æ'
不可變的bytes,可直接建立bytes物件(而不是字串)方法是使用字首b:
>>> b'Hello'
b'Hello'
>>>
只要檔案使用的是UTF-8編碼,就無需操心編碼和解碼的問題。但如果原本 正常的文字變成了亂碼,就說明檔案使用的可能是其他編碼。
了bytearray,它是bytes的可變版
要替換其中的字元,必須將其指定為0~255的值。
因此,要插入字元,必須使用ord獲取其序數值(ordinal value)
>>> x=bytearray(b'Hello!')
>>> x[1]=ord(b'u')
>>> x
bytearray(b'Hullo!')
>>>
1.11 小結
1.11.1 本章介紹的新函式
abs(number) 返回指定數的絕對值
bytes(string, encoding[, errors]) 對指定的字串進行編碼,並以指定的方式處理錯誤
cmath.sqrt(number) 返回平方根;可用於負數
float(object) 將字串或數字轉換為浮點數
help([object]) 提供互動式幫助
input(prompt) 以字串的方式獲取使用者輸入
int(object) 將字串或數轉換為整數
math.ceil(number) 以浮點數的方式返回向上圓整的結果
math.floor(number) 以浮點數的方式返回向下圓整的結果
math.sqrt(number) 返回平方根;不能用於負數
pow(x, y[, z]) 返回x的y次方對z求模的結果
print(object, …) 將提供的實參打印出來,並用空格分隔
repr(object) 返回指定值的字串表示
round(number[, ndigits]) 四捨五入為指定的精度,正好為5時舍入到偶數
str(object) 將指定的值轉換為字串。用於轉換bytes時,可指定編碼和錯誤處理方式