Day1 - Python基礎

本節內容

一、 Python簡介 
二、安裝
三、第一個程序(hello world)
四、解釋器
五、編程語言的分類
六、註釋
七、變量
八、中文的問題
九、運算
十、輸入/輸出
十一、流程控制/if/for/while 
十二、數字+字符串+格式化
 
 
 
今日目標:
  實現用戶登陸、三級菜單
 
 

一、 Python簡介

1.1 python的由來

  python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。php

  Python社區的人賦予他「仁慈大君」 的稱號,這一稱號直接來自英國肥皂劇《Monty Python飛行馬戲團》。Guido當初之因此選中Python做爲語言的名字,是由於他太喜歡這部肥皂劇了。html

      

  

1.2 python的現狀

        
      
 

1.3 python 的特色

  引用一段《python基礎教程》開場白:java

  編寫C程序就像一羣人拿着剃刀在剛打過蠟的舞場內跳快舞python

                                               ------Walidi Ravenslinux

  C++:難學更難用,設計如此c++

                                                    ------匿名shell

  在不少方面,Java就是C++ 編程

                                              ------Michael Feldmanswift

  如今請看一種史無前例的表演......vim

                                     ------Monty Python的表演《飛行的馬戲團》

 
任何編程語言都有缺點,Python也不例外:
第一個缺點就是運行速度慢,和C程序相比很是慢,由於Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程很是耗時,因此很慢。而C程序是運行前直接編譯成CPU能直接執行的機器碼,因此很是快。
第二個缺點是,線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖。是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。關於這個問題的折衷解決方法,咱們在之後線程和進程章節裏再進行詳細探討。
第三個缺點就是代碼不能加密。
 

1.4 Python主要應用領域

  • WEB/客戶端 開發: 豆瓣、Youtube 、Quora 、BitTorrent、dropbox 、Gmail、Google Maps
  • 雲計算:OpenStack
  • 爬蟲:搜索引擎、網站比價、買火車票
  • 遊戲: EVE online 、Civilization IV
  • 科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系統運維: 運維人員必備語言
  • 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,並且重要性逐年提升。緣由:做爲動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤爲擅長策略回測
  • 圖形GUI: PyQT, WxPython,TkInter

 

1.5 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完成各類各樣的任務。

 1.6 如何學好python

 

二、Python開發必備環境

   

2.1 如何獲取python

https://www.python.org/downloads/ 

2.2 如何安裝

windows:

 

 linux:

查看默認Python版本
python -V
  
一、安裝gcc,用於編譯Python源碼
    yum install gcc
二、下載源碼包,https://www.python.org/ftp/python/
三、解壓並進入源碼文件
四、編譯安裝
    ./configure
    make all
    make install
五、查看版本
    /usr/local/bin/python2.7 -V
六、修改默認Python版本
    mv /usr/bin/python /usr/bin/python2.6
    ln -s /usr/local/bin/python2.7 /usr/bin/python
七、防止yum執行異常,修改yum使用的Python版本
    vi /usr/bin/yum
    將頭部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6

 

三、第一個python程序 Hello World!

在什麼地方寫一個python程序?

3.1 使用python交互程序

3.2 使用文件

windows:

推薦Notepad++ ,不要用Word和Windows自帶的記事本。Word保存的不是純文本文件,而記事本會自做聰明地在文件開始的地方加上幾個特殊字符(UTF-8 BOM),結果會致使程序運行出現莫名其妙的錯誤!

 

linux:

# vim hello.py
# python hello.py
Hello World!

上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。

若是想要相似於執行shell腳本同樣執行python腳本,例: ./hello.py ,那麼就須要在 hello.py 文件的頭部指定解釋器,以下:

#!/usr/bin/env python
#The first code
print "hello,world"

ps:執行前需給予 hello.py 執行權限,chmod 755 hello.py

 

解釋器:

Python在執行時,解釋器會將.py文件中的源代碼編譯成Python的byte code(字節碼),而後再執行這些編譯好的byte code。

 

對比下其它語言的hello world

  C++
  C
  JAVA
  PHP
  RUBY
  Go

 

3.3 使用IDE---pycharm(windows)

補充知識:編譯型語言和解釋型語言

編譯型語言

