Python通用程式設計 - 第一章:使用者互動

yitema01發表於2019-04-04

本文是Python通用程式設計系列教程,已全部更新完成,實現的目標是從零基礎開始到精通Python程式語言。本教程不是對Python的內容進行泛泛而談,而是精細化,深入化的講解,共5個階段,25章內容。所以,需要有耐心的學習,才能真正有所收穫。雖不涉及任何框架的使用,但是會對作業系統和網路通訊進行全域性的講解,甚至會對一些開源模組和伺服器進行重寫。學完之後,你所收穫的不僅僅是精通一門Python程式語言,而且具備快速學習其他程式語言的能力,無障礙閱讀所有Python原始碼的能力和對計算機與網路的全面認識。對於零基礎的小白來說,是入門計算機領域並精通一門程式語言的絕佳教材。對於有一定Python基礎的童鞋,相信這套教程會讓你的水平更上一層樓。

一 程式設計入門

1. 程式設計的概念

我們學習一門程式語言需要先了解清楚,什麼是程式設計,為什麼要程式設計,最後才學習怎麼程式設計
計算機的發明就是為了用機器取代人力,來幫助人類進行無休止的工作,還不給他工資,這就是程式設計的目的,因為計算機聽不懂人話,那就是隻好人來說計算機的話,來傳達給計算機這個工作應該如何進行,人在說“機話”的過程其實就是程式設計,是人類把我們需要工作的內容通過某種指令傳達給計算機。

2. 程式語言的劃分

你說“機話”就行了,難道說“機話”還有不同的
是的,人話都各有千秋,“機話”自然也是風情萬種。上面所說的能被計算機所識別的表達方式就是程式語言,語言是溝通的介質,程式語言是程式設計師與計算機的橋樑,每到七夕的時候,你要通過這道牆才能揭開計算機的神祕面紗。

總結一下:程式設計就是程式設計師按照某種程式語言我自己的工作流寫下來,結果就是一堆包含有字元,數字或者英文字母的檔案。需要注意的是,在程式執行之前和普通的檔案沒有區別,只有當程式執行了,計算機才會按照該程式語言的語法格式讀取裡面的內容,這樣程式的內容才會生效,才會有計算機工作的效果。

程式語言發展到如今經歷了三個過程,分別是:機器語言,組合語言和高階語言。

機器語言可以理解為人完全說“機話”,我們要先知道計算機的原理是二進位制,計算機他也就能看懂二進位制了(關於二進位制,後面的內容到字元編碼會有詳細的講解),那就用二進位制程式設計吧:比如我想讓計算機計算一個100加200,我要這樣操作:

1100100,101011,11001000
複製程式碼

註釋:二進位制1100100 代表十進位制的100,二進位制11001000程式碼十進位制200,二進位制101011程式碼“+”這個符號,100+200的計算用機器語言編寫大概就是上面的程式碼,我太年輕,沒出生在那個美好的時代,這段程式碼是通過自己的理解寫的,如果寫的有誤請指正一下。顯而易見,用這種方式編寫程式對於程式設計師來說是十分痛苦的,開發效率非常低下。相反,對於計算機來說,他一看到100100000這種東西就會心想,“這個對我的胃口,我就喜歡這樣的”,於是乎,上來就是一頓XXOO......他很爽,他很快,但是作為程式設計師的你,肯定爽不夠。所以總結一下,機器語言是人站在計算機的角度去程式設計,程式設計開發效率低,程式執行效率高。

組合語言可以理解為人說“機人話”,就是人用簡寫的英文識別符號去取代二進位制,這樣的話人編寫的效率肯定會提升了,但是計算機的有點不樂意了,不是直接的二進位制,總感覺不舒服,程式執行起來沒有機器語言那麼順暢,就好像隔著一層薄膜,要先把這個薄膜撕破才能識別出英文識別符號所代表的二進位制的,進而來執行程式碼。所以,相比較機器語言來說,組合語言開發效率提升,程式執行效率略微降低。

