think python學習筆記(7)

2021-10-07 02:36:18 字數 2635 閱讀 5255

平方根

迴圈常用於計算數值的程式中,這類程式一般從乙個大概的值開始,然後迭代式的進行改進

例如,牛頓法是計算平方根的一種方法

當我們想求a的平方根時,從任意乙個估算值開始x,利用下面的公式可以計算出更為精確地估算值

y = (x + a/x)/2

得到的y的值會更加接近平方根的真實值,不斷的用y去代替x,利用這個式子多次運算,當估算值不在變動的時候,我們基本就得到了正確的答案,也就是當y == x時,就可以停止運算了

while

true

:print

(x) y =

(x + a/x)/2

if y==x:

break

x = y

但是對於某些情況,兩個浮點數的相等比較是比較危險的

浮點數只能大約表示,大多數有理數,如1/3,以及無理數,

很多數是不能精確表示的

所以講判斷x y是否相等,使用內建函式abs來計算二者之差的絕對值比較安全

if

abs(y-x)

< epision:

break

這裡變數epision就是乙個由自己確定的,決定精度的值

演算法牛頓法就是乙個演算法

它是解決一類問題的計算機制

例:為了計算n和9的乘積,可以把n - 1作為乘積的第一位數,再把10-n作為乘積的第二位數,從而得到它們的乘積。這是一種普遍解法,就是一種演算法

演算法的特點之一就是不需要過多的腦力計算

演算法是乙個機械的過程,每一步都是依據一組簡單的規則跟著上一步來執行的

除錯減少除錯時間的乙個方法就是「對分除錯」

試著將問題拆為兩半,在**中間部分,尋找乙個可以檢查的中間值

字串字串不像整數,浮點數和布林型。字串是乙個序列,這就意味著它是其他值的乙個有序的集合。

字串是乙個序列

字串是由字元組成的序列。可以用括號運算子一次訪問乙個字元

fruit =

'banana'

letter = fruit[

1]

括號中的表示式被稱作索引,索引指出在序列中想要哪個字元

索引是從字串起點開始的位移量,第乙個字母的位移量就是0

也可以用乙個包含變數名和運算子的表示式作為索引

i =

1fruit[i]

fruit[i+

1]

索引必須使用整數

lenlen是乙個內建函式,其返回字串中的字元數量

fruit =

'banana'

len(fruit)

可以通過len獲得最後乙個字元

length =

len(fruit)

last = fruit[length-

1]

或者也可以使用負索引,即從字串的結尾往後數,表示式fruit[-1]返回最後乙個字元,fruit[-2]返回倒數第二個字元,以此類推

使用for迴圈遍歷

編寫遍歷的方式之一是使用while迴圈

index =

0while index <

len(fruit)

: letter = fruit[index]

print

(letter)

index = index+

1

被訪問的最後乙個字元的索引是長度減一

另一種方法是使用for迴圈

for letter in fruit:

print

(letter)

每次迴圈時,字串中的下乙個字元被賦值給變數letter。迴圈繼續,直到沒有剩餘的字串了

使用拼接和for迴圈

prefixes =

'jklmnopq'

suffix =

'ack'

for letter in prefixes:

print

(letter+suffix)

字串切片

字串的乙個片段被稱為切片

s =

'monty python's[0

:5]

[n:m]操作符返回從第n個字元到第m個字元的字串片段,包括第乙個,但是不包括最後乙個。

如果生了第乙個索引(冒號前面的值),切片起始於字串頭部。如果你省略第二個索引,切片一直到字串結尾

如果第乙個索引大於或等於第二個,結果是空字串,用兩個引號表示 』 』

乙個空字串不包括字元而且長度為0,但除此之外,它和其他任何字串都一樣

字串是不可變的

greeting =

'hello world'

greeting[0]

='j'

會報錯,因為字串是不可變的,不能改變乙個已存在的字串的

只能建立乙個新的字串,在原有的字串的基礎上略有變化

new_greeting =

'j'+ greeting[1:

]

think python學習筆記(5)

鏈式條件 當有多個可能的時候,我們需要多個分支 表示這種情況的方法之一是鏈式條件 if x y print 0 elif xprint 1 else print 2 elif是else if的縮寫,elif語句數目沒有限制,如果只有乙個else1從句,那麼這個從句必須在最末,但這個語句並不是必須的 ...

think python學習筆記(6)

增量式開發 面對複雜的程式,可以採用增量式開發 增量式開發的目標是通過每次只增加和測試少量 來避免長時間的除錯 這種開發而關鍵在於 1.從乙個能執行的程式開始,每次只增加少量改動 2.用臨時變數儲存中間值,便於檢查 3.刪除腳手架 組合寫乙個函式,接受兩個點作為引數,分別是圓心和圓周上一點,然後計算...

think python學習筆記(12)

字典和列表 在字典中,列表可以作為值出現。例如,當倒轉字典的時候,可能有的鍵對應的值,就是由列表組成的 def invert dict d inverse dict for key in d val d key if val not in inverse inverse val key else i...