Python基礎(一)


一、Python的簡介

1、Python的由來與版本

1.1 python的由來

 python的創始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·范羅蘇姆(中文名字:龜叔)為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。  

1.2  python版本

  目前Python的主要版本為Python2.7與Python3.6 。

  Python2版本到2020年就不再維護。

2、Python是什么樣的語言

編程語言主要從以下幾個角度為進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每個分類代表什么意思呢,我們一起來看一下。

2.1 編譯型語言和解釋型語言

  編譯型語言:當用戶寫完一段代碼需要執行的時候,由編譯器先把整段代碼一次性編譯成計算機能看懂的二進制文件,然后再執行。這個過程中,如果用戶寫的代碼出錯了,編譯器就得整段從頭開始編譯,只是幾行或者幾頁代碼的情況下還感覺不出來,但是如果代碼由成千上萬行甚至上億行,可想而知,會浪費很多時間,導致開發速度慢。而且,他不是跨平台的,編譯過后的代碼在不同操作系統上就無法執行。他的優點是運行快,因為一旦編譯成功,每次調用只需直接執行即可

  編譯型語言的代表:C語言、C++語言

  解釋型語言:當用戶寫完一段代碼需要執行的時候,由解釋器一段一段的解釋成計算機能看懂的二進制文件,然后直接執行。與編譯型語言不同的是,如果用戶寫的代碼出錯了,解釋器不需要從頭開始,這就會大大節省了開發時間。而且他是可以移植的,不同操作系統由不同的解釋器可以解釋他。他的缺點是執行速度慢,每次執行都需要一行一行的解釋。

  解釋型語言的代表:JavaScript、PHP、Python

2.2 動態語言與靜態語言

  動態語言:動態語言是指在運行的時候才去檢查一個變量的數據類型,寫程序的時候不需要先給一個變量指定類型。當第一次給變量賦值的時候,該語言會將該變量的數據類型存到內存當中。Python和Ruby就是典型的動態語言的代表。

  靜態語言:靜態語言是指程序在編譯的時候就要首先檢查每個變量的數據類型,所以用戶在寫程序之前就要首先聲明每個變量的數據類型。Java、C、C++都是靜態語言的代表。

2.3 強類型定義語言和弱類型定義語言

  強類型定義語言:一旦一個變量被賦值為一個數據類型,那么它將永遠為該數據類型,除非它被強制轉換(int()、str())。比如說 a = 1 那么之后在給 a 賦值的時候也必須為整形。

  弱類型定義語言:一個變量可以在不同的時候被賦予不同數據類型的值。所以,一個變量的數據類型可以被忽略。

綜上所述,Python是一種動態解釋型的強類型定義語言。

3、Python的優缺點

    優點:

    ▷ 優雅、明確、簡潔

    ▷ 可移植、可拓展、可潛入

    ▷ 開發效率高

    缺點:

    ▷ 運行速度慢 

    ▷ 代碼不能加密

    ▷ 不能多線程

4、Python的種類

   CPython

    當我們從Python官方網站下載並安裝好Python 3.6后,我們就直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,所以叫CPython。在命令行下運行python就是啟動CPython解釋器。

    CPython是使用最廣的Python解釋器。教程的所有代碼也都在CPython下執行。

  IPython

    IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執行Python代碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但內核其實都是調                 用了IE。

    CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。

   PyPy

    PyPy是另一個Python解釋器,它的目標是執行速度。PyPy采用JIT技術,對Python代碼進行動態編譯(注意不是解釋),所以可以顯著提高Python代碼的執行速度。

               絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執行可能會有不同的結果。

  Jython

    Jython是運行在Java平台上的Python解釋器,可以直接把Python代碼編譯成Java字節碼執行。

  IronPython

     IronPython和Jython類似,只不過IronPython是運行在微軟.Net平台上的Python解釋器,可以直接把Python代碼編譯成.Net的字節碼。

  小結:

    Python的解釋器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平台交互,最好的辦法不是用Jython或IronPython,而是通過網絡調用來交互,確保各程序之間的獨立性。

二、Python的環境配置   

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