高階語言可以理解為人說“人話”(人:終於能好好說話了),之所以稱他為高階,是因為他與以上兩種語言有本質的區別,高階語言是建立在作業系統的基礎之上,而以上兩種程式語言都是不需要作業系統,直接操作硬體的。作業系統是人創造的,他的出現目的就是提高人們的工作效率,讓人們更好的使用計算機,由於作業系統的封裝,把操作的硬體的悲傷的工作留給了自己,而讓程式設計師的程式設計變得非常友好,使用和自己的語言非常相似的語法格式去程式設計,大大的提升了程式設計師的開發效率。相反,計算機對於這件事有意見。

# 計算機:你們這些愚蠢的人類,搞了個什麼破作業系統,這樣的我要先翻譯成二進位制才能執行,執行的很慢,我不爽了。
# 程式設計師:老子管你爽不爽,我活的幹得快了,我爽了就行了,讓你玩兩下就不錯了,有的計算機玩都沒機會玩,你還想爽,你怎麼不上天啊
# 計算機:喔,行。。。。。。你行。。。。。。
複製程式碼

接下來用一句話總結一下,機器語言到組合語言再到高階語言,程式設計師開發效率提升的同時,程式執行效率也降低了,那麼這是進步還是退步呢?

速度不是關鍵,開發效率才是王道。因為速度有瓶頸,機器語言到高階語言,雖然速度降了,但是依然快到人類的大腦意識無法捕捉出來差距,0.000000001秒和0.00001秒對你來說應該沒什麼區別吧,雖然他們相差了1萬倍。開發效率可以大幅提升,所以這樣的發展自然是進步。

二 高階語言的分類

高階語言更貼近人類的語言,他必須先被轉換成能計算機能讀懂的二進位制後,才能被執行,按照轉換的方式分為:

編譯型語言和解釋型語言

編譯型語言需要編譯器,就像谷歌翻譯一樣,在程式執行之前要先編譯,然後轉化成為了二進位制之後,計算機才可以執行。這樣就帶來了一個問題,當程式需要修改的時候,不能直接修改編譯之後的目標檔案,而是要修改原始檔,再次編譯生成目標檔案,這個時候計算機在執行,檢視修改的結果。由於不同的計算機的作業系統的不同,編譯器生成的目標檔案也不相同。和解釋型語言相比較,他的執行速度快,要依賴編譯器,重點是除錯顯而易見很麻煩。像C語言,C++都是編譯型語言。

解釋型語言需要直譯器,就行同聲傳譯一樣,應用程式原始碼一邊由相應語言的直譯器“翻譯”成目的碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行檔案,應用程式不能脫離其直譯器(想執行,必須先裝上直譯器,就像跟老外說話,必須有翻譯在場),但這種方式比較靈活,可以動態地調整、修改應用程式。像Python,Java,Php都是解釋型語言。

Python通用程式設計 - 第一章:使用者互動
編譯型語言與解釋型語言的執行過程 總結:編譯型語言和解釋型語言個有其優缺點,當我們需要編寫的程式不需要經常改動或者升級的時候,我們一般會選用編譯型語言,比如寫作業系統或者其他的一些比較底層的應用;當我們編寫的程式需要經常改動升級以此來滿足用的需求的時候,我們一般會選用解釋型語言,比如一些應用軟體,一些網站專案。值得一提的是,Python語言由於他的簡潔性與高度封裝,在解釋型語言裡面依然是屬於除錯最方便,使用最靈活的,所以當專案需要快速開發和迭代的時候,公司裡面很多新專案一般會選用Python語言,既可以寫移動應用的介面,也可以寫Web專案,還可以非常方便地進行比較複雜的深度學習,機器學習的的運算等等,所以這也是Python語言比較火熱的原因之一。

三 Python介紹

1. Python語言說明

_python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,Guido開始寫能夠解釋Python語言語法的直譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可擴充的語言。_最新的TIOBE排行榜,Python趕超PHP佔據第4, Python崇尚優美、清晰、簡單,是一個優秀並廣泛使用的語言。_Python可以應用於眾多領域,如:資料分析、元件整合、網路服務、影象處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型網際網路企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。