需經過編譯器(compiler)將源代碼編譯成機器碼,以後才能執行的語言。通常需通過編譯(compile)、連接(linker)這兩個步驟。編譯是把源代碼編譯成機器碼,連接是把各個模塊的機器碼和依賴庫串連起來生成可執行文件。

優勢:編譯器通常會有預編譯的過程對代碼進行優化。 由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高 。能夠脫離語言環境獨立運行。

缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。

表明語言:C、C++、 Pascal、Object-C以及最近很火的蘋果新語言swift

解釋型語言

解釋性語言的程序不須要編譯,相比編譯型語言省了道工序,解釋性語言在運行程序的時候才逐行翻譯。

優勢:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。

缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。

表明語言:JavaScript、Python、Erlang、PHP、Perl、Ruby

混合型語言

既然編譯型和解釋型各有缺點就會有人想到把兩種類型整合起來,取其精華去其糟粕。就出現了半編譯型語言。好比C#,C#在編譯的時候不是直接編譯成機器碼而是中間碼,.NET平臺提供了中間語言運行庫運行中間碼,中間語言運行庫相似於Java虛擬機。我我的認爲拋開一切的偏見C#是這個星球上最好的編程語言。惋惜微軟的政策限制了C#的推廣。

Java先生成字節碼再在Java虛擬機中解釋執行。

嚴格來講混合型語言也屬於解釋型語言。

 

四、註釋

  單行注視:#  被註釋內容

  多行註釋:""" 被註釋內容 """

 

# 井號能夠註釋單行代碼
"""
3個雙引號或者單引號
能夠註釋多行內容
"""

  

五、變量和數據類型  

變量能夠用來存儲數據和被程序調用,它由名字和值兩部分組成,能夠把它想象成一個容器,容器的名字和值會被保存在內存中。

#_*_coding:utf-8_*_
 
name = "Alex Li"    
age = 18
sales = 4432.67 / 1.20   

  

 

變量定義的規則:

  • 變量名只能是 字母、數字或下劃線的任意組合
  • 變量名的第一個字符不能是數字
  • 如下關鍵字不能聲明爲變量名
    ['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 = "Alex Li"
 
name2 = name
print(name,name2)
 
name = "Jack"
 
print("What is the value of name2 now?")

  

六、輸入/輸出

輸出:

在print()括號中加上字符串,就能夠向屏幕上輸出指定的文字。

print('hello, python')  

print()函數也能夠接受多個字符串,用逗號「,」隔開,就能夠連成一串輸出:

name = 「france」
print(「my name is :」,name)  

print()會依次打印每一個字符串,遇到逗號「,」會輸出一個空格。

 

輸入:

Python提供了一個input(),可讓用戶輸入字符串

 

七、中文的問題

#!/usr/bin/env python
  
print "你好,世界"

 
錯誤緣由:python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ASCII碼),但ASCII不支持中文。

 

字符編碼:

 字符編碼英語:Character encoding)、字集碼是把字符集中的字符編碼爲指定集合中某一對象(例如:比特模式、天然數序列8位組或者電脈衝),以便文本計算機中存儲和經過通訊網絡的傳遞。常見的例子包括將拉丁字母表編碼成摩斯電碼ASCII。其中,ASCII將字母、數字和其它符號編號,並用7比特二進制來表示這個整數。一般會額外使用一個擴充的比特,以便於以1個字節的方式存儲。

 

 

ASCII

 ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。ASCII規範標準在1967發表,最後一次更新則是在1986年。至今爲止共定義了128個字符。

 

GB2312/GBK/GB18030 

GB 2312 是中國國家標準簡體中文字符集,全稱《信息交換用漢字編碼字符集·基本集》,又稱GB0,由中國國家標準總局在1981年發佈實施。GB 2312標準共收錄6763個漢字。

GBK即漢字內碼擴展規範。共收入21886個漢字和圖形符號。

GB 18030與GB 2312-1980徹底兼容,與GBK基本兼容,支持GB 13000及Unicode的所有統一漢字,共收錄漢字70244個。

 

各國語言編碼

http://blog.csdn.net/miqi770/article/details/43935273

 

Unicode

Unicode(中文萬國碼、國際碼、統一碼、單一碼)是計算機科學領域裏的一項業界標準。它對世界上大部分的文字系統進行了整理、編碼,使得電腦能夠用更爲簡單的方式來呈現和處理文字。