三、Python基礎

1、編寫以及運行Python代碼的方法

  ▷ 在E盤創建一個文件名為test.py的文件,編寫代碼如下:

print("Hello World!")

  ▷ 按快捷鍵win+R打開運行窗口,然后輸入cmd打開命令行窗口。

    

    ▷在命令行窗口里輸入 python e:/test.py

    

    上圖可以看出,以及成功運行該文件代碼並且打印出“Hello World!”

2、內容編碼

  解釋器在執行代碼的時候,需要將代碼編譯成機器能讀懂的二進制碼(由1和0組成),而python2版本在編譯的時候默認以ASCII碼的格式進行轉換(也可以指定編碼格式),而python3版本在編譯的時候默認為utf-8格式進行轉換。

  ASCII(American Standard Code for Information Interchange,美國標准信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(一個字節),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個符號。

  然而,世界上的語言以及符號遠遠不止256個,所以當計算機傳入世界各國的時候ASCII碼已經不能滿足大家的使用了,於是出現了Unicode(統一碼、萬國碼、單一碼),Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一並且唯一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多

  但是問題來了,友誼Unicode至少2個字節,也就是16位,但是英文字母以及有些符號根本不需要這么多字節,所以統一用Unicode碼的話會大大浪費寶貴的內存空間,於是又出現了一種新的編碼:UTF-8.該編碼格式是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...

  所以,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),如果是如下代碼的話:

報錯:ascii碼無法表示中文

print('你好,世界!')

解決方法是,在代碼的首行加入以下代碼,用來指定編碼格式:

#-*- ecoding:utf-8 -*-
#這樣,就能成功執行並打印出中文“你好,世界!”了。

3、注釋

     單行注釋:# 被注釋內容

     多行注釋:'''被注釋內容''',或者"""被注釋內容"""

4、變量

    變量就是把程序運行的中間結果,存到內存中,以待調用

    ▷聲明變量 

1 # -*- coding: utf-8 -*-
2   
3 name = "fuyong"

上述代碼聲明了一個變量,變量名為: name,變量name的值為:"fuyong"

變量的作用:昵稱,其代指內存里某個地址中保存的內容

▷變量的命名規則

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

 

▷變量的賦值

變量的賦值其實是在內存中開辟一塊數據,然后將該數據指向變量名,這樣在調用變量名的時候就能找到該變量所對應的值。  

而如果將一個變量的值賦予給另一個變量,那么內存中還是只有一個數據值,只是將該數據指向了不同的兩個變量而已

5、常量  

    常量即指不變的量,如pai 3.141592653..., 或在程序運行過程中不會改變的量

    在Python中沒有一個專門的語法代表常量,程序員約定俗成用變量名全部大寫代表常量(實際上這個常量也是可以改變值的)

    :Bir_of_China = 1949          

6、用戶交互(input)

1 # -*- coding: utf-8 -*-
2   
3 # 將用戶輸入的內容賦值給 name 變量
4 name = input("請輸入用戶名:")
5 age = input('請輸入您的年齡')
6 # 打印輸入的內容
7 print(name,age)
#執行腳本就會發現,程序會等待你輸入姓名后再往下繼續走。

7、基礎數據類型

       ▷ int  整形
        在32位的機器上,int的長度為32為,范圍為 -2**31 -- 2**31-1
        在64位的機器上,int的長度為64位,范圍為 -2**63 -- 2**63-1

       ▷ long 長整型 (python3版本已經沒有該類型了,不管多長的數,全部為int類型)
        跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由於機器內存有限,我們使用的長整數數值不可能無限大。
        該類型不用用戶特別定義,當一個數字大到超過int數據類型的范圍后將自動轉化為long長整形。
        注意:python3版本沒有long型了,全部為int類型

       ▷ bool 布爾類型(True False)
        True :1 、 1==1 、 2>1 、type('a') == str 的結果均為True
        False:0 、 1!=1 、 2>3 等等的結果均為False

       ▷ str 字符串類型
        簡單一句話,在python中,加了引號的字符都被認為是字符串,哪怕他是一個數字(‘123’)
        
