Python學習筆記小結1

2021-10-06 22:55:03 字數 4216 閱讀 7513

import math

radius =

3area = radius**

2*math.pi

print

("周長為%d的圓的面積是%.3f"

%(radius, area)

)

輸出結果為:

周長為3的圓的面積是28.274
import math

radius =

3area = radius**

2*math.pi

print

("周長為的圓的面積是"

.format

(radius, area)

)

輸出結果為:

周長為3的圓的面積是28.274
**

import math

radius =

3area = radius**

2*math.pi

print

(f"周長為的圓的面積是"

)**

輸出結果為:

周長為3的圓的面積是28.274
從上面三種風格的格式化輸出,我得出以下結論:

如果使用%-formatting的形式,需要給出佔位符(%d, %f…),並在最後需要用%(parm1, parm2…)的形式給出需要輸出的變數

如果使用str.format()的形式,需要在str裡給出佔位符{},並且需要給每個佔位符標號,例如,…;除此之外,如果還對輸出結果有特殊的格式化要求,則需要在序號後面用冒號說明,例如:表示對該佔位符表示變數保留小數點後三位;同樣地,最後我們需要在括號()裡加入待輸出的變數

如果使用f-strings的形式,可以直接在佔位符裡面給出我們輸出的變數,並在冒號後面給出特殊格式化的要求

因此option1和option2是沒有很大差別,但是option3卻顯得簡單很多,而且**可讀性也大大加強;而且似乎格式化速度上option3也由比較大的優勢,想要深入學習的同學可以參考這篇文章:

因此現在官方都推薦option3的格式化形式

>>

> x,y,z =1,

3,4,

5traceback (most recent call last)

: file ""

, line 1,in

x,y,z =1,

3,4,

5valueerror: too many values to unpack (expected 3

)>>

>

這是由於接收個數比輸出個數少的原因,因此無法正確解包

>>

> x, y, z =1,

2traceback (most recent call last)

: file ""

, line 1,in

x, y, z =1,

2valueerror:

not enough values to unpack (expected 3

, got 2

)>>

>

這是由於接收個數比輸出個數多的原因,因此無法正確解包

因此在使用序列解包的時候一定要保證接收和輸出的個數相等

當然也有例外的情況,當使用列表切片時,且切片連續時是可以不用相等的!

>>

> x =

[i for i in

range(5

)]>>

> x[0

,1,2

,3,4

]>>

> x[:3

]=map(

str,

range(6

,10))

>>

> x

['6'

,'7'

,'8'

,'9',3

,4]>>

>

>>

> x =

['6'

,'7'

,'8'

,'9',3

,4]>>

>

print

(*x)67

8934

>>

>

>>

> x =

('6'

,'7'

,'8'

,'9',3

,4)>>

>

print

(*x)67

8934

>>

> x =

}>>

> x

>>

>

>>

>

[p for p in

range(2

,100)if

0not

in[p%d for d in

range(2

,int

(p**

0.5+1)

)]][

2,3,

5,7,

11,13,

17,19,

23,29,

31,37,

41,43,

47,53,

59,61,

67,71,

73,79,

83,89,

97]>>

>

上述利用列表推導式求出100以內所有素數。

>>

> x =

(p for p in

range(2

,100)if

0not

in[p%d for d in

range(2

,int

(p**

0.5+1)

)])>>

> x

at 0x0000016439f00f48

>

>>

>

print

(x) at 0x0000016439f00f48

>

>>

>

print

(*x)23

571113

1719

2329

3137

4143

4753

5961

6771

7379

8389

97>>

>

上述是利用生成器表示式求出100以內的所有素數。可以發現生成器表示式是不可以直接輸出的,因此你可以通過將其轉化為列表或者元組,或者通過生成器物件__next__方法,或者通過內建函式next()這些方式訪問。

>>

> x =

(p for p in

range(2

,100)if

0not

in[p%d for d in

range(2

,int

(p**

0.5+1)

)])>>

> x.__next__()2

>>

>

next

(x)3

>>

>

值得注意的是,生成器訪問過的物件便不存在了,因而無法再次訪問。

>>

> x =

(p for p in

range(2

,100)if

0not

in[p%d for d in

range(2

,int

(p**

0.5+1)

)])>>

> x.__next__()2

>>

>

next

(x)3

>>

>

3in x

false

>>

>

5in x

false

>>

>

大家一定不難理解3為什麼不在x裡,但是為什麼5也不在x裡呢?原因是因為在執行3 in x的時候,已經遍歷整個生成器物件,此時生成器物件已經沒有任何乙個物件了!

Python學習小結(1)

一 python學習方法 1.模仿書中的例子,一定要親手寫 2.初學時不要大量閱讀python書籍,先學好一本書的各種知識和技巧,而後才能隨心所欲獲取任何知識 4.不懂得可以去社群提問 極客起源it問答社群geekori.com 5.做配套練習題 6.經常總結,可以把心得寫在部落格上,csdn或者g...

Python學習筆記(1)

在工作的業餘時間學習了一下python,個人覺得如果有下liunx下工作的習慣話,寫一些小的python指令碼很容易提高工作效率,以下主要是針對python與c 的區別而寫的一些學習筆記,共同溝通一起進步。1 python中不用 表示語句塊,而是用 來表示乙個塊的開始,而用縮進來表示各個語句塊之間的...

Python 學習筆記 1

2.讀了 python簡明教程 前面5章內容,很久之前看過一遍,現在是重溫,加做練習。教程是python v2.x,許多地方都不一樣了 help,print,exit 需要以函式的標準形式來替換,help print exit 之前的 raw input 被去掉,統一作input 3.python ...