2. Python應用領域

  1. WEB開發——最火的Python web框架Django, 支援非同步高併發的Tornado框架,短小精悍的flask,bottle, Django官方的標語把Django定義為the framework for perfectionist with deadlines(大意是一個為完全主義者開發的高效率web框架)
  2. 網路程式設計——支援高併發的Twisted網路框架, py3引入的asyncio使非同步程式設計變的非常簡單
  3. 爬蟲——爬蟲領域,Python幾乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥
  4. 雲端計算——目前最火最知名的雲端計算框架就是OpenStack,Python現在的火,很大一部分就是因為雲端計算
  5. 人工智慧——誰會成為AI 和大資料時代的第一開發語言?這本已是一個不需要爭論的問題。如果說三年前,Matlab、Scala、R、Java 和 Python還各有機會,局面尚且不清楚,那麼三年之後,趨勢已經非常明確了,特別是前兩天 Facebook 開源了 PyTorch 之後,Python 作為 AI 時代頭牌語言的位置基本確立,未來的懸念僅僅是誰能坐穩第二把交椅。
  6. 自動化運維——問問中國的每個運維人員,運維人員必須會的語言是什麼?10個人相信會給你一個相同的答案,它的名字叫Python
  7. 金融分析——金融分析公司寫的很多分析程式、高頻交易軟體就是用的Python,到目前,Python是金融分析、量化交易領域裡用的最多的語言
  8. 科學運算—— 你知道麼,97年開始,NASA就在大量使用Python在進行各種複雜的科學運算,隨著NumPy, SciPy, Matplotlib, Enthought librarys等眾多程式庫的開發,使的Python越來越適合於做科學計算、繪製高質量的2D和3D影象。和科學計算領域最流行的商業軟體Matlab相比,Python是一門通用的程式設計語言,比Matlab所採用的指令碼語言的應用範圍更廣泛
  9. 遊戲開發——在網路遊戲開發中Python也有很多應用。相比Lua or C++,Python 比 Lua 有更高階的抽象能力,可以用更少的程式碼描述遊戲業務邏輯,與 Lua 相比,Python 更適合作為一種 Host 語言,即程式的入口點是在 Python 那一端會比較好,然後用 C/C++ 在非常必要的時候寫一些擴充套件。Python 非常適合編寫 1 萬行以上的專案,而且能夠很好地把網遊專案的規模控制
  10. 萬行程式碼以內。另外據我所知,知名的遊戲<文明> 就是用Python寫的

3. Python在公司的應用

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等專案都在大量使用Python開發
  • CIA: 美國中情局網站就是用Python開發的
  • NASA: 美國航天局(NASA)大量使用Python進行資料分析和運算
  • YouTube:世界上最大的視訊網站YouTube就是用Python開發的
  • Dropbox:美國最大的線上雲端儲存網站,全部用Python實現,每天網站處理10億個檔案的上傳和下載
  • Instagram:美國最大的圖片分享社交網站,每天超過3千萬張照片被分享,全部用python開
  • Facebook:大量的基礎庫均通過Python實現的
  • Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
  • 豆瓣: 公司幾乎所有的業務均是通過Python開發的
  • 知乎: 國內最大的問答社群,通過Python開發(國外Quora)
  • 春雨醫生:國內知名的線上醫療網站是用Python開發的
  • 除上面之外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務。

4. 使用Python2還是Python3

先來看一段官方文件 In summary : Python 2.x is legacy, Python 3.x is the present and future of the languagePython 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement ofextended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x isunder active development and has already seen over five years of stable releases, including version 3.3 in 2012,+3.4 in 2014, and 3.5 in 2015. This means that all recent standard library improvements, for example, are onlyavailable by default in Python 3.x.Guido van Rossum (the original creator of the Python language) decided to clean up Python 2.x properly, with less regard for backwards compatibility than is the case for new releases in the 2.x range. The most drastic improvement is the better Unicode support (with all text strings being Unicode by default) as well as saner bytes/Unicode separation.Besides, several aspects of the core language (such as print and exec being statements, integers using floor division) have been adjusted to be easier for newcomers to learn and to be more consistent with the rest of the language, and old cruft has been removed (for example, all classes are now new-style, "range()" returns a memory efficient iterable, not a list as in 2.x).

