第一篇:初識Python

  • 一 本節目標
  • 二 瞭解編程語言
  • 2.1 爲何要編程?
  • 2.2 什麼是編程語言?
  • 2.3 編程語言分哪些種類?
  • 三 python簡介
  • 3.1 Python的前世今身
  • 3.2 Python能夠應用於衆多領域
  • 3.3 python是一種怎樣的語言
  • 3.4 爲什麼選擇Python
  • 3.5 Python解釋器的種類
  • 3.6 python解釋器的發展史
  • 四 python環境
  • 五 python入門
  • 5.1 第一句python代碼
  • 5.2 文件頭
  • 5.3 註釋
  • 5.4 執行腳本傳入參數
  • 5.5 瞭解pyc文件
  • 六 變量
  • 6.1 爲什麼要有變量
  • 6.2 變量的聲明與引用
  • 6.3 標識符命令規範:
  • 6.4 變量的賦值
  • 七 輸入輸出
  • 八 簡單的運算符
  • 九 流程控制
  • 9.1 條件語句
  • 9.2 循環語句
  • 十 本節練習

一 本節目標

  • 瞭解編程語言
  • 瞭解python及與其餘語言的優劣對比
  • 安裝python解釋器及環境變量配置、運行python交互式環境
  • 打印hello world程序
  • 初識變量、用戶輸入,流程控制,while循環
 

二 瞭解編程語言

 

2.1 爲何要編程?

解放人力:讓機器(好比計算機)按照人們事先爲其編寫好的程序自發地去工做php

2.2 什麼是編程語言?

 

人----------->漢語--------------->中國人html

 

                   八格牙路----------->日本人java

 

                   汪汪汪------------->狗python

 

                   編程語言----------->計算機linux

 

編程語言即語言,語言的本質就是溝通,於是編程語言與英語 、法語、日語等全部語言並沒有區別,只不過英語是人與人之間溝通的介質,而編程語言則是程序員與計算機溝通的介質。c++

程序員把本身想要說的話用編程的語言寫到文件裏,這其實就開發了一個程序,接下來讓計算機按照文件裏說的內容去作事情,這就是程序的執行。程序員

 

2.3 編程語分哪些種類?

一:機器語言:機器語言是用二進制代碼表示的計算機能直接識別和執行的一種機器指令的集合。
優勢:靈活、直接執行和速度快。
缺點:不一樣型號的計算機其機器語言是不相通的,按着一種計算機的機器指令編制的程序,不能在另外一種計算機上執行。 二:彙編語言:彙編語言的實質和機器語言是相同的,都是直接對硬件操做,只不過指令採用了英文縮寫的,標識符更容易識別和記憶。它一樣須要編程者將每一步具體的操做用命令的形式寫出來。
優勢:能完成通常高級語言所不能實現的操做,並且源程序經彙編生成的可執行文件比較小,且執行速度很快。
缺點:源程序比較冗長、複雜、容易出錯,並且使用匯編語言編程須要有更多的計算機專業知識。 三:高級語言:明確地講,高級語言就是說人話,用人類能讀懂的(好比英文)字符編程。高級語言是絕大多數編程者的選擇。和彙編語言相比,它不但將許多相關的機器指令合成爲單條指令而且去掉了與具體操做有關但與完成工做無關的細節,例如使用堆棧、寄存器等。
優勢:大大簡化了程序中的指令。同時,因爲省略了不少細節,編程者也就不須要有太多的專業知識。
缺點:高級語言所編制的程序不能直接被計算機識別,必須通過轉換才能被執行。
按轉換方式可將它們分爲兩類: 解釋類:執行方式相似於咱們平常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(如python程序,先翻譯/編譯成字節碼,而後由解釋器解釋執行,這個過程程序員都無需關心了,享受這種便利便可),一邊執行
優勢:這種方式比較靈活,調試程序極爲方便,程序一旦出錯,當即調試當即就能夠測試結果
缺點:效率比較低,並且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器。只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的. 

編譯類:編譯是指在程序執行以前,就將程序源代碼「翻譯」成機器指令,並保存成二進制文件      優勢:編譯後的代碼能夠直接在機器上運行,運行速度比解釋型要高。      缺點:調試程序麻煩,程序一旦須要修改,必須先修改源代碼,再從新編譯後才能執行。

