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 ...