Python 程式設計實用技巧
文章目錄
一、小數保留指定位小數
1.%f 方法
f = 1.23456
f1 = '%.4f' % f
f2 = '%.2f' % f
print(f1,type(f1))
print(f2,type(f2))
列印
1.2346 <class 'str'>
1.23 <class 'str'>
易知,這種方法會進行四捨五入,但是將浮點型轉化成了字串值,已不再是原始的數值。
2.format函式
f = 1.23456
f1 = format(f,'.4f')
f2 = format(f,'.2f')
print(f1,type(f1))
print(f2,type(f2))
列印
1.2346 <class 'str'>
1.23 <class 'str'>
同理,這種方法也會進行四捨五入,但是將浮點型轉化成了字串值,已不再是原始的數值。
3.round()函式
a = 1.23456
b = 2.355
c = 3.5
d = 2.5
a1 = round(a, 3)
b1 = round(b, 2)
c1 = round(c)
d1 = round(d)
print(a1,type(a1))
print(b1,type(b1))
print(c1,type(c1))
print(d1,type(d1))
列印
1.235 <class 'float'>
2.35 <class 'float'>
4 <class 'int'>
2 <class 'int'>
可以看出,round()函式最後得到的是數值(浮點型或整型),但是在“舍”和“入”的規律上不一定:
(1)round(x,n)函式中,是否進位或四捨五入,取決於n位以及n+1位小數的值
(2)只有當n+1位數字是5的時候,容易混淆,如果n為偶數,則n+1位數是5,則進位,例如round(1.23456,3)最終變為1.235
(3)如果n為奇數,則n+1位是數5,那不進位,例如round(2.355,2),最終為2.35
(4)如果n為0,即沒有填寫n的時候,最終結果與上面相反,即整數部分為偶數的時候,小數位5不進位,例如(round(2.5)變為2)。
(5)整數部分為奇數的時候,小數位5進位。(round(3.5)變為4)
4.直接截斷
a = int(1.23456 * 1000) / 1000
print(a)
列印1.234
這種方法簡單粗暴,直接去掉後邊的,不管是否大於5。
二、判斷變數的資料型別的兩種方法
1.type():
a = 1.23
print(type(a))
列印<class 'float'>
。
2.isinstance()
原型為isinstance(x, A_tuple)
,
a = 1.23
tp = isinstance(a,float)
print(tp)
列印True
。
三、python中的類方法(@classmethod)
python做物件導向程式設計時候,經常需要使用classmethod的描述。類方法特別容易弄混淆,因為聽起來就好像“類中的方法”一樣。
類方法也算一種實用的技巧,簡單描述之:“類方法讓類别範本具有記憶力”。
類别範本就是我們所定義的類。在普通情況下,不使用類方法對類進行例項化,類本身是不具有記憶性的。只是當一個靜態模板被套用多次而已。如果我們想讓類在每一次例項化之後,都能記載一些記憶,會對很多操作很有用。
class Man:
id = 0 # 類變數
def __init__(self, name):
self.name = name
self.id = self.id_number()
@classmethod
def id_number(cls):
cls.id += 1
return cls.id
a = Man('A')
print(a.id)
b = Man('B')
print(b.id)
列印
1
2
對Man這個類進行例項化2次,每個例項的id都不一樣。這就依靠類方法來實現了:首先,用@classmethod描述類方法,然後用"cls"代表本類。類方法對類屬性進行的處理是有記憶性的。
需要注意的是,類方法處理的變數一定要是類變數。因為在類方法裡你用不了self來定址例項變數,所以需要把類變數放到最前面描述,如上面的"id=0"所示。類變數是可以被self訪問的,所以,在類變數定義好了以後,不需要在_init_函式裡對類變數再一次描述。所以,上面程式碼裡self.id不一定需要。
四、str.format與製表符\t關於中文對齊
str.format對字串進行格式化,{:<x}的語法表示左對齊(>為右對齊,^為居中),少於x位自動補齊(預設為空格補齊),但是對於中文字元並不能很好地支援,所以會導致有多行中文字串時出現不能對齊的現象,需要考慮到字串所佔長度並將中文字串進行編碼後再計算。
#name是包含中文的字串,22是整個字串一行的總長度,一般要顧及測試才能得到,\t後的x是一標記字元,可換為別的所需的字串
print('[{string:<{len}}\tx'.format(string=string+']',len=22-len(string.encode('GBK'))+len(string)))
具體可參考https://blog.csdn.net/excaliburrr/article/details/76794451
相關文章
- 分享6個Python程式設計非常實用的技巧!Python程式設計
- 18個Python高效程式設計技巧!Python程式設計
- 好程式設計師Python培訓分享Python程式設計師面試技巧程式設計師Python面試
- 翻譯:《實用的Python程式設計》InstructorNotesPython程式設計Struct
- Python程式設計方面的一些技巧Python程式設計
- Python的22個程式設計技巧,請收下!Python程式設計
- Python程式設計進階,常用8大技巧!Python程式設計
- 扯個淡:用Python實現中文程式設計Python程式設計
- 6款實用的Python程式設計環境!Python程式設計
- 程式設計師練習演算法的幾個實用技巧程式設計師演算法
- 【程式設計小技巧】程式設計
- Java程式設計技巧Java程式設計
- 用費曼技巧學程式設計,香不香?程式設計
- 程式設計大神進階之路:Python技巧小貼士程式設計Python
- 翻譯:《實用的Python程式設計》08_02_LoggingPython程式設計
- 翻譯:《實用的Python程式設計》08_03_DebuggingPython程式設計
- 翻譯:《實用的Python程式設計》01_06_FilesPython程式設計
- 翻譯:《實用的Python程式設計》01_03_NumbersPython程式設計
- 翻譯:《實用的Python程式設計》01_04_StringsPython程式設計
- 翻譯:《實用的Python程式設計》08_01_TestingPython程式設計
- 翻譯:《實用的Python程式設計》09_01_PackagesPython程式設計Package
- 翻譯:《實用的Python程式設計》03_01_ScriptPython程式設計
- 翻譯:《實用的Python程式設計》04_01_ClassPython程式設計
- 翻譯:《實用的Python程式設計》04_02_InheritancePython程式設計
- 翻譯:《實用的Python程式設計》04_00_OverviewPython程式設計View
- 翻譯:《實用的Python程式設計》03_04_ModulesPython程式設計
- 翻譯:《實用的Python程式設計》02_04_SequencesPython程式設計
- 翻譯:《實用的Python程式設計》02_01_DatatypesPython程式設計
- 翻譯:《實用的Python程式設計》02_02_ContainersPython程式設計AI
- 翻譯:《實用的Python程式設計》01_07_FunctionsPython程式設計Function
- 程式設計技巧│提高 Javascript 程式碼效率的技巧程式設計JavaScript
- 程式常用的設計技巧
- 用Python開發實用程式 – 計算器Python
- 翻譯:《實用的Python程式設計》09_02_Third_partyPython程式設計
- 翻譯:《實用的Python程式設計》06_02_Customizing_iterationPython程式設計
- 翻譯:《實用的Python程式設計》06_03_Producers_consumersPython程式設計
- 翻譯:《實用的Python程式設計》02_06_List_comprehensionPython程式設計
- 翻譯:《實用的Python程式設計》05_01_Dicts_revisitedPython程式設計