Python通用編程 - 第一章:用戶交互

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

一 編程入門

1. 編程的概念

咱們學習一門編程語言須要先了解清楚,什麼是編程,爲何要編程,最後才學習怎麼編程
計算機的發明就是爲了用機器取代人力,來幫助人類進行無休止的工做,還不給他工資,這就是編程的目的,由於計算機聽不懂人話,那就是隻好人來講計算機的話,來傳達給計算機這個工做應該如何進行,人在說「機話」的過程其實就是編程,是人類把咱們須要工做的內容經過某種指令傳達給計算機。python

2. 編程語言的劃分

你說「機話」就好了,難道說「機話」還有不一樣的
是的,人話都各有千秋,「機話」天然也是風情萬種。上面所說的能被計算機所識別的表達方式就是編程語言,語言是溝通的介質,編程語言是程序員與計算機的橋樑,每到七夕的時候,你要經過這道牆才能揭開計算機的神祕面紗。ios

總結一下:編程就是程序員按照某種編程語言我本身的工做流寫下來,結果就是一堆包含有字符,數字或者英文字母的文件。須要注意的是,在程序運行以前和普通的文件沒有區別,只有當程序運行了,計算機纔會按照該編程語言的語法格式讀取裏面的內容,這樣程序的內容纔會生效,纔會有計算機工做的效果。程序員

編程語言發展到現在經歷了三個過程,分別是:機器語言,彙編語言和高級語言。web

機器語言能夠理解爲人徹底說「機話」,咱們要先知道計算機的原理是二進制,計算機他也就能看懂二進制了(關於二進制,後面的內容到字符編碼會有詳細的講解),那就用二進制編程吧:好比我想讓計算機計算一個100加200,我要這樣操做:shell

1100100,101011,11001000
複製代碼

註釋:二進制1100100 表明十進制的100,二進制11001000代碼十進制200,二進制101011代碼「+」這個符號,100+200的計算用機器語言編寫大概就是上面的代碼,我太年輕,沒出生在那個美好的時代,這段代碼是經過本身的理解寫的,若是寫的有誤請指正一下。顯而易見,用這種方式編寫程序對於程序員來講是十分痛苦的,開發效率很是低下。相反,對於計算機來講,他一看到100100000這種東西就會心想,「這個對個人胃口,我就喜歡這樣的」,因而乎,上來就是一頓XXOO......他很爽,他很快,可是做爲程序員的你,確定爽不夠。因此總結一下,機器語言是人站在計算機的角度去編程,編程開發效率低,程序運行效率高。編程

彙編語言能夠理解爲人說「機人話」,就是人用簡寫的英文標識符去取代二進制,這樣的話人編寫的效率確定會提高了,可是計算機的有點不樂意了,不是直接的二進制,總感受不舒服,程序執行起來沒有機器語言那麼順暢,就好像隔着一層薄膜,要先把這個薄膜撕破才能識別出英文標識符所表明的二進制的,進而來執行代碼。因此,相比較機器語言來講,彙編語言開發效率提高,程序運行效率略微下降。flask

高級語言能夠理解爲人說「人話」(人:終於能好好說話了),之因此稱他爲高級,是由於他與以上兩種語言有本質的區別,高級語言是創建在操做系統的基礎之上,而以上兩種編程語言都是不須要操做系統,直接操做硬件的。操做系統是人創造的,他的出現目的就是提升人們的工做效率,讓人們更好的使用計算機,因爲操做系統的封裝,把操做的硬件的悲傷的工做留給了本身,而讓程序員的編程變得很是友好,使用和本身的語言很是類似的語法格式去編程,大大的提高了程序員的開發效率。相反,計算機對於這件事有意見。windows

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

接下來用一句話總結一下,機器語言到彙編語言再到高級語言,程序員開發效率提高的同時,程序執行效率也下降了,那麼這是進步仍是退步呢?服務器

速度不是關鍵,開發效率纔是王道。由於速度有瓶頸,機器語言到高級語言,雖然速度降了,可是依然快到人類的大腦意識沒法捕捉出來差距,0.000000001秒和0.00001秒對你來講應該沒什麼區別吧,雖然他們相差了1萬倍。開發效率能夠大幅提高,因此這樣的發展天然是進步。

二 高級語言的分類

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

編譯型語言和解釋型語言

編譯型語言須要編譯器,就像谷歌翻譯同樣,在程序執行以前要先編譯,而後轉化成爲了二進制以後,計算機才能夠運行。這樣就帶來了一個問題,當程序須要修改的時候,不能直接修改編譯以後的目標文件,而是要修改源文件,再次編譯生成目標文件,這個時候計算機在運行,查看修改的結果。因爲不一樣的計算機的操做系統的不一樣,編譯器生成的目標文件也不相同。和解釋型語言相比較,他的執行速度快,要依賴編譯器,重點是調試顯而易見很麻煩。像C語言,C++都是編譯型語言。

解釋型語言須要解釋器,就行同聲傳譯同樣,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,所以效率比較低,並且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器(想運行,必須先裝上解釋器,就像跟老外說話,必須有翻譯在場),但這種方式比較靈活,能夠動態地調整、修改應用程序。像Python,Java,Php都是解釋型語言。

編譯型語言與解釋型語言的執行過程 總結:編譯型語言和解釋型語言個有其優缺點,當咱們須要編寫的程序不須要常常改動或者升級的時候,咱們通常會選用編譯型語言,好比寫操做系統或者其餘的一些比較底層的應用;當咱們編寫的程序須要常常改動升級以此來知足用的需求的時候,咱們通常會選用解釋型語言,好比一些應用軟件,一些網站項目。值得一提的是,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… 下載中心

  • 測試安裝是否成功 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...這樣

建立代碼文件
執行代碼

四 變量與常量

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用於計算
複製代碼
相關文章
相關標籤/搜索