1 >>> name = "Alex Li" #雙引號
2 >>> age = "22"       #只要加引號就是字符串
3 >>> age2 = 22          #int
4 >>> 
5 >>> msg = '''My name is Alex, I am 22 years old!'''  #我擦,3個引號也可以
6 >>> 
7 >>> hometown = 'ShanDong'   #單引號也可以

 單引號雙引號以及三引號都可以表示字符串

 雙引號和單引號可以搭配使用,如下:

msg = "I'm a small birld"

三引號可以將一大段代碼賦值給一個變量,如下:

1 msg = '''
2 今天我想寫首小詩,
3 歌頌我的同桌,
4 你看他那烏黑的短發,
5 好像一只炸毛雞。
6 '''
7 print(msg)
字符串可以用 + 拼接,但是兩者必須都為字符串類型。如:
1 a = 'hello'
2 b = 'xiaomi'
3 c = a + b
4 print(c)

打印結果即為“helloxiaomi”

字符串也可以與一個數字相乘,結果是將該字符串連續輸入N遍,如:

  

print('xyz' * 3)

#輸出結果為‘xyzxyzxyz’

8、格式化輸出

現有一練習需求,問用戶的姓名、年齡、工作、愛好 ,然后打印成以下格式

------------ info of fuyong -----------
Name  : fuyong
Age   : 29 job : none Hobbie: girl ------------- end -----------------

我們該怎么實現呢?你會發現,用字符拼接的方式還難實現這種格式的輸出,所以一起來學一下新姿勢

只需要把要打印的格式先准備好, 由於里面的 一些信息是需要用戶輸入的,你沒辦法預設知道,因此可以先放置個占位符,再把字符串里的占位符與外部的變量做個映射關系就好啦

 1 name = input("請輸入您的姓名:")
 2 age =  input("請輸入您的年齡:") 3 job = input("請輸入您的工作:") 4 hobbie = input("請輸入您的愛好:") 5 6 info = ''' 7 ------------ info of %s ----------- #給一個占位符,等待傳入name的值 8 9 Name:%s #給一個占位符,等待傳入name的值 10 11 Age :%s #給一個占位符,等待傳入age的值 12 13 Job :%s #給一個占位符,等待傳入job的值 14 15 Hobbie:%s #給一個占位符,等待傳入hobbie的值 16 17 ------------- end ----------------- 18 19 ''' %(name,name,age,job,hobbie) # 符號%后的括號里的值與上面的幾個占為符號一一對應,將值分別傳入 20 21 print(info)

  注意:如果字符串里需要出現‘%’的時候,需要用轉義符號來實現,如:

msg = "我是%s,年齡%d,目前學習進度為80%%"%('金鑫',18)
print(msg)

 PS :

  ▷查看數據類型的方法為type()              如type(1) 的結果為int   type('a')的結果為str

       ▷如果一個變量位阿拉伯數字,則該數據可以在int類型與str類型之間互相轉換

9.基本運算符

      ▷算數運算

      

       ▷比較運算

      

       ▷賦值運算

      

       ▷邏輯運算

      

      注意:在沒有()的情況下,not的優先級大於and,and的優先級大於or。即 () > not > and > or 優先級相同的情況下從左向右計算

      

10、流程控制之判斷

在現實中,我們往往由很多種選擇,比如說走路遇到分叉口,我們只能選擇走一條路,程序也是一樣,如果遇到分支,就用if語句控制流程

if 條件判斷:   #條件判斷可以是比較運算,邏輯運算,以及布爾運算   
    執行語句
else: 執行語句

#注意:if 以及else 后都由一個分號 ':'
#   if 以及else 下面的一段執行語句必須縮進

 

name = input('請輸入用戶名:')
password = input('請輸入您的密碼') if name == 'fuyong' and password == '123': print('恭喜您,登錄成功') else: print('抱歉,用戶名或者密碼錯誤!')

if語句可以嵌套使用,如上面的代碼可以改為:

name = input('請輸入用戶名:')
password = input('請輸入您的密碼') if name == 'fuyong' : if password == '123' print('恭喜您,登錄成功') else: print('抱歉,用戶名或者密碼錯誤!') 

