Python2.x 與Python 3.x的不一樣&Python基礎介紹

一、python的出生和應用java

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

(龜叔:2005年加入谷歌至2012年,2013年加入Dropbox直到如今,依然掌握着Python發展的核心方向,被稱爲仁慈的獨裁者)。編程

  2017年7月的TIOBE排行榜,Python已經佔據第四的位置, Python崇尚優美、清晰、簡單,是一個優秀並普遍使用的語言。python2.7

二、Python2.x 與Python 3.x的不一樣編程語言

第1處不一樣:學習

Python2.x:源碼重複,不規範,並且python2.7到2020年將再也不更新維護ui

python3x:整合源碼,更清晰簡單優美。編碼

第2處不一樣:spa

Python2x:默認的編碼是ascii(ascii碼只有英文、數字、字符),解決方式:# -*- encoding:utf-8 -*-操作系統

Python3x:默認的編碼是utf-8

指定解釋器: #!/usr/bin/env python
# -*- encoding:utf-8 -*-

第3處不一樣:

Python2x:有long、int類型(print 'abc'   print('abc') 這兩種方式都支持)

Python3x:沒有long、int類型(print('abc'))

第4處不一樣:

Python2x:raw_input()   input() 只能輸入數字類型

Python3x:input 

備註:input 出來的數據類型所有是字符串。

三、python語言的劃分&Python分類

python語言的劃分:

編譯型:將你的代碼一次性所有編譯成二進制,而後在運行。
缺點:開發效率低,不能跨平臺。
優勢:執行效率高。
表明:c語言

解釋型:當程序開始運行時,將代碼一行一行的解釋成二進制,執行。
缺點:執行效率低。
優勢:開發效率高,能夠跨品臺。
表明:python語言

 

python分類:咱們學習的就是cpython

 

                                                        python規則

cpython   jpython    其餘語言python      pypy :將你的代碼一次性轉換成字節碼010101這種方式傳給操做系統

cpython   轉換成c語言的字節碼010110,傳給操做系統。  jpython轉換成java的字節碼傳給操做系統。       

                                                        操做系統

 

四、變量&常量

4.一、變量是什麼?

變量:把程序運行的中間結果臨時的存到內存裏,以便後續的代碼調用。

4.二、變量定義的規則

變量名只能是字母、數字或者下劃線的任意組合,變量名的第一個字符不能是數字,關鍵字不能聲明爲變量名

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

4.三、常量

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

舉例:常量通常是大寫,放到內容的頂部:AGE_OF_OLDBOY = 56(約定俗成所有大寫的變量爲常量。放到文件最上面。)

五、註釋

單行註釋:#

多行註釋:‘’‘被註釋的內容 ’‘’

六、基礎數據類型

什麼是數據類型?

  咱們人類能夠很容易的分清數字與字符的區別,可是計算機並不能呀,計算機雖然很強大,但從某種角度上看又很傻,除非你明確的告訴它,1是數字,「漢」是文字,不然它是分不清1和‘漢’的區別的,所以,在每一個編程語言裏都會有一個叫數據類型的東東,其實就是對經常使用的各類數據類型進行了明確的劃分,你想讓計算機進行數值運算,你就傳數字給它,你想讓他處理文字,就傳字符串類型給他。Python中經常使用的數據類型有多種,今天咱們暫只講3種, 數字、字符串、布爾類型

6.一、整數類型(int)。

int(整型)

在32位機器上,整數的位數爲32位,取值範圍爲-2**31~2**31-1,即-2147483648~2147483647

在64位系統上,整數的位數爲64位,取值範圍爲-2**63~2**63-1,即-9223372036854775808~9223372036854775807

long(長整型)

跟C語言不一樣,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上因爲機器內存有限,咱們使用的長整數數值不可能無限大。

注意,自從Python2.2起,若是整數發生溢出,Python會自動將整數數據轉換爲長整數,因此現在在長整數數據後面不加字母L也不會致使嚴重後果了。

注意:在Python3裏再也不有long類型了,全都是int

6.二、字符串類型(str)。

在Python中,加了引號的字符都被認爲是字符串!

那單引號、雙引號、多引號有什麼區別呢? 讓我大聲告訴你,單雙引號木有任何區別,只有下面這種狀況 你須要考慮單雙的配合

msg = "My name is Alex , I'm 22 years old!" 

多引號什麼做用呢?做用就是多行字符串必須用多引號

 
msg = '''
今天我想寫首小詩,
歌頌個人同桌,
你看他那烏黑的短髮,
好像一隻炸毛雞。
'''
print(msg)

 字符串拼接:字符串能夠相加、相乘,不能夠減和除

6.三、布爾值(True,False)

布爾類型很簡單,就兩個值 ,一個True(真),一個False(假), 主要用記邏輯判斷

七、格式化輸出(2種方法,一個注意事項)

第一種方法:

