第一次寫代碼
不要害怕這件事情,寫代碼,其實和寫作文一樣,首先需要有一個題目,然後對題目進行拆解。至於文采,也就是代碼漂不漂亮就是另一回事了。相信很多讀者看過很多Python基礎入門的書籍,或者購買了很多Python的視頻課,但還是不知道怎麼寫代碼。其中的原因只有一個,就是編碼的思路沒有轉變。
轉變Python編碼思路的唯一一個方法就是實戰。只有在實戰中你才能發現:代碼因為少或者多了一個字母,或者是代碼中用的是中文字符而不是英文字符導致沒有出現預期結果;代碼可以運行,沒有語法錯誤,但結果卻不是自己想要……但是當你通過模仿其他人的代碼運行得到結果後,是不是也很有成就感。然後慢慢自己能學會設計代碼,還有可能去教別人寫代碼。將模仿代碼變成設計代碼,最後能夠自己寫代碼。
總之,我們的目標就是,給定任何一個開發項目,你腦中立即有編碼思路,剩下的就是動手寫一下代碼而已。
數據——程序的原材料
在開始編碼之前,我們需要明白兩件事情:一是編碼規則;二是什麼是數據。
本文的編碼指的是編寫Python高級編程語言。既然是語言,肯定有語法,並且也需要素材,你可以把它想成漢語或者英語,語言的語法就相當於編碼的規則,這也是Python的編程基礎。等基礎語法完成時,我們就可以進入項目實戰階段。
接著介紹一下數據。
簡單地說,數據就是在計算機中的任何東西,比如音樂、電影、文章等。Python編程就是利用自己的語法規則對其進行加工處理,然後呈現出想要的數據結果。所以你可以把程序或者代碼看成一個服裝加工廠:布料就是程序中使用的數據,機器就是根據語法處理數據,衣服就是代碼輸出的結果。
有時數據太多,不好理解。對其進行分類是一個方法,非常便於理解與處理。Python數據類型如下表所示。
學會寫註釋,方便你我他
註釋就是在代碼裡添加的解釋說明。代碼是告訴閱讀的人做什麼事情,而註釋是告訴閱讀的人為什麼這麼做。這點在學習編程時特別重要,尤其在剛開始時一定要養成寫註釋的習慣,不要嫌麻煩,因為註釋便於閱讀代碼的人理解。
在實際工作中,項目一般都很大,需要協作完成。如果沒寫註釋就給下一個人閱讀,那麼閱讀就可能變成一件特別痛苦的事情。有時候代碼漂不漂亮也要看註釋是不是全面。不過目前的普遍狀況是,國內很多程序員,即使是工作了很多年的老程序員也不喜歡寫註釋。因為麻煩,他們認為這是多幹活。這個觀點是錯誤的,因為即使是自己寫的代碼,幾年以後可能自己都不記得寫的是什麼了。另外,一些大公司代碼註釋寫得都非常全面,比如Google、Oracle等。
在Python中,單行註釋用井號(#)表示,註釋就是#後面的內容;多行註釋用一對三引號(''' ''')或者一對三個雙引號(""" """)表示。單行註釋一般用於某一行的解說說明,而多行註釋一般用於整個文本或者某一個代碼區域的解釋說明,其中三個雙引號表示對整個文檔的說明。對於這些註釋,Python解釋器不會執行具體的內容。在下面的例子中,Python解釋器會忽略註釋,只輸出Hello World。
例子:多行註釋與單行註釋
"""
夯實基礎的內容
主要包括:
數據類型
變量等
"""
'''
此處是多行註釋
可以寫很多行
'''
# 打印輸出Hello World!
# 注意:請在#與註釋內容中間留一個空格
print('Hello World!')
運行結果如下所示。
Hello World!
注意:並不是每一行代碼都需要註釋,只有關鍵的地方才需要註釋,例如,新的語法點、代碼重點解決的問題、重要的細節、結論等。
常量與變量
常量,顧名思義就是值不能被改變的量,比如5、10等數字或者一個字符串的文本。
與常量相對應的就是變量,顧名思義就是值一直在改變的量。因為值在改變,我們需要給它取一個名字,也就是標識符。在Python編程中,我們把標識符稱為變量名,並且使用等號(=)把變量名和值關聯起來,具體的語法是:
變量名 = 值
例子:
# 定義變量,並使用print()函數打印出來
# my_name是變量名,劉德華為值
# 變量名不變,值可以變,比如值換成周杰倫
my_name = "劉德華"
print(my_name)
my_name = "周杰倫"
print(my_name)
運行結果如下所示。
劉德華
周杰倫
注意:變量存在內存中。Python語言對大小寫敏感,例如my_name與My_name對於Python語言來說是兩個不同的變量。
一、變量命名規則
變量命名是有一定規則的。如果違背了規則,則會出錯,具體規則如下所示。
- 變量名只能以字母或下畫線開頭,不能以數字開頭,但是可以以數字結尾。
例子:
'''
變量規則介紹:
第一個語句錯誤;
第二個語句正確
'''
3_log = 'This is a log file'
log_3 = 'This is a log file'
運行結果如下所示。
3_log = 'This is a log file'
^
SyntaxError: invalid token
- 變量名不能包含空格,否則認為是語法錯誤。比如my name是錯誤的,解決方法是使用下畫線(_)連接起來,變成my_name。
- 不能用Python中的關鍵字作為變量名。
二、變量命名方法
在符合變量命名規則的前提下,變量名最好簡短、易懂,即從變量名就能看出其代表的意思。比如my_name肯定比a好懂(千萬不要使用a、b、c做變量名)。
當變量需要用兩個以上單詞表示時,常用的命名方法有兩種。
- 第一種命名方法:
駝峰式大小寫,即第一個單詞的首字母小寫,第二個單詞的首字母大寫,例如firstName、lastName。也可以每一個單詞的首字母都採用大寫,例如FirstName、LastName、CamelCase。它也被稱為Pascal命名法。
- 第二種命名方法
兩個單詞不能直接用連字符(-)或者空格連接,但是可以使用下畫線連接,比如first_name、last_name。
數字類型
一、整數
整數又稱為整型,也就是int類型,在Python中,可以直接對整數進行算數運算。操作與操作符如下表所示。
例子:
'''
整數運算
'''
# 加法
add = 3 + 4
# 在Python中,format方法是格式化輸出,也就是在{}處替換變量的值。
print('3+4的值是 {}'.format(add))
# 減法
sub = 10 - 8
print('10 - 8的值是{}'.format(sub))
# 乘法
multi = 23 * 3
print(' 23 * 3 的值是{}'.format(multi))
# 除法
div = 10 / 2
print('10 /2 的值是{}'.format(div))
# 取模,返回除法的餘數
delivery = 7 % 3
print('7%3的值是{}'.format(delivery))
# 取整除,返回商的整數
round_number = 7 // 3
print(' 7 //3 的值是{}'.format(round_number))
# 冪運算——X的幾次方
power = 7 ** 3
print('7**3的值是{}'.format(power))
運行結果如下所示。
3+4的值是7
10 - 8的值是2
23 * 3的值是69
10 /2 的值是5.0
7%3的值是1
7 //3 的值是2
7**3的值是343
二、浮點數
帶小數點的數字都是浮點數。它也可以進行類似整數的運算,比如加、減、乘、除等。
例子:
'''
浮點數運算
'''
print('以下為浮點數運算的例子')
# 加法
add = 0.2 + 0.1
#Python中,format方法是格式化輸出的,也就是在{}處替換變量的值。後面項目實戰中會經常用到
print('0.2+0.1的值是 {}'.format(add))
# 補充內容
# 格式化輸出format
# 在Python 3.6以上版本中,為了減少{},可以使用f' '的方法
com = 'Complex'
comp = 'complicated'
# Python 3.6以下版本的用法
print('\n Python 3.6以下的format用法:')
print('{} is better than {}'.format(com,comp))
# Python 3.6以上版本的用法
print('\n Python 3.6以上的format用法:')
print(f'{com} is better than {comp}')
# 減法
sub = 10.9 - 8.1
print('10.9 - 8.1的值是{}'.format(sub))
# 乘法
multi = 0.1 * 3
print(' 0.1 * 3 的值是{}'.format(multi))
# 除法
div = 10.0 / 2.0
print('10.0 /2.0 的值是{}'.format(div))
# 取模,返回除法的餘數
delivery = 7 % 4.3
print('7%4.3的值是{}'.format(delivery))
# 取整除,返回商的整數
round_number = 7 // 4.3
print(' 7 //4.3 的值是{}'.format(round_number))
# 冪運算——X的幾次方
power = 7 ** 2.0
print('7**2.0的值是{}'.format(power))
運行結果如下所示。
0.2+0.1的值是 0.30000000000000004
Python 3.6以下版本的format用法:
Complex is better than complicated
10.9 - 8.1的值是2.8000000000000007
0.1 * 3 的值是0.30000000000000004
10.0 /2.0 的值是5.0
7%4.3的值是2.7
7 //4.3 的值是1.0
7**2.0的值是49.0
注意:結果包含的小數位數可能是不確定的,這個是可以忽略的。
布爾類型
Python支持布爾類型的數據,布爾類型只有True和False兩種值,但是布爾類型有以下幾種運算。
1.與運算:只有兩個布爾值都為True時,計算結果才為True。
例子:
True and True # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False
2.或運算:只要有一個布爾值為True,計算結果就是True。
例子:
True or True # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False
3.非運算:把True變為False,或者把False變為True。
例子:
not True # ==> False
not False # ==> True
布爾運算在計算機中用來做條件判斷,根據運算結果為True或者False,計算機可以自動執行不同的後續代碼。
在Python中,布爾類型還可以與其他數據類型做and、or和not運算。
例子:
#布爾類型
a = True
print(a and 'a=T' or 'a=F')
運行結果如下所示。
a=T
計算結果不是布爾類型,而是字符串a=T,這是為什麼呢?因為Python把0、空字符串和None看成False,其他數值和非空字符串都看成True,所以True and 'a=T'計算結果是'a=T'。繼續計算'a=T' or 'a=F',所以計算結果還是'a=T'。
要解釋上述結果,又涉及and和or運算的一條重要法則:短路運算。短路運算符的意思是,運算符左右的表達式只有在需要求值的時候才進行求值。比如x or y,Python從左到右進行求值,先對錶達式x進行真值測試,如果表達式x是真值,則根據or運算符的特性,不管y表達式的bool結果是什麼,運算符的結果都是表達式x,表達式y不會進行求值。
在計算a and b時,如果a是False,根據與運算法則,則計算結果必定為False,因此返回a;如果a是True,則整個計算結果必定取決於b,因此返回b。
在計算a or b時,如果a是True,根據或運算法則,則計算結果必定為True,因此返回a;如果a是False,則計算結果必定取決於b,因此返回b。
所以Python解釋器在做布爾運算時,只要能提前確定計算結果,就不會往後算了,直接返回結果。
字符串類型
一、什麼是字符串
字符串就是一系列字符。在Python中,單引號、雙引號或者三引號裡面的內容就是字符串。如果字符串中包括單引號或者雙引號,那麼可以使用“\”對字符串中的字符進行轉義。
例子:
# 單引號裡面的文本就是字符串
‘I am a boy’
# 雙引號其實和單引號一樣,一般推薦使用單引號
"歡迎你加入Python實戰圈"
# 三引號表示的字符串,一般是很長的文字
# 三引號一般用來寫文本註釋
'''
我們實戰圈的第一個項目就是“如何7天入門Python”
每一天都會安排學習內容,只需要40分鐘就可以搞定
學完以後記得寫作業並提交到“知識星球”
剛開始,學習節奏放慢一些
計劃三天更新一次內容
希望你能參與進來
'''
# 轉意字符串(\n)
command = 'Let\'s go!'
print('\n使用轉義字符輸出 : ',command)
運行結果如下所示。
使用轉義字符輸出 : Let's go!
二、字符串的基本用法
1.添加空白
在編程中,一定的空白輸出是為了方便閱讀。Python常用的添加空白的方法有製表符(\t)、空格或者換行符(\n)。製表符表示把文字空兩格輸出。
例子:
# 添加空白
# 製表符可以組合使用
print("歡迎來到Python實戰圈,\n")
print('\t你想要學習 Python 的哪方面內容,請留言。')
運行結果如下所示。
歡迎來到Python實戰圈,
你想要學習 Python 的哪方面內容,請留言。
2.拼接字符串
拼接字符串就是把兩個或兩個以上的字符串合併在一起。該操作在項目中經常用到,比如爬蟲時,網頁的正則表達式(以後會介紹)太長,可以用拼接的方法連接起來;也可以把兩個變量的字符串拼接為一個等。Python使用加號(+)來拼接字符串。
例子:
# 拼接字符串
log_1_str = 'The error is a bug.'
log_2_str = ' We should fix it.'
log_str = log_1_str + log_2_str
print('\n拼接後的字符串就是:',log_str)
運行結果如下所示。
拼接後的字符串就是: The error is a bug. We should fix it.
三、字符串的常見運算
1.修改字符串的大小寫
在Python中,你會經常聽到的兩個名詞是函數和方法。函數就是能獨自完成特定任務的獨立代碼塊,可以被調用;方法是面向對象編程語言中使用到的名詞。Python是面向對象的編程語言,面向對象就是一切都是對象,比如你、我、他,統稱為人(people),人就是一個對象。人可以奔跑(run),奔跑就是一個方法,合起來就是people.run()。
例子:
# 字符串大小寫轉換
welcome = 'Hello, welcome to Python practical circle'
# title(),每個單詞的首字母大寫
print('\n每個單詞的首字母大寫: ', welcome.title())
# capitalize(),段落的首字母大寫
print('\n段落的首字母大寫: ',welcome.capitalize())
# lower(),所有字母小寫
print('\n所有字母小寫: ',welcome.lower())
# upper(),所有字母大寫
print('\n所有字母大寫: ',welcome.upper())
# 大寫轉小寫,小寫轉大寫
print('\n大寫轉小寫,小寫轉大寫: ',welcome.swapcase())
# String.isalnum(),判斷字符串中是否全部為數字或者英文,符合就返回True,不符合就返回False,如果裡面包含符號或者空格之類的特殊字符,那麼也會返回False
print('\n判斷字符串是否全部為數字或者英文:',welcome.isalnum())
# String.isdigit(),判斷字符串中是否全部為整數
print('\n判斷字符串中是否全部為整數:', welcome.isdigit())
運行結果如下所示。
每個單詞的首字母大寫: Hello, Welcome To Python Practical Circle
段落的首字母大寫: Hello, welcome to python practical circle
所有字母小寫: hello, welcome to python practical circle
所有字母大寫: HELLO, WELCOME TO PYTHON PRACTICAL CIRCLE
大寫轉小寫,小寫轉大寫: hELLO, WELCOME TO pYTHON PRACTICAL CIRCLE
判斷字符串是否全部為數字或者英文: False
判斷字符串中是否全部為整數: False
2.刪除字符串兩端的空白
刪除字符串兩端的空白,在數據清理時經常被用到。常見的操作是去除兩端或者一端的空格。
例子:
# 刪除兩端的空白
love_Python = ' Hello, Python Practical Circle '
# 刪除字符串兩端的空白
print('刪除字符串兩端的空白',love_Python.strip())
# 刪除字符串右側的空白
print('刪除字符串右側的空白',love_Python.rstrip())
# 刪除字符串左側的空白
print('刪除字符串左側的空白',love_Python.lstrip())
運行結果如下所示。
刪除字符串兩端的空白 Hello, Python Practical Circle
刪除字符串右側的空白 Hello, Python Practical Circle
刪除字符串左側的空白 Hello, Python Practical Circle
3.其他注意事項
Python中字符串的操作非常多,以上只列出了部分常用操作。有一點需要注意的是,Python中的字符串不允許修改值,只允許覆蓋值。也就是說,字符串只能重新賦值。
四、字符串的切片
切片(slice)操作是Python中經常用到的操作。字符串的切片就是從一個字符串中獲取子字符串(字符串的一部分)。我們使用一對方括號、起始偏移量(start)、終止偏移量(end),以及可選的步長(step)來定義一個切片。
語法:[start:end:step]
• [:] 提取從開頭(默認位置0)到結尾(默認位置-1)的整個字符串
• [start:] 從start提取到結尾
• [:end] 從開頭提取到end-1
• [start:end] 從start 提取到end-1
• [start:end:step] 從start提取到end-1,每step個字符提取一個
• 左側第一個字符的位置/偏移量為0,右側最後一個字符的位置/偏移量為-1
例子:
# 字符串切片
word = 'Python'
print(word[1:2])
print(word[-2:])
print(word[::2])
print(word[::-1])
運行結果如下所示。
y
on
Pto
nohtyP
五、 各種類型之間的轉換
在Python中,各個數據類型是可以互相轉化的,並且可以使用type()函數查看某一個變量的類型。
語法:type(變量名) 用來查看變量的數據類型
type()函數在實際項目中經常用到,因為只有知道了變量是什麼類型才可以進行相應的運算,比如字典類型和列表類型有不同的運算。類型轉換在項目實戰中也經常用到,例如一個超市的月銷售額是一個字符類型,轉換為數字類型才可以進行統計,如計算平均數等,具體的轉換語法如下所示。
語法:
float(a) 將變量a轉換為浮點數
int(b) 將變量b轉換為整數
str(c)將變量c轉換為字符串
其中a、b、c為任意變量類型
例子:
'''
各種數據類型之間的轉換
'''
print('\n各個數值類型的轉換')
number = 100
# number的數據類型是整型,用int表示
print('number的數據類型是:')
print(type(number))
# 將整數轉換為浮點數
float_number = float(number)
print('\nfloat_number的數據類型是:')
print(type(float_number))
# 將整型轉換為字符串
print('\nnumber轉換為字符串類型')
str_number = str(number)
print('str_number的數據類型是:')
print(type(str_number))
# 將字符串轉換為整型int()或者浮點數float()
print('\nstr_number轉換為數字類型')
int_str_number = int(str_number)
float_str_number = float(str_number)
print('int_str_number的數據類型是:')
print(type(int_str_number))
print('float_str_number的數據類型是:')
print(type(float_str_number))
運行結果如下所示。
各個數值類型的轉換
number的數據類型是:
<class 'int'>
float_number的數據類型是:
<class 'float'>
number轉換為字符串類型
str_number的數據類型是:
<class 'str'>
str_number轉換為數字類型
int_str_number的數據類型是:
<class 'int'>
float_str_number的數據類型是:
<class 'float'>
本文選自電子工業出版社博文視點新書《零基礎輕鬆學Python》,這是一本有趣、有用、好學的Python 編程書!以通俗易懂的語言、好玩有趣的案例讓讀者輕輕鬆鬆、循序漸進地從零開始掌握Python 3 編程。希望本書能給大家帶來的,不單單是編碼的技能,更是編程思維的轉變。
瞭解本書詳情可點擊拓展鏈接。