總結:編程語言經歷了:機器語言-------->彙編語言------------>高級語言(java,C#,php,ruby,python)web

1:開發效率從低到高shell

2:執行效率從高到低編程

3:掌握難度從難到易

註解:執行效率不是問題,硬件已經足夠用,因而開發效率成了關鍵,於是高級語言在當今世界大行其道。

三 python簡介

3.1 Python的前世今身

python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言(由Guido參加設計的一種教學語言,是專門爲非專業程序員設計的,優美強大可是流產了,非開源)的一種繼承。

最新的TIOBE排行榜,Python躍居第五!!!

摘自http://www.tiobe.com/tiobe-index/

由上圖可見,Python總體呈上升趨勢,反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認!!!

3.2 Python能夠應用於衆多領域

由上圖可見,Python總體呈上升趨勢,反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認!!!

Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。

目前Python主要應用領域:

  • 雲計算: 雲計算最火的語言, 典型應用OpenStack
  • WEB開發: 衆多優秀的WEB框架,衆多大型網站均爲Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系統運維: 運維人員必備語言
  • 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,並且重要性逐年提升。緣由:做爲動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤爲擅長策略回測
  • 圖形GUI: PyQT, WxPython,TkInter

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

3.3 python是一種怎樣的語言

編譯型vs解釋型

編譯型
優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。

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

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

註解:java代碼號稱一次編譯處處運行,由於java代理須要先編譯成字節碼(一種中間格式的代碼),而後拿着字節碼處處運行,每次運行都須要交給jvm去編譯成機器指令後才能執行,於是java是混合型

而有的人會有疑問,python代碼也是先編譯成字節碼而後交給python解釋器去執行的啊,難道python不是混合型嗎?固然不是

1. 首先須要知道,只有在import導入py文件時,纔會產生pyc字節碼文件,該字節碼文件是能夠代替源文件而直接執行的

2. 但每次執行py文件,產生的字節碼並不會保留下來,也就是說,每次執行py文件,都是要從新經歷一遍:py文件->字節碼-->python解釋器-->機器碼,每次都是一個從新解釋執行的過程。

3.4 爲什麼選擇Python

這他媽的還用問,你都TMD看了這麼多,還TMD問這種問題?

C 和 Python、Java、C#等

    C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做

其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行

CPython解釋器是由C語言開發的

  對於使用:Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
  對於速度:Python的運行速度相較與C,絕逼是慢了

Python 和 Java、C#等

  對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
  對於速度:Python在速度上可能稍顯遜色

1.速度永遠不是關鍵

對大多數的應用程序來講,並不須要這麼快的運行速度,由於用戶根本感受不出來。例如開發一個下載MP3的網絡應用程序,C程序的運行時間須要0.001秒,而Python程序的運行時間須要0.1秒,慢了100倍,但因爲網絡更慢,須要等待1秒,你想,用戶能感受到1.001秒和1.1秒的區別嗎?這就比如F1賽車和普通的出租車在北京三環路上行駛的道理同樣,雖然F1賽車理論時速高達400千米,但因爲三環路堵車的時速只有20千米,所以,做爲乘客,你感受的時速永遠是20千米。

2.加密也不是關鍵

對於編譯型語言如C語言來講,能夠將編譯後的代碼發給用戶,用戶反解幾乎是不可能的,至關於自帶加密功能了。而解釋型語言如python只能發佈源碼給用戶,但其實這沒什麼問題,如今主流的思想是軟件開源,千萬別意淫你的軟件有多麼大的商業價值。

3.5 Python解釋器的種類

python是一門語言,用這門語言寫出的代碼,須要由python的解釋器去解釋執行,解釋器有以下分類:

  • Cpython(最經常使用的版本)
        Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。
  • Jyhton
        Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。
  • IronPython
        Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
  • PyPy(特殊)
        Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。
  • RubyPython、Brython ...

以上除PyPy以外,其餘的Python的對應關係和執行流程以下:

 PyPy,在Python的基礎上對Python的字節碼進一步處理,從而提高執行速度!

 

3.6 python解釋器的發展史

  • 1989年,爲了打發聖誕節假期,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。
  • 1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。
  • Granddaddy of Python web frameworks, Zope 1 was released in 1999
  • Python 1.0 - January 1994 增長了 lambdamapfilter and reduce.
  • Python 2.0 - October 16, 2000,加入了內存回收機制,構成了如今Python語言框架的基礎
  • Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 誕生
  • Python 2.5 - September 19, 2006
  • Python 2.6 - October 1, 2008
  • Python 2.7 - July 3, 2010
  • In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
  • Python 3.0 - December 3, 2008
  • Python 3.1 - June 27, 2009
  • Python 3.2 - February 20, 2011
  • Python 3.3 - September 29, 2012
  • Python 3.4 - March 16, 2014
  • Python 3.5 - September 13, 2015

四 python環境

注意:環境變量的設置

windows:

1
2
3
4
5
6
7
1 、下載安裝包
     https: / / www.python.org / downloads /
2 、安裝
     默認安裝路徑:C:\python27
3 、配置環境變量
     【右鍵計算機】 - - 》【屬性】 - - 》【高級系統設置】 - - 》【高級】 - - 》【環境變量】 - - 》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】  - - > 【Python安裝目錄以及安裝目錄下的Scripts目錄追加到變值值中,用 ; 分割】
     如:原來的值;C:\python27,切記前面有分號

linux:

1
2
3
無需安裝,原裝Python環境
  
ps:若是自帶 2.6 ,請更新至 2.7

更新Python

windows:

1
卸載重裝便可

linux:

Linux的yum依賴自帶Python,爲防止錯誤,此處更新其實就是再安裝一個Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
查看默認Python版本
python  - V
  
1 、安裝gcc,用於編譯Python源碼
     yum install gcc
2 、下載源碼包,https: / / www.python.org / ftp / python /
3 、解壓並進入源碼文件
4 、編譯安裝
     . / configure
     make  all
     make install
5 、查看版本
     / usr / local / bin / python2. 7  - V
6 、修改默認Python版本
     mv  / usr / bin / python  / usr / bin / python2. 6
     ln  - / usr / local / bin / python2. 7  / usr / bin / python
7 、防止yum執行異常,修改yum使用的Python版本
     vi  / usr / bin / yum
     將頭部  #!/usr/bin/python 修改成 #!/usr/bin/python2.6

五 python入門

5.1 第一句python代碼

1. 解釋器:即時調試代碼,代碼沒法永久保存

2. 文件:永久保存代碼


在D:\python_test\目錄下新建文件hello.py,編寫代碼以下

print('hello world')

執行hello.py,即python D:\python_test\hello.py

python內部執行過程以下:

 

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

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

#!/usr/bin/env python #該行只對linux有效

print('hello world')

 

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

5.2 文件頭

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

5.3 註釋

當行注視:# 被註釋內容

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

5.4 執行腳本傳入參數

Python有大量的模塊,從而使得開發Python程序很是簡潔。類庫有包括三中:

  • Python內部提供的模塊
  • 業內開源的模塊
  • 程序員本身開發的模塊

Python內部提供一個 sys 的模塊,其中的 sys.argv 用來捕獲執行執行python腳本時傳入的參數

1
2
3
4
5
6
#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
import  sys
  
print  sys.argv

執行

C:\Users\Administrator>python D:\python_test\hello.py arg1 arg2 arg3
['D:\\python_test\\hello.py', 'arg1', 'arg2', 'arg3']

 

5.5 瞭解pyc文件

執行Python代碼時,若是導入了其餘的 .py 文件,那麼,執行過程當中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯以後產生的字節碼。

ps:代碼通過編譯能夠產生字節碼;字節碼經過反編譯也能夠獲得代碼。

六 變量

6.1 爲什麼要有變量

程序執行的本質就是一系列狀態的變化,變量二字的核心一個是變,一個是量,'變'正好對應程序的變化,'量'即計量,反映的是某種狀態,

好比一款遊戲中的人物初始等級:level=1,過了一段時間後升級了:level=10

6.2 變量的聲明與引用

#!/usr/bin/env python

name='egon' #變量的聲明
name #經過變量名,引用變量的值
print(name) #引用而且打印變量名name對應的值,即'egon'

6.3 標識符命令規範:

    • 變量名只能是 字母、數字或下劃線的任意組合
    • 變量名的第一個字符不能是數字
    • 如下關鍵字不能聲明爲變量名
      ['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']
回到頂部

6.4 變量的賦值

#!/usr/bin/env python

name1='lhf'
name2='egon'

#!/usr/bin/env python

name1='lhf'
name2=name1

 

 

 

複製代碼
#!/usr/bin/env python

#一個遊戲人物的等級由1級升到2級
level=1
level=2

#一個遊戲賬號的密碼由'123'改爲'456'
passwd='123'
passwd='456'

#一我的的名字有'lhf'改爲'egon'
name='lhf'
name='egon'
複製代碼
回到頂部

七 輸入輸出

python3中統一都是input,python2中有raw_input等同於python3的input,另外python2中也有input

1.res=input("python3: ")

2.res=raw_input("python2: ")

3.res=raw_input("python2: ")

1,2不管接收何種輸入,都被存爲字符串賦值給res,而3的意思是,用戶輸入何種類型,就以何種類型賦值給res

#!/usr/bin/env python

name=input('請輸入用戶名:')
print(name)

執行

C:\Users\Administrator>python D:\python_test\hello.py
請輸入用戶名:egon
egon

===============================================================================

輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法,即:

#!/usr/bin/env python

import getpass
password=getpass.getpass('請輸入密碼:')
print(password)

執行(在pycharm中沒法執行,須要到終端中執行)

C:\Users\Administrator>python D:\python_test\hello.py
請輸入密碼:
123456
回到頂部

八 簡單的運算符

算數運算;邏輯運算;比較運算;關係運算;

回到頂部

九 流程控制

回到頂部

9.1 條件語句

1 單分支

2 多分支

需求1、用戶登錄驗證

複製代碼
#!/usr/bin/env python

name=input('請輸入用戶名字:')
password=input('請輸入密碼:')

if name == 'egon' and password == '123':
    print('egon login success')
else:
    print('用戶名或密碼錯誤')
複製代碼

 

需求2、根據用戶輸入內容輸出其權限

複製代碼
#!/usr/bin/env python
#根據用戶輸入內容打印其權限

'''
egon --> 超級管理員
tom  --> 普通管理員
jack,rain --> 業務主管
其餘 --> 普通用戶
'''
name=input('請輸入用戶名字:')

if name == 'egon':
    print('超級管理員')
elif name == 'tom':
    print('普通管理員')
elif name == 'jack' or name == 'rain':
    print('業務主管')
else:
    print('普通用戶')
複製代碼
回到頂部

9.2 循環語句

while 循環

一、基本循環

while 條件:
     
    # 循環體
 
    # 若是條件爲真,那麼循環體則執行
    # 若是條件爲假,那麼循環體不執行

 

 

 

二、break

break用於退出本層循環

while True:
    print "123"
    break
    print "456"

三、continue

continue用於退出本次循環,繼續下一次循環

while True:
    print "123"
    continue
    print "456"

 

4 tag

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

# while True:
# username=input('username: ')
# password=input('password: ')
# if username == 'egon' and password == '123':
# while True:
# cmd=input('>>: ')
# if cmd == 'q':
# break
# print('------>%s' %cmd)
# break
tag=True
while tag:
username=input('username: ')
password=input('password: ')
if username == 'egon' and password == '123':
while tag:
cmd=input('>>: ')
if cmd == 'q':
tag=False
continue
print('------>%s' %cmd)

for循環

for i in range(1,10):
    for j in range(1,i+1):
        print('%s*%s=%s' %(i,j,i*j),end=' ')
    print()

十 本節練習

一、使用while循環輸出1 2 3 4 5 6     8 9 10

二、求1-100的全部數的和

三、輸出 1-100 內的全部奇數

四、輸出 1-100 內的全部偶數

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

六、用戶登錄(三次機會重試)

#題一
count=1
while count <= 10:
if count == 7:
count+=1
continue
print(count)
count+=1

count=1
while count <= 10:
if count != 7:
print(count)
count+=1

#題目二
res=0
count=1
while count <= 100:
res+=count
count+=1
print(res)

#題目三
count=1
while count <= 100:
if count%2 != 0:
print(count)
count+=1

#題目四
count=1
while count <= 100:
if count%2 == 0:
print(count)
count+=1



#題目五
res=0
count=1
while count <= 5:
if count%2 == 0:
res-=count
else:
res+=count
count+=1
print(res)

#題目六count=0while count < 3: name=input('請輸入用戶名:') password=input('請輸入密碼:') if name == 'egon' and password == '123': print('login success') break else: print('用戶名或者密碼錯誤') count+=1

相關文章
相關標籤/搜索