目前雖然業內很多企業還在大量使用Python2.6 or 2.7,因為舊專案幾十萬甚至上百萬行的程式碼想快速升級到3.0不是件容易的事,但是大家在開發新專案時幾乎都會使用3.x。另外Python3 確實想比2.x做了很多的改進,直觀點來講,就像從XP升級到Win7的感覺一樣,棒棒的。Python2 和Python3的具體細節區別我們在以後課程中會慢慢深入。

5. 安裝Python直譯器

Python目前已支援所有主流作業系統,在Linux,Unix,Mac系統上自帶Python環境,在Windows系統上需要安裝一下,超簡單
開啟官網 www.python.org/downloads/w… 下載中心

Python通用程式設計 - 第一章:使用者互動

  • 測試安裝是否成功 windows --> 執行 --> 輸入cmd ,然後回車,彈出cmd程式,輸入python,如果能進入互動環境 ,代表安裝成功。
  • 多版本共存演示 注意:在安裝目錄下找到python.exe,拷貝一份,命名為python2.exe或python3.exe,一定要保留原版,因為pip工具會呼叫它。

6. 寫程式的兩種方式

  • 進入直譯器的互動式模式:除錯方便,無法永久儲存程式碼
  • 指令碼檔案的方式(使用nodpad++演示):永久儲存程式碼

強調:python直譯器執行程式是解釋執行,即開啟檔案讀內容,因此檔案的字尾名沒有硬性限制,但通常定義為.py結尾

用Python寫一個Hello World程式

print('Hello World')
複製程式碼

比較一下其他語言Hello World的寫法

# C++
#include <iostream>
 int main(void)
 {
  std::cout<<"Hello world";
 }
# C
#include <stdio.h>
int main(void)
{
printf("\nhello world!");
return 0;
}
# JAVA
public class HelloWorld{
  // 程式的入口
  public static void main(String args[]){
    // 向控制檯輸出資訊
    System.out.println("Hello World!");
  }
}
# PHP
<?php  
             echo "hello world!";  
?>
# Ruby
日本人開發的,砸日本車的時候,順手就把你拖出去打死了,祭天
 puts "Hello world."
# GO
package main
import "fmt"
func main(){
    fmt.Printf("Hello World!\n God Bless You!");
}
# 精通各種語言的hello world,看一看還是python的好
複製程式碼

安裝Python專用 IDE Pycharm

為何要用IDE> _到現在為止,我們也是寫過程式碼的人啦,但你有沒有發現,每次寫程式碼要新建檔案、寫完儲存時還要選擇存放地點,執行時還要切換到命令列呼叫python直譯器,好麻煩呀,能否一氣呵成,讓我簡單的寫程式碼?此時開發工具IDE上場啦,一個好的IDE能幫你大大提升開發效率。很多語言都有比較流行的開發工具,比如JAVA 的Eclipse, C#,C++的VisualStudio, Python的是啥呢? Pycharm,最好的Python 開發IDE

安裝
下載地址:www.jetbrains.com/pycharm/dow… 選擇Professional 專業版 進入> Pycharm官網根據提示下載專業版即可,Comunnity社群版是免費的,但支援的功能不多,比如以後我們會學的Django就不支援,所以還是用專業版,但專業版是收費的,一年一千多,不便宜。萬能的淘寶,你懂的 註冊完成後啟動,會讓你先建立一個專案,其實就是一個資料夾,我們以後的程式碼都存在這裡面。

建立目錄 你以後寫的專案可能有成百上千個程式碼檔案 ,全放在一起可不好,所以一般把同樣功能的程式碼放在一個目錄,我們現在以天為單位,為每天的學習建立一個目錄day1,day2,day3...這樣

Python通用程式設計 - 第一章:使用者互動
建立程式碼檔案
Python通用程式設計 - 第一章:使用者互動
執行程式碼
Python通用程式設計 - 第一章:使用者互動

