1. 程式人生 > >[Python]第一章 快速上手:基礎知識

[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時,可指定編碼和錯誤處理方式