#格式化輸出 %表示佔位符(想替換哪兒,把%符佔住)  後面接:s  d(s表明字符串str,d表明數字類型)
#ps str -- > int str所有由數字組成 ‘1234’ (字符串轉換成數字,前提str所有由數字組成)
#ps int -- > str str(int) (整型轉換誠字符串)
#第一種表現形式:(input用戶交互)
# name = input('請輸入你的名字:')
# age = input('請輸入你的年齡:')
# job = input('請輸入你的工做:')
# hobby = input('請輸入你的愛好:')
# msg1 = ''' ------------ info of %s -----------
# Name : %s
# Age : %d
# job : %s
# Hobbie: %s
# ------------- end -----------------
# ''' % (name,name,int(age),job,hobby)
# print(msg1)

#第二種方法:
# dic = {'name':'老男孩','age':45,'job':'Teacher','hobby':'吹'}
# msg1 = ''' ------------ info of %(name)s -----------
# Name : %(name)s
# Age : %(age)d
# job : %(job)s
# Hobbie: %(hobby)s
# ------------- end -----------------
# ''' % dic
# print(msg1)
# msg2 = '我叫%s,今年%s,學習進度5%%' % ('太白',23)
# print(msg2)

#注意事項:
5%這裏面的%必須再加一個,由於這樣就轉義了,否則會默認成是佔位符,年齡%d和%s均可以,由於若是寫成是字符串,數字也能夠能替換
msg1='個人名字是%s,個人年齡是%d,學習進度是5%%' % ('小燕子',25)
print(msg1)
個人名字是小燕子,個人年齡是25,學習進度是5%




現有一練習需求,問用戶的姓名、年齡、工做、愛好 ,而後打印成如下格式

複製代碼
------------ info of Alex Li -----------
Name  : Alex Li
Age   : 22
job   : Teacher
Hobbie: girl
------------- end -----------------
複製代碼

你怎麼實現呢?你會發現,用字符拼接的方式還難實現這種格式的輸出,因此一塊兒來學一下新姿式

只須要把要打印的格式先準備好, 因爲裏面的 一些信息是須要用戶輸入的,你沒辦法預設知道,所以能夠先放置個佔位符,再把字符串裏的佔位符與外部的變量作個映射關係就好啦

複製代碼
name = input("Name:")
age = input("Age:")
job = input("Job:")
hobbie = input("Hobbie:")

info = '''
------------ info of %s ----------- #這裏的每一個%s就是一個佔位符,本行的表明 後面拓號裏的 name 
Name  : %s  #表明 name 
Age   : %s  #表明 age  
job   : %s  #表明 job 
Hobbie: %s  #表明 hobbie 
------------- end -----------------
''' %(name,name,age,job,hobbie)  # 這行的 % 號就是 把前面的字符串 與拓號 後面的 變量 關聯起來 

print(info)
複製代碼

%s就是表明字符串佔位符,除此以外,還有%d,是數字佔位符, 若是把上面的age後面的換成%d,就表明你必須只能輸入數字啦

age     : %d

咱們運行一下,可是發現出錯了。。。

說%d須要一個數字,而不是str, what? 咱們明明輸入的是數字呀,22,22呀。

不用擔憂 ,不要相信你的眼睛咱們調試一下,看看輸入的究竟是不是數字呢?怎麼看呢?查看數據類型的方法是什麼來着?type()

name = input("Name:")
age = input("Age:")
print(type(age))

執行輸出是

Name:Alex
Age:22
<class 'str'> #怎麼會是str
Job:IT

讓我大聲告訴你,input接收的全部輸入默認都是字符串格式!

要想程序不出錯,那怎麼辦呢?簡單,你能夠把str轉成int

age = int(  input("Age:")  )
print(type(age))

確定沒問題了。相反,能不能把字符串轉成數字呢?必然能夠,str( yourStr )

問題:如今有這麼行代碼

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

這樣會報錯的,由於在格式化輸出裏,你出現%默認爲就是佔位符的%,可是我想在上面一條語句中最後的80%就是表示80%而不是佔位符,怎麼辦?

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

這樣就能夠了,第一個%是對第二個%的轉譯,告訴Python解釋器這只是一個單純的%,而不是佔位符。

八、基本運算符

運算符

  計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算

算數運算

如下假設變量:a=10,b=20

比較運算

如下假設變量:a=10,b=20

賦值運算

如下假設變量:a=10,b=20

邏輯運算

針對邏輯運算的進一步研究:

  1,在沒有()的狀況下not 優先級高於 and,and優先級高於or,即優先級關係爲( )>not>and>or,同一優先級從左往右計算。

例題:

判斷下列邏輯語句的True,False。

複製代碼
1,3>4 or 4<3 and 1==1
2,1 < 2 and 3 < 4 or 1>2 
3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
複製代碼

  2 ,  x or y , x爲真,值就是x,x爲假,值是y;

             x and y, x爲真,值是y,x爲假,值是x。

 

例題:求出下列邏輯語句的值。

8 or 4
0 and 3
0 or 4 and 3 or 7 or 9 and 6

in,not in :

判斷子元素是否在原字符串(字典,列表,集合)中:

例如:

#print('喜歡' in 'dkfljadklf喜歡hfjdkas')
#print('a' in 'bcvd')
#print('y' not in 'ofkjdslaf')

 九、if語句:(5種)