Unicode伴隨着通用字符集的標準而發展,同時也以書本的形式[1]對外發表。Unicode至今仍在不斷增修,每一個新版本都加入更多新的字符。目前最新的版本爲2016年6月21日公佈的9.0.0[2],已經收入超過十萬個字符(第十萬個字符在2005年獲採納)。Unicode涵蓋的數據除了視覺上的字形、編碼方法、標準的字符編碼外,還包含了字符特性,如大小寫字母。

 

UTF-8

UTF-88-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,也是一種前綴碼。它能夠用來表示Unicode標準中的任何字符,且其編碼中的第一個字節仍與ASCII兼容,這使得原來處理ASCII字符的軟件無須或只須作少部分修改,便可繼續使用。所以,它逐漸成爲電子郵件網頁及其餘存儲或發送文字的應用中,優先採用的編碼。

UTF-8使用一至六個字節爲每一個字符編碼(儘管如此,2003年11月UTF-8被RFC 3629從新規範,只能使用原來Unicode定義的區域,U+0000到U+10FFFF,也就是說最多四個字節)

 

改正:應該顯示的告訴python解釋器,用什麼編碼來執行源代碼,即:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
print "你好,世界" 

 

 

八、流程控制之if ... else

 

場景1、用戶登錄驗證

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 提示輸入用戶名和密碼
  
# 驗證用戶名和密碼
#     若是錯誤,則輸出用戶名或密碼錯誤
#     若是成功,則輸出 歡迎,XXX!
 
 
#!/usr/bin/env python
# -*- coding: encoding -*-
  
import  getpass
  
  
name  =  raw_input ( '請輸入用戶名:' )
pwd  =  getpass.getpass( '請輸入密碼:' )
  
if  name  = =  "alex"  and  pwd  = =  "cmd" :
     print ( "歡迎,alex!" )
else :
     print ( "用戶名和密碼錯誤" )

場景2、猜年齡遊戲

在程序裏設定好你的年齡,而後啓動程序讓用戶猜想,用戶輸入後,根據他的輸入提示用戶輸入的是否正確,若是錯誤,提示是猜大了仍是小了

  

外層變量,能夠被內層代碼使用
內層變量,不該被外層代碼使用

 

十二、表達式for loop

最簡單的循環10次

1
2
3
4
5
6
#_*_coding:utf-8_*_
__author__  =  'Alex Li'
 
 
for  in  range ( 10 ):
     print ( "loop:" , i )

輸出:

1
2
3
4
5
6
7
8
9
10
loop:  0
loop:  1
loop:  2
loop:  3
loop:  4
loop:  5
loop:  6
loop:  7
loop:  8
loop:  9

需求一:仍是上面的程序,可是遇到小於5的循環次數就不走了,直接跳入下一次循環

1
2
3
4
for  in  range ( 10 ):
     if  i< 5 :
         continue  #不往下走了,直接進入下一次loop
     print ( "loop:" , i )

需求二:仍是上面的程序,可是遇到大於5的循環次數就不走了,直接退出

1
2
3
4
for  in  range ( 10 ):
     if  i> 5 :
         break  #不往下走了,直接跳出整個loop
     print ( "loop:" , i )

 

1三、while loop   

 有一種循環叫死循環,一經觸發,就運行個天荒地老、海枯石爛。

海枯石爛代碼

1
2
3
4
5
count  =  0
while  True :
     print ( "你是風兒我是沙,纏纏綿綿到天涯..." ,count)
     count  + = 1
    

 

其實除了時間,沒有什麼是永恆的,死loop仍是少寫爲好 

上面的代碼循環100次就退出吧

 

 

 

回到上面for 循環的例子,如何實現讓用戶不斷的猜年齡,但只給最多3次機會,再猜不對就退出程序。

  

  

 

做業一:博客

 

做業二:編寫登錄接口

  • 輸入用戶名密碼
  • 認證成功後顯示歡迎信息
  • 輸錯三次後鎖定

 

做業三:多級菜單
  • 三級菜單
  • 可依次選擇進入各子菜單
  • 所需新知識點:列表、字典
相關文章
相關標籤/搜索