1、編程與編程語言python
python是一門編程語言,學習python以前,先搞明白三個問題。編程的目的?什麼是編程語言?什麼是編程?程序員
一、編程目的?express
計算機的發展就是爲解放人力,機器是死的,因此人必須找到一種可以被機器識別的表達式從而把本身的思想按照這個表達方式傳遞機器,完成機器能夠自發的工做。編程
二、什麼編程語言?編程語言
上面所說的表達方式指的就編程語言,那咱們學習英語來幾個栗子:學習英語須要學習單詞、語法,最後要將單詞按照語法格式寫成做文;一樣的道理,學習python也是學習關鍵字(if while for and or)、語法,最後達到編程的目的; ide
三、什麼編程?oop
按照某種編程語言的語法風格寫程序,程序在未執前就是一對普通文件。 學習
2、編程語言的發展及分類spa
PS:在這裏將程序員比做奴隸主,將計算機比做奴隸 翻譯
第一階段:機器語言(即站在奴隸角度說計算機能聽懂的話,直接用二進制編程,直接操做硬件)
優勢:執行效率快
缺點:學習難度大,開發效率低
第二階段:彙編語言(站在奴隸角度說計算機能聽懂的話,用一些英文標籤來代替一串特定的意義的二進制,仍是直接操做硬件)
優勢:執行效率快,不如機器語言快
缺點:學習難度大,開發效率低,比機器語言降一個難度
第三階段:高級語言(站在奴隸主的角度說人話,機器沒法理解,因此須要翻譯,翻譯有分爲兩類:編譯和解析)
編譯型(C):至關於百度翻譯,翻譯一次,拿着該翻譯的結果去執行。
優勢:執行效率高
缺點:開發效率低
解釋型(Python):至關於同聲傳譯,一邊解釋一邊執行。
優勢:開發效率高
缺點:執行效率低
以上三個階段的 執行效率、開發效率、學習難度依次排序以下:
執行效率:從高到低(機器語言>彙編語言>高級語言)
開發效率:從低到高(機器語言<彙編語言<高級語言)
學習難度:從難到易(機器語言>彙編語言>高級語言)
PS:執行效率不是影響,開發效率纔是王道
3、寫程序的兩種方式
一、交互式:(在python解釋器中直接執行的命令)即時調試
二、非交互式:(執行文件)python3 C:\test.py
4、變量
一、什麼是變量?
變指的是「變化」,量指的反映某種狀態
二、爲何要有變量?
程序執行的本質就是一系列狀態的變化,變是程序執行的直接體現,因此咱們須要有一種機制可以反映或者說是保存下來程序執行時狀態以及狀態的變化。
三、如何定義變量?
在程序的內存空間爲變量開一個小房間,掛上變量名(至關於門牌號,指向值所在的空間)
語法:變量名=變量值
name='test' password='test123'
四、變量名的命名規則?
1)變量名只能是 字母、數字或下劃線的任意組合
2)變量名的第一個字符不能是數字
3)關鍵字不能聲明爲變量名[
五、定義的方式?
1)駝峯式:TestValue=20(大小寫結合)
2)下劃線:Test_Value=20
PS:很差的定義變量名方式
(1)變量名爲中文、拼音
(2)變量名過長
(3)變量名詞不達意
3)定義變量會有:id,type,value
(1)等號比較的是value值
(2) is比較的是id號(id號不是內存地址 可是反映了在內存中的位置)
強調: 一、id相同,意味着type和value一定相同
二、value相同type確定相同,但id可能不一樣
六、變量的修改與內存管理(引用計數與垃圾回收機制)
python中對於沒有引用的內存數據有自動回收機制,判斷是否有引用的方法是看變量所在的內存空間是否掛有變量名。
5、常量
常量即指不變的量,如圓周率π 3.141592653...,在Python中沒有一個專門的語法表明常量,程序員約定俗成用變量名所有大寫表明常量
6、Python程序被執行的過程(重點!!!)
舉栗子:在Windows的python3環境下啓動一個C:\test.py文件,具體過程以下
一、先啓動python3.exe
二、把C:\test.py從硬盤讀入內存
三、解釋執行文件內容(識別python語法)
7、產生一個變量的三要素(重點!!!)
舉栗子:定義一個變量name='Test'
一、變量值:用變量名取變量值
print(name)
二、變量值的類型:表示不一樣的狀態應該用不一樣類型的值去表示(數字:年齡,字符串:名字)
print(type(name))
三、變量值的id號:
print(id(name))
PS:判斷值value是否相等:==
判斷內存位置id是否相等:is
對於兩個value相等的變量,變量值長度短的時候它們的id號是同樣的,變量值長度長的時候它們的id號是不同的,這個沒有明確的界限;
8、程序與用戶交互
一、交互式輸入
以前,咱們去銀行取錢,有專門的銀行業務員讓咱們把本身的帳號密碼輸入給他,而後他去進行驗證,驗證成功後,將取款金額告訴他。如今各個銀行都爲客戶提供一臺ATM機(就是一臺計算機),讓ATM機跟用戶交互,從而取代人力。機器畢竟是死的,因此就須要編寫程序來它運行,這就要求咱們的編程語言中可以有一種能與用戶交互,接收用戶輸入數據的機制。
注意:在python3中,input:用戶輸入任何值,都存成字符串類型
在python2中,input:用戶輸入什麼類型,就存成什麼類型;raw_input:等於python3的input(用戶輸入任何值,都存成字符串類型)
二、註釋
增長代碼的可讀性,讓別人知道你寫的代碼是幹什麼用的。
代碼註釋分單行和多行註釋, 單行註釋用#,多行註釋能夠用三對雙引號""" """
代碼註釋的原則:
1)不用所有加註釋,只須要在本身以爲重要或很差理解的部分加註釋便可
2)註釋能夠用中文或英文,但不要用拼音
三、文件頭
#!/usr/bin/python
# -*- coding: utf-8 -*-
9、基本數據類型
一、什麼是數據?爲什麼要有多種類型的數據?
數據即變量的值,如age=18,18則是咱們保存的數據。
變量的是用來反映/保持狀態以及狀態變化的,毫無疑問針對不一樣的狀態就應該用不一樣類型的數據去標識
二、數字類型
1)int整型
定義:age=10 #age=int(10)
用於標識:年齡,等級,×××號,qq號,個數
二、float浮點型
定義:salary=3.1 #salary=float(3.1)
用於標識:工資,身高,體重,
三、字符串類型
定義:str=' '|" "|''' ''' (在引號(單引號,雙引號,三引號)裏定義的一堆字符)
PS:那單引號、雙引號、多引號有什麼區別呢?
單雙引號木有任何區別,只有下面這種狀況須要考慮單雙的配合===> msg = "My name is Egon , I'm 18 years old!"
多引號什麼做用呢?做用就是多行字符串必須用多引號
狀態:描述性的內容,好比名字,性別,國籍
備註:字符串呢只能進行"相加"和"相乘"運算(字符只能跟字符串之間進行+或者*)
注意1:字符串相加的效率不高
字符串1+字符串3,並不會在字符串1的基礎上加字符串3,而是申請一個全新的內存空間存入字符串1和字符串3,至關字符串1與字符串3的空間被複制了一次,
注意2:只能字符串加字符串,不能字符串加其餘類型
四、列表類型
定義:[]方括號內,用逗號分隔開,存放多個任意類型的元素
狀態:有序存放多個值
# info=['egon',18,'male',['歐德博愛','education',70]] #info=list([...])=
# print(info[3])
五、字典類型
背景:存放一我的的信息:姓名,性別,年齡;字典便可以存放多個任意類型的值,又能夠硬性規定值的映射關係的類型,好比key=value。
定義:{}花括號內,用逗號分割key:value, value能夠是任意類型,可是key必須不可變類型
狀態:存放多個值
# info={ 'name':'egon', 'age':18, 'sex':'male', 'company':{'name':'歐德博愛','type':'education','emp_count':70} }
# print(info['company']['type'])
六、布爾類型(True,False)
定義:即判斷一個條件成立時,用True標識,不成立則用False標識。
狀態:成立,不成立,用來作邏輯運算判斷
#age=38
#print(age > 18)
補充個重點:可變類型和不可變類型
一、可變類型:在id不變的狀況下,value能夠變,則稱爲可變類型,如列表,字典
二、不可變類型:value一旦改變,id也改變,則稱爲不可變類型(id變,意味着建立了新的內存空間)
10、格式化輸出
程序中常常會有這樣場景:要求用戶輸入信息,而後打印成固定的格式,好比要求用戶輸入用戶名和年齡,而後打印以下格式:My name is xxx,my age is xxx.
很明顯,用逗號進行字符串拼接,只能把用戶輸入的名字和年齡放到末尾,沒法放到指定的xxx位置,並且數字也必須通過str(數字)的轉換才能與字符串進行拼接。
這就用到了佔位符,如:%s、%d
%s字符串佔位符:能夠接收字符串,也可接收數字
%d數字佔位符:要注意d%只能接收數字
name=input('your name: ')
age=input('your age: ') #python3中用戶輸入18,會存成字符串18,沒法傳給%d
print('My name is %s,my age is %s' %(name,age))
11、基本運算符
運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算
一、算數運算(+ - * / % // **)
二、比較運算(== != <> > < >= <=)返回True或者False
三、賦值運算(= += -+ *= /= %= **= //= )
四、邏輯運算(and or not)返回True或者False
五、身份運算is
備註:is比較的是id
12、流程控制之if...else
邏輯運算,就是按照不一樣的條件作出不一樣的反映;
if語句的格式:
if expression:
statement1()
else:
statement2()
十3、while循環
一、語法
while 條件:
循環體
若是條件爲真,那麼循環體則執行,執行完畢後再次循環,從新判斷條件。。。
若是條件爲假,那麼循環體不執行,循環終止
二、死循環(只要條件一直爲True,循環就一直繼續)
三、循環嵌套與tag
tag=True
while tag:
........
while tag:
tag=False
四、break與continue
break用於退出本層循環
continue用於退出本次循環,繼續下一次循環
五、while與else
在Python 中還有個while ...else 語句,while 後面的else 做用是指,當while 循環正常執行完,中間沒有被break 停止的話,就會執行else後面的語句
count = 0
while count <= 5 :
count += 1
print(count)
else:
print("循環正常執行完啦")
print("-----out of while loop ------")