四 變數與常量

1. 變數的概念

計算機工作的過程直白講就是對資料的增刪改查操作,那麼資料一定是變化的,我們要儲存變化的資料就應該用“變數”。 什麼是變數

  • 變數即變化的量,核心是“變”與“量”二字,變即變化,量即衡量狀態。

為什麼要有變數

  • 程式執行的本質就是一系列狀態的變化,變是程式執行的直接體現,所以我們需要有一種機制能夠反映或者說是儲存下來程式執行時狀態以及狀態的變化。 #比如: 英雄的等級為1,打怪升級(變)為10 殭屍的存活狀態True,被植物打死了,於是變為False 人的名字為Albert,也可以修改為AlbertMa

Python如何定義變數

  • 變數名(相當於門牌號,指向值所在的空間),等號,變數值
name='Albert' 
sex='male' 
age=18 
level=10
複製程式碼

2. Python變數的定義規範

  • 變數名只能是 字母、數字或下劃線的任意組合
  • 變數名的第一個字元不能是數字
  • 以下關鍵字不能宣告為變數名

['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

3. Python變數定義方式:

駝峰體

AgeOfAlbert = 18  
NumberOfStudents = 80
複製程式碼

下劃線(推薦使用)

age_of_albert = 18  
number_of_students = 80
複製程式碼

定義變數名不好的方式

  1. 變數名為中文、拼音
  2. 變數名詞不達意
  3. 變數名用中文,Python居然支援用中文做變數名,這真是顛覆了我的世界觀,也許就是為了照顧我國一些程式猿而做的優化吧

值得一提的是:在公司裡專案很大的時候,我們往往會命名的變數名比較長,這是一方面是為了變數名不重複,另一方面是為了能看到變數名就知道資料的含義

有一句話給大家:變數即邏輯

定義變數會有:id,type,value

  • 等號比較的是value,
  • is比較的是id

強調:

  1. id相同,意味著type和value必定相同
  2. value相同type肯定相同,但id可能不同,如下
>>x='Info Albert:18'
>>y='Info Albert:18' 
>>x == y 
>>True
>>x is y 
>>False
複製程式碼

如果自己用電腦終端或者Pycharm測試可能會出現 x is y 結果是False的情況,不用擔心,這是Pycharm或者終端環境做的記憶體優化,當變數比較長的時候就沒問題了。

4. 常量

常量即指不變的量,如pai 3.141592653..., 或在程式執行過程中不會改變的量,舉例:日本首相的年齡是一個變數,加入他今天突然掛了,那麼這個年齡就不會在改變了,那就是常量。在Python中沒有一個專門的語法代表常量,程式設計師約定俗成用變數名全部大寫代表常量

JAPANESE_PRIME_MINISTER_AGE = 56
複製程式碼

在c語言中有專門的常量定義語法,const int count = 60;一旦定義為常量,更改即會報錯

五 基本資料型別

1. 說明

Python屬於強型別的動態指令碼語言強型別:不允許不同型別相加動態:定義變數不用資料型別宣告,且確定一個變數的型別是第一次給他賦值的時候

2. 字串(str)

剛才我們定義人名使用的是 name = ‘Albert’來定義的,形如 ' ' 或者 " " 或者 """ """ 單引號,雙引號或者三引號中間寫內容的這種定義方式就是 str型別,我們叫做字串型別

print('Hello world')  # 這就是一個字串型別
複製程式碼

定義的時候是把等號右側的值賦值給等號左側的變數
我們不僅要知道他的資料型別是str,在學習一個資料型別的時候還要知道他是一個可變型別還是不可變型別。

  • 不可變型別:當變數值改變的時候id也會一起變化,相當於重新開闢一塊記憶體空間,給變數重新賦值,原來的值是不可變的,str就是一個不可變型別
  • 可變型別:當變數值改變的時候,id可以保持不變,就相當於是在原來的基礎上修改,位置還是沒有變的

可變型別可以理解為一個大房子的地方不動,給這個房子裝修一下就是做了修改,而不可變型別就是這個房子不能重新裝修,你要改可以,你在別的地方再蓋一個房子,你再住進去。

3. 整型(int)

我們定義一個人的年齡的時候 使用age = 18 來定義的,等號後面直接➕整數數字,那麼這個變數的資料型別就是int型別,我們叫整型,整形是一個不可變型別

4. 浮點型(float)

當我們定一個人的身高的時候,使用height = 1.83 來定義,同理這是float型別,我們叫浮點型,浮點型是一個不可變型別

5. 列表(list)

當我們需要儲存一個班級裡面所有學生的名字的時候,就是用一個變數來儲存多個值,以上三種資料型別都只能儲存一個值,這種情況我們可以只用list這種資料型別來完成,我們叫列表。定義形式:中括號內,多個元素用逗號分割,每個元素可以是任意的資料型別,列表是一個可變型別

names = ['albert','james','kebo']  # 儲存一個班級的多個學生
information = ['albert',18,1.83]  # 儲存一個人資訊
# 儲存多人資訊
informations = [['albert',18,1.83],['james',34,2.03],['kebo',40,1.98]]
複製程式碼

6. 元組(tuple)

另外一種和list類似的資料型別是tuple,我們叫元組,他的用法和list非常相似,只是列表可以修改,而元組不能修改,只能檢視,他的定義方式是小括號內,多個元素用逗號分割,每個元素可以是任意的資料型別。以上程式碼中括號改成小括號就可以了,注意是英文的小括號(),元組是一個不可變型別

7. 字典(dict)

上面程式碼儲存多個人的資訊的時候,你們大概的能看出來我是儲存的每個人的姓名,年齡和身高,但是不明確,我們不能用猜的,要解決這個問題就是定義的時候就說明白,這個時候字典來了,定義形式:花括號內多個元素用逗號分割,每個元素按照key: value的形式,需要注意的是:字典的key只能用不可變型別,我們一般使用字串,字典是一個可變型別。

information = {'name':'albert','age':18,'height':1.83}  # 儲存一個人資訊 
informations = [
        {'name':'albert','age':18,'height':1.83},
        {'name':'james','age':34,'height':2.03},
        {'name':'kebo','age':40,'height':1.98}
]  # 儲存多人資訊
複製程式碼

8. 集合(set)

在NBA有400多位球員,如果我們不考慮先後順序要儲存這400多位球員,肯定是不能重複的,每位球員只能算一個,上面的列表和元組是可以重複的,我們只需要知道“Albert”肯定是不在這裡面的就可以了。定義形式:花括號內多個元素用逗號分割,每個元素可以是任意的資料型別,但是不能重複,集合是一個可變型別。

NBA_players = {'James', 'Kobe', 'Jordan', }
複製程式碼

9. 布林(Bool)

在NBA中有眾多的球員,但是有的人可能一輩子也大不了NBA了,如果我們想要判斷一個人是否是NBA球員就可以用布林型別,它只有兩個值,True和Flase。
基本的資料型別,我們就暫時先了解到這裡,後面的章節會對這些資料型別的使用進行更加詳細的講解。

10. 補充(非常重要)

關於變數的命名在這裡做一點補充,這雖然簡單,但是非常重要。 推薦大家使用『匈牙利命名法』,這也是在工作中最為規範的變數命名方式,有些時候看一個人寫的程式碼,只需要看他寫的變數名就能粗略判斷出他的水平了。 簡而言之,匈牙利命名法就是把變數的『型別』縮寫,放到變數名的最前面。關鍵在於,這裡說的變數『型別』,指的是那些和你的程式碼業務邏輯相關的型別。比如,在你的程式碼中有兩個變數:students 和 teachers,他們分別代表的是用來儲存學生的集合與用來儲存老師的列表,使用『匈牙利命名法』後,可以把這兩個名字改寫成這樣:

students -> set_students teachers -> list_teachers

很多情況下,使用『匈牙利命名法』是個不錯的主意,因為它可以改善你的程式碼可讀性,尤其在那些變數眾多、同一型別多次出現時,注意不要濫用就好。

六 註釋

隨著學習的深入,用不了多久,你就可以寫複雜的上千甚至上萬行的程式碼啦,有些程式碼你花了很久寫出來,過了些天再回去看,發現竟然看不懂了,這太正常了。 另外,你以後在工作中會發現,一個專案多是由幾個甚至幾十個開發人員一起做,你要呼叫別人寫的程式碼,別人也要用你的,如果程式碼不加註釋,你自己都看不懂,更別說別人了,這產會捱打的。所以為了避免這種尷尬的事情發生,一定要增加你程式碼的可讀性。

程式碼註釋分為三種:

  1. 單行註釋,註釋單獨佔一行,以 #開頭,打一個空格,後面寫註釋的內容
  2. 行內註釋,在程式碼尾部,打兩個空格,然後打一個 #,接著再打一個空格,後面寫註釋的內容。
  3. 多行註釋, 可以用三對雙引號"""註釋內容 """,或者三對單引號中間寫註釋內容,和明顯多行註釋就是可以註釋多行,當你的註釋比較長的使用,寫很長的一行不便於閱讀,這時,我們推薦使用多行註釋。

程式碼註釋的原則:

  • 不用全部加註釋,只需要在自己覺得重要或不好理解的部分加註釋即可
  • 註釋可以用中文或英文,但不要用拼音,也不要用中英文混雜

注意(非常重要): 註釋你們現在可能誰都會寫,但其實在工作中,除了一些高標準的公司之外,能夠規範寫註釋的人非常少,寫註釋和寫規範的註釋是代表一位程式設計師程式設計素養的最簡單的方式。

七 檔案頭

注意:既然是檔案頭,那麼自然是要放在檔案頂部,這也是開發規範的一些細節

#!/usr/bin/env python  # 指定直譯器
# -*- coding: utf-8 -*-  # 指定檔案字元編碼
複製程式碼

如果每次寫程式碼我們都自己去寫的話有點浪費時間,我們可以自己先在Pycharm上面配置好,以後每次新建一個檔案自動就會新增檔案頭。MacOS系統的使用者可以按照先點選Pycharm左上角按照:Pycharm--Preferences--Editor--File and Code Templates--Python Script 的順序找到一塊空白的區域,把一下程式碼貼上進去,Windows系統的使用者可以按照:File--Settings--Editor--File and Code Templates--Python Script,執行同樣的操作。注意:作者那一行程式碼可以改成你自己的名字。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : ${DATE} ${TIME}
# @Author  : Albert  
# @File    : ${NAME}.py
複製程式碼

八 實現使用者互動

文章寫到這裡才正式進入本章標題的內容,前面都是鋪墊

古時候,我們去銀行取錢,需要有一個銀行業務員等著我們把自己的賬號密碼輸入給他,然後他去進行驗證,成功後,我們再將取款金額輸入/告訴他驕傲的現代人,會為客戶提供一臺ATM機(就是一臺計算機),讓ATM機跟使用者互動,從而取代人力。然而機器是死的,我們必須為其編寫程式來執行,這就要求我們的程式語言中能夠有一種能與使用者互動,接收使用者輸入資料的機制。

使用者互動就是程式等待使用者輸入資料之後,在執行下一步的程式,我們使用 input 來完成這個操作。

name = input('請輸入姓名:')  # 我把輸入的內容賦值給name這個變數
print(‘你好’ + name)  # 當使用者輸入完成自己的姓名之後就會列印出來 你好XXX
複製程式碼

Python2 與Python3 的區別

  • 在python3中 input:使用者輸入任何值,都存成字串型別
  • 在python2中 input:使用者輸入什麼型別,就存成什麼型別
  • Python2 中的raw_input:等於python3的input

需要注意的是:當需要輸入一個數字的時候,考慮到我們會用這個數字做計算,而Python3的input會預設轉成str,所有我們需要把使用者輸入的資料轉化成int

age = input('請輸入年齡')
age = int(age)  # 把字串age轉化成int型別age用於計算
複製程式碼

相關文章