格式:
if 條件:
結果

第1種:
# if 2 > 1 :
# print(666)
第2種:
# if 2 < 1:
# print(666)
# else:
# print(555)

第3種:
#3 多種條件選一個結果
# num = int(input('猜一下數字:'))
# if num == 6:
# print('請你吃飯')
# elif num == 3:
# print('請你喝酒')
# elif num == 1:
# print('請你大保健')

第4種:
4 多種條件必選一個結果
# num = int(input('猜一下數字:'))
# if num == 6:
# print('請你吃飯')
# elif num == 3:
# print('請你喝酒')
# elif num == 1:
# print('請你大保健')
# else:
# print('沒機會了.....')

十、while循環(無限循環)
格式:
while 條件:
結果
例子:
# while True:
# print('涼涼')
# print('鬥地主')
# print('社會搖')

如何終止循環:
一、改變while後面的條件 二、使用break
# count = 1
# while count <= 100:
# print(count)
# count = count + 1

# count = 1
# flag = True
# while flag:
# print(count)
# count = count + 1
# if count == 101:
# flag = False

# count = 1
# sum = 0
# while count < 101:
# sum = sum +count
# count += 1
# print(sum)


#while 關鍵字:break,continue
#break 結束循環。
#continue 跳出本次循環,繼續下一次循環。
# while True:
# print(333)
# print(5455)
# print(222)
# break
# print(888)
# print(666)

# while True:
# print(333)
# print(222)
# continue
# print(888)
# print(666)


#while else:若是while循環,被break打斷,則不走else
# count = 1
# while count < 5:
# print(count)
# count += 1
# else:
# print('循環正常完畢')
十一、邏輯運算符
#邏輯運算符
#運算符計算順序:() > not > and > or
#先後都是比較運算 2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
# print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) # True
# print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # False
#先後都是數字
'''x or y if x is True,return x,else return y 備註:and的運算與之相反
int ---> bool 非0爲True,0爲Flase
'''
# print(3 or 2)
# print(2 or 6)
# print(0 or 6)
# print(3 and 5)
結果爲:

3
2
6
5

# print(1 > 2 or 3 and 4 > 5)  結果爲:False

十二、for循環(有限循環)
#dict
dic = {'name':'alex','age':12,'python21':['張三','李四']}
# print(dic['name'])
#list: []
# li = [1,2,3,'alex']
# print(li[3])
#for 循環 有限循環。
li = [1,2,3,'alex']
s = 'fdsagfdagasd'
# for i in s:
# print(i)
# for i in s:
# if i == 'a':pass
# print(i)
# else:
# print(666)
'''
 

1三、初始編碼。(中國漢字有九萬多,不到十萬)
電報:滴滴滴 滴滴 滴
電腦:存儲文件,傳輸文件,010101010
asiic:8位 == 1個字節 ,表示一個字符。(你看到的內容的最小組成元素就是一個字符)  ,ascii碼最多隻能表示256種可能。
A: 01000001

萬國碼:unicode 把全部國家的語言包含進去。(65536種可能)
A : 01000001 01000001 兩個字節表示一個字符。
中:01000101 01000001 兩個字節表示一個字符。
萬國碼改版:(2**32種可能,全部文字都包含,可是目前的全球才2**21種可能,因此資源浪費)
A : 01000001 01000001 01000001 01000001 四個字節表示一個字符。
中: 01000101 01000001 01000101 01000001 四個字節表示一個字符。
存在問題:浪費資源。


unicode升級成utf-8
utf-8:最少用8位表示一個字節。
A: 01000001 一個字節
歐洲文字:01000001 01000001 兩個字節
亞洲:中:01000001 01000001 01000001 三個字節.
utf-16 最少用16位表示一個字符。

gbk:國標。(只針對中國的文字)
A: 01000001 一個字節
中:01000101 01000001 兩個字節表示一個字符。

單位的轉化:
8bit 1bytes
1024bytes == 1kb
1024kb == 1mb
1024mb == 1Gb
1024Gb == 1Tb

 


密碼本:中文與二進制的對照本
走 00000001
新 00000101
開 00010101
一 00001011
家 00000011

001001001001001001001001001001

 


1四、基礎數據類型的簡單介紹。
dict:{'name':'alex','age':12,'python21':['張三','李四....']}
鍵:int,bool,str,tuple().
dic = {'name':'alex','age':12,'python21':['張三','李四....']}
dic['name']




課後做業:
#用戶登錄(三次機會重試)#input username password#while i#能夠支持多用戶登陸li = [{'username':'alex','password':'SB'},    {'username':'wusir','password':'sb'},    {'username':'taibai','password':'男神'},      ]#客戶輸入了三次機會,都沒成功,給它一個選擇,讓它在試試# Y 再給他三次機會...不輸入了,print('臭不要臉.....')# dic = {True:'alex',False:'SB'}# dic = {(1,2,3):'alex',(2,3):'SB'}# dic[(1,2,3)]
相關文章
相關標籤/搜索