if else也可以由多個分支判斷,用elif表示,如:

num = input('請輸入一個數字'):

if num == 1: print("您選擇的是1號") elif num == 2: print("您選擇的是2號") elif num == 3: print('您選擇的是3號') else: print('輸入有誤,請在1、2、3中選擇')

11、流程控制之循環    

在寫程序的過程中,有時候我們需要一段代碼反復執行許多次,如果每次都重復寫很多次,代碼不但會占用很多篇幅,而且會變得非常不美觀,這不符合python的‘優雅、明確、簡潔’的宗旨,這個時候我們只需要用一個循環語句即可解決問題。格式為:

while 判斷條件: #與判斷語句if一樣,判斷條件可以是比較運算,邏輯運算,以及布爾運算   
  循環體 

我們通過判斷條件控制循環的次數,如

n = 0
while n < 3
    print("這段話將被執行3次") n = n+1

我們可以通過關鍵字break 、continue來終止循環

break是跳出整個循環,直接執行循環體外面的代碼

continue是跳出本次循環,重新返回循環的開頭

count = 0

while True: print("如果不是count,我就會一直打印下去,直到你的電腦爆炸為止") if count == 5: break count = count + 1

上面的例子可以看到,只要出現break,不管判斷條件是否依然為True,循環都要立即終止

 1 n = 0
 2 
 3 while n < 10: 4 5 n = n+1 6 7 if n == 4 : 8 9 continue 10 11 print(n,"就是不願意打印'4'") 12 13 14 

上面的代碼執行結果為

 1 1 就是不願意打印'4'
 2 2 就是不願意打印'4'
 3 3 就是不願意打印'4'
 4 5 就是不願意打印'4'
 5 6 就是不願意打印'4'
 6 7 就是不願意打印'4'
 7 8 就是不願意打印'4'
 8 9 就是不願意打印'4'
 9 10 就是不願意打印'4'
10 >>> 

上面的例子可以看出,出現了continue,就會跳出本次循環,但是還會跳到循環體的第一句,來判斷條件是否為True

 其他的語言中的else一般只與if搭配,而python中,else還可以搭配while,格式為:

1 while 條件判斷:
2 
3     循環體 4 else: 5 6     如果循環正常執行完畢,沒有被break終止,則會執行本段代碼

四、應用練習

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

 1 count = 0
 2 
 3 while count < 10: 4 5 count = count + 1 6 7 if count == 7: 8 continue 9 10 print(count)

2、求1-100的所有數的和

 1 count = 0
 2 
 3 sum = 0 4 5 while count < 100: 6 7 count = count + 1 8 9 sum = sum + count 10 11 print(sum)

3、輸出 1-100 內的所有奇數

 1 count = 0
 2 
 3 
 4 while count < 100: 5 6 count = count + 1 7 8 if count % 2 == 1: 9 print(count) 10 

4、輸出 1-100 內的所有偶數

 1 count = 0
 2 
 3 
 4 while count < 100: 5 6 count = count + 1 7 8 if count % 2 == 0: 9 print(count) 10 

5、求1-2+3-4+5 ... 99的所有數的和

 1 count = 0
 2 sum = 0 3 4 while count < 99: 5 6 count = count + 1 7 8 if count % 2 == 0: #如果是偶數的話,運算符號即為+ 9 sum = sum-count 10 11 else: 12 sum = sum + count#如果是奇數的話,運算符號即為- 13 14 print(sum) 15 

6、用戶登陸(三次機會重試)

 1 count = 0
 2 
 3 while True: 4 5 name = input('請輸入您的用戶名:') 6 password = input('請輸入您的密碼:') 7 8 if name == 'fuyong' and password == '123': 9 print('恭喜您,登錄成功!') 10 11 break 12 13 else: 14 print('用戶名或者密碼錯誤,請重新輸入:') 15 16 count = count + 1 17 18 if count == 3: 19 print('對不起,您以及輸入錯誤3次,登錄程序終止') 20 21 break

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM