Python全棧之路系列之基礎篇

Python的誕生

Python是著名的"龜叔"Guido van Rossum(吉多·範羅蘇姆)在1989年聖誕節期間,爲了打發無聊的聖誕節而編寫的一個編程語言。python

guide

Python語法不少來自C,但又受到ABC語言的強烈影響,來自ABC語言的一些規定直到今天還富有爭議,好比強制縮進,但這些語法規定讓Python變得更易讀。shell

Guido van Rossum著名的一句話就是Life is short, you need Python,譯爲:人生苦短,我用Python,一直到如今,不管在任何介紹Python這門強大的語言時,都會有提到。編程

截至到目前2017年1月6日,Python在Tiobe的排名仍是很靠前的,並且近幾年來講Python上升的趨勢仍是特別穩定的,這兩年一直保持在第四位,甚至已經超越PHP和C#。小程序

Tiobe

查詢網站:http://www.tiobe.com/tiobe_in...windows

咱們還能夠再解釋下下經過import this查看Python語言的設計哲學:bash

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Python惟一的缺點就是他的性能,它達不到像C和C++這種編譯性語言運行的那麼快,可是咱們一般都不須要考慮這個問題,由於有PYPY,它的運行速度比默認的Cpython要快不少。less

在Win10下安裝Python3

下載Python解釋器編程語言

64位下載地址:https://www.python.org/ftp/py...
32位下載地址:https://www.python.org/ftp/py...ide

安裝Python解釋器函數

下載下來以後雙擊安裝,在安裝的時候稍微須要注意一下就是須要修改默認的安裝路徑和和自動註冊到系統環境變量勾選上。

python

python

而後就能夠點擊Install按鈕進行安裝了。

python

由於咱們已經勾選自動註冊環境變量,因此在這裏就不須要修改環境變量,直接運行便可;

DOS測試

右鍵開始菜單選擇命令提示符,打開CMD窗口,

python

python

在cmd窗口中輸入python -V指令查看安裝的Python版本:

python

若是你獲得的結果和我同樣,那麼你就安裝好了windows下的python環境。

由於在Mac os和其餘unixLinux版本下都已經自帶了Python,這裏我就不作太多介紹了。

Python實現方式

Python身爲一門編程語言,可是他是有多種實現方式的,這裏的實現指的是符合Python語言規範的Python解釋程序以及標準庫等。

Python的實現方式主要分爲三大類

  1. Cpython

  2. Jpython

  3. IronPython

CPython

Cpython是默認的Python解釋器,這個名字根據它是可移植的ANSI C語言代碼編寫而成的這事實而來的。

當執行Python執行代碼的時候,會啓用一個Python解釋器,將源碼(.py)文件讀取到內存當中,而後編譯成字節碼(.pyc)文件,最後交給Python的虛擬機(PVM)逐行解釋並執行其內容,而後釋放內存,退出程序。

python-day01-04

當第二次在執行當前程序的時候,會先在當前目錄下尋找有沒有同名的pyc文件,若是找到了,則直接進行運行,不然重複上面的工做。

pyc文件的目的其實就是爲了實現代碼的重用,爲何這麼說呢?由於Python認爲只要是import導入過來的文件,就是能夠被重用的,那麼他就會將這個文件編譯成pyc文件。

python會在每次載入模塊以前都會先檢查一下py文件和pyc文件的最後修改日期,若是不一致則從新生成一份pyc文件,不然就直接讀取運行。

Jython

Jython是個Python的一種實現方式,Jython編譯Python代碼爲Java字節碼,而後由JVM(Java虛擬機)執行,這意味着此時Python程序與Java程序沒有區別,只是源代碼不同。此外,它可以導入和使用任何Java類像Python模塊。

IronPython

IronPython是Python的C#實現,而且它將Python代碼編譯成C#中間代碼(與Jython相似),而後運行,它與.NET語言的互操做性也很是好。

Python簡單入門

Hello Word

通常狀況下程序猿的第一個小程序都是簡單的輸出Hello Word!,固然Python也不例外,下面就讓咱們來用Python輸出一句Hello Word!吧!

建立一個以py結尾的文件

[root@ansheng python_code]# touch hello.py

其內容爲

#!/usr/vin/env python

print "Hello Word!"

用Python執行

[root@ansheng python_code]# python hello.py
Hello Word!

輸出的內容爲Hello Word!,OK,你的第一次一句木有了^_^

指定Python解釋器

在Python文件的開頭加入如下代碼就制定瞭解釋器。

第一種方式

#!/usr/bin/python

告訴shell這個腳本用/usr/bin/python執行

第二種方式

#!/usr/bin/env python

在操做系統環境不一樣的狀況下指定執行這個腳本用python來解釋。

執行Python文件

執行Python文件的方式有兩種

例如hello.py的文件內容爲

#!/usr/bin/env python
print "Life is short, you need Pytho"

第一種執行方式

[root@ansheng python_code]# python my.py
Life is short, you need Pytho

若是使用python my.py這種方式執行,那麼#!/usr/bin/python會被忽略,等同於註釋。

第二種執行方式

[root@ansheng python_code]# chmod +x my.py 
[root@ansheng python_code]# ./my.py 
Life is short, you need Pytho

若是使用./my.py 來執行,那麼#!/usr/bin/python則是指定解釋器的路徑,在執行以前my.py這個文件必須有執行權限。

python my.py 實則就是在my.py文件頂行加入了#!/usr/bin/python

指定字符編碼

python制定字符編碼的方式有多種,而編碼格式是要寫在解釋器的下面的,經常使用的以下面三種:

第一種

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

第二種

#!/usr/bin/env python
# -*- coding:utf-8 -*-

第三種

#!/usr/bin/env python
# coding:utf-8

代碼註釋

單行註釋

單行註釋只須要在代碼前面加上#

# 註釋內容

多行註釋

多行註釋用三個單引號或者三個雙引號躲起來

"""
註釋內容
"""

實例

py腳本原文件內容

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

print "My name is Ansheng"
print "I'm a Python developer"
print "My blog URL: https://blog.ansheng.me"
print "Life is short, you need Pytho"

源文件輸出的內容

[root@ansheng python_code]# python note.py 
My name is Ansheng
I'm a Python developer
My blog URL: https://blog.ansheng.me
Life is short, you need Pytho

單行註釋演示

代碼改成

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

print "My name is Ansheng"
print "I'm a Python developer"
print "My blog URL: https://blog.ansheng.me"
#print "Life is short, you need Pytho"

執行結果

[root@ansheng python_code]# python note.py 
My name is Ansheng
I'm a Python developer
My blog URL: https://blog.ansheng.me

結果Life is short, you need Pythoprint出來

多行註釋演示

代碼改成

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

print "My name is Ansheng"
"""
print "I'm a Python developer"
print "My blog URL: https://blog.ansheng.me"
print "Life is short, you need Pytho"
"""

執行結果

[root@ansheng python_code]# python note.py 
My name is Ansheng

結果I'm a Python developerMy blog URL: https://blog.ansheng.meLife is short, you need Pytho都沒有print出來

print輸出多行

既然用單個單引號或者多引號能夠註釋多行,那麼能不能print多行呢?

代碼

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

print """
My name is Ansheng
I'm a Python developer
My blog URL: https://blog.ansheng.me
Life is short, you need Python.
"""

執行結果

[root@ansheng python_code]# python note.py 

My name is Ansheng
I'm a Python developer
My blog URL: https://blog.ansheng.me
Life is short, you need Python.

顯然這是能夠得 ^_^

變量

變量的命名規則:

  1. 變量名只能包含數字、字幕、下劃線

  2. 不能以數字開頭

  3. 變量名不能使python內部的關鍵字

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']

定義變量

>>> name = "ansheng"
>>> print name
ansheng

基本的數據類型

字符串(str)

定義字符串類型是須要用單引號或者雙引號包起來的

>>> name = "ansheng"
>>> print(type(name))
<type 'str'>

或者

>>> name = 'ansheng'
>>> print(type(name))
<type 'str'>

數字(int)

整數類型定義的時候變量名後面能夠直接跟數字,不要用雙引號包起來。

>>> age = 20
>>> print(type(age))
<type 'int'>

布爾值

布爾值就只有True(真)Flash(假)

>>> if True:
...  print("0")
... else:
...  print("1")
...
0

解釋:若是爲真則輸出0,不然輸出1

流程控制

if語句

if語句是用來檢查一個條件:若是條件爲真(true),咱們運行一個語句塊(你爲if塊),不然(else),咱們執行另外一個語句塊(稱爲else塊),else子語句是可選的。

單條件

例題:若是num變量大於1,那麼就輸出num大,不然就輸出num小,num值爲5。

代碼

#!/usr/bin/env python
# -*- coding:utf-8 -*-
num = 5

if num > 1:
 print("num大")
else:
 print("num小")

結果

[root@ansheng python_code]# python num.py
num大

多條件

例題:若是num變量大於5,那麼就輸出num大於5,若是num變量小於5,那麼就輸出num小於5,不然就輸出num等於5,num值爲5。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
num = 5

if num > 5:
 print("num大於5")
elif num < 5:
 print("num小於5")
else:
 print("num等於5")

結果

[root@ansheng python_code]# python num.py
num等於5

while循環

while語句用於循環執行程序,即在某條件下,循環執行某段程序,以處理須要重複處理的相同任務。
執行流程圖以下

while

實例:

定義一個變量count,默認值爲1,而後進去while循環,讓其輸出1-10,若是大於10則退出。

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

count = 1

print "Start...."

while count < 11:
 print "The count is:",count
 count += 1

print "End...."

執行結果以下

[root@ansheng python_code]# python while.py
Start....
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
The count is: 9
The count is: 10
End....

break

跳出當前循環體,下面代碼再也不執行,繼續執行循環後面的代碼

實例

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

count = 1

print "Start...."

while count < 11:
 if count == 5:   #若是count等於5,那麼我就退出當前循環體
  break
 print "The count is:",count
 count += 1

print "End...."

輸出結果

[root@ansheng python_code]# python while.py
Start....
The count is: 1
The count is: 2
The count is: 3
The count is: 4
End....

continue

跳出本次循環,繼續下一次循環

代碼

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

count = 1

print "Start...."

while count < 11:
 if count == 5:        #若是count等於5,那麼我就讓其+1,而後不執行下面的代碼,繼續下一次循環
  count += 1
  continue
 print "The count is:",count
 count += 1

print "End...."

輸出結果

[root@ansheng python_code]# python while.py
Start....
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 6
The count is: 7
The count is: 8
The count is: 9
The count is: 10
End....

條件判斷

條件判斷適用於ifwhile等。

等於

if 1 == 1:

不等於

if 1 != 2:

小於

if 1 < 1

大於

if 1 > 1:

而且

if 1 == 1 and 1 > 0:

或者

if 2 > 1 or 2 = 2:

永遠爲真

if True:

永遠爲假

if False:

交互式輸入

Python的交互式輸入使用的是input()函數實現的,注意在Python2.7.x版本的時候可使用raw_input()input()函數,可是在Python3.5.x版本的時候就沒有raw_input()函數了,只可以使用input()

例題:用戶在執行腳本的時候,讓他輸入本身的名字,而後打印出來。

代碼

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

username = input("請輸入你的名字:")
print("你的名字是:", username)

執行結果

[root@ansheng python_code]# python input.py
請輸入你的名字:安生   # 輸入你的名字
你的名字是: 安生      # 打印出你的名字

練習題

使用while循環輸入1 2 3 4 5 6 8 9 10

思路: 首先定義一個變量num,值爲1,而後用while循環輸出1-10的內容,在while循環內加入if語句,判斷當前的值若是是7,那麼就讓7+1,加完以後跳出本次循環,不執行下面的print,7跳出本次循環以後,第二輪的時候num就是8了,而不是7.

代碼

#!/use/bin/env python
# _*_ coding:utf-8 _*_

num = 1
while num < 11:
    if num == 7:
        num += 1
        continue
    print(num)
    num += 1

輸出內容爲:

1
2
3
4
5
6
8
9
10

求1-100的全部數的和

思路:定義兩個變量,分別是count和num,利用while語句循環輸出1-100,而後每次就讓count+num,這樣循環一百次以後相加的結果就是1到100的和了。

代碼

#!/use/bin/env python
# _*_ coding:utf-8 _*_

count = 1
num = 0
while count < 101:
    num = num + count
    count += 1

print(num)

輸出結果

5050

輸出 1-100 內的全部奇數

思路: 利用%整數相除的餘,若是餘數是1那麼當前的count就是奇數,若是餘0,那麼當前的count就是偶數。

代碼

#!/use/bin/env python
# _*_ coding:utf-8 _*_

count = 1

while count < 101:
    num = count % 2
    if num == 1:
        print(count)
    count += 1

結果本身執行看

輸出 1-100 內的全部偶數

代碼

#!/use/bin/env python
# _*_ coding:utf-8 _*_

count = 1

while count < 101:
    num = count % 2
    if num == 0:
        print(count)
    count += 1

結果本身執行看

求1-2+3-4+5 ... 99的全部數的和

#!/use/bin/env python
# _*_ coding:utf-8 _*_

count = 1

while count < 100:
    if count == 1:
        num = count
    elif count % 2 == 1:
        num = num + count
    elif count % 2 == 0:
        num = num - count
    count += 1

print(num)

結果

50

用戶登錄

需求:寫一個腳本,用戶執行腳本的時候輸入用戶名和密碼,若是用戶米或者密碼連續三次輸入錯誤則退出,若是輸入正確則顯示登錄成功,而後退出。

用戶名和密碼本身定義

  • 圖解用戶登陸流程

python-day01-10

  • 代碼

#!/use/bin/env python
# _*_ coding:utf-8 _*_
import getpass

# username:ansheng
# userpass:666666

count = 3

while count > 0:
    username = input("User Name:")
    userpass = getpass.getpass("pass:")
    if username == "ansheng" and userpass == "666666":
        print "User:", username, ",login successful!"
        break
    else:
        count -= 1
        if count != 0:
            print "Login failed", count
        else:
            print("The maximum number of login!")

登錄成功演示

User Name:ansheng  #輸入用戶名
pass:              #輸入密碼,密碼是看不到的,由於調用了getpass模塊
User: ansheng ,login successful!  #顯示用戶ansheng,登錄成功

登錄失敗演示

User Name:as
pass:
Login failed 2
User Name:an
pass:
Login failed 1
User Name:ansea
pass:
The maximum number of login!

帳號或密碼連續三次輸入錯誤則退出程序,而且每次提醒用戶升序多少次登錄的機會。

原文連接
Python全棧之路系列文章

相關文章
相關標籤/搜索