Python入門基礎一

一、Python介紹

Python的創始人是吉多?范羅蘇姆。1989年圣誕節期間為打發時間決心開發一個新的解釋程序,作為ABC語言的一種繼承。
Python的應用廣泛及重要性不再多說,總之,人生苦短,我用Python!

Python是什么語言呢?

編程語言主要從以下幾個角度進行分類,編譯型和解釋型,靜態語言和動態語言,強類型語言和弱類型語言。


編譯VS解釋.png
編譯型VS解釋型

編譯型
優點:編譯器一般會有預編譯的過程對代碼進行優化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高。可以脫離語言環境獨立運行。
缺點:編譯之后如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據不同的操作系統環境編譯不同的可執行文件。

解釋型
優點:有良好的平臺兼容性,在任何環境中都可以運行,前提是安裝了解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。

動態語言和靜態語言

通常我們說的動態語言、靜態語言是指動態類型語言和靜態類型語言。
動態類型語言:動態類型語言是指運行期間才去做數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時在內部將數據類型記錄下來。Python就是典型的動態類型語言。

靜態類型語言:靜態類型語言與動態類型語言剛好相反,他的數據類型實在編譯期間檢查的,也就是說在寫程序時要聲明所以變量的數據類型,C/C++是靜態語言的典型代表。

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

強類型定義語言:強制數據類型定義的語言,也就是說,一旦一個變量被指定了某個數據類型,如果不經過強制轉換,那么它就永遠是這個數據類型了。舉個例子:如果你定義了一個整型變量a,那么程序根本不可能將a當做字符串處理,強類型定義語言是類型安全的語言。

弱類型定義語言:數據類型可以被忽略的語言,他與強類型定義語言相反,一個變量可以賦不同數據類類型的值。

強類型語言在速度上可能略遜于弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。

通過上邊的知識我們可以知道,Python是一門動態解釋性的強類型定義語言

Python的優缺點

優點:
1、Python的定位就是“優雅”、“明確”、“簡單”。
2、三方庫強大,開發效率高。
3、高級語言——無需考慮諸如如何管理你的程序使用的內存一類底層細節
4、可移植性
5、可擴展性——如需要某段關鍵代碼運行更快或不公開,可把部分程序用C或C++編寫,在Python程序中使用。
6、可嵌入性。

缺點
1、速度慢
2、代碼不能加密
3、線程不能利用多CPU。GIL即全局解釋器鎖,是計算機程序設計語言解釋器用于同步線程的工具,使得任何時刻僅有一個線程在執行,Python的線程是操作系統的原生線程。

注:開發工具使用PyCharm

二、輸入輸出

Python中輸出使用'print()',在括號中可以寫入想要輸出的內容
print('Helllo , world')
Python中input()函數可以讓用戶輸入并存放到一個變量里

>>> name = input()
Michael
>>> name
'Michael'

注:
Python2.x中raw_input相當于Python3.x中的input
Python2.x中不要用input

那什么是變量?

三、變量

聲明變量

name = "LZ"
上述代碼聲明了一個變量,變量名為:name ,變量name的值為:“LZ”
變量定義的規則:
?變量名只能是字母、數字、下劃線的任意組合
?變量名的第一個字符不能為數字
?以下關鍵字不能聲明為變量名
['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、age
如果單詞較多可用下劃線,如:name_of_dog

變量賦值
  a = "ABC"
  b = a
  a = "XYZ"
  print(b)

執行a=‘ABC’,解釋器創建了字符串’ABC’和變量a,并把a指向’ABC’:



執行b=a,解釋器創建了變量b,并把b指向a指向的字符串’ABC’:



執行’a=‘XYZ’’,解釋器創建例如字符串’XYZ’,并把a的指向改為’XYZ’,但b并沒有更改:

所以打印b變量是abc。

空值

空值是Python中一個特殊的值,用None表示。None不能理解為0,因為0是有意義的而None是一個特殊的空值。

代碼注釋

當行注釋用:#
多行注釋用:’’’ ’’’

編碼問題

Python2.x中如果有中文需要在文件開頭
# -*- coding: utf-8 -*-
Python3.x中默認引入,所以直接就可表示中文

四、數據類型初識

數字

int(整型)
  在32位機器上,整數的位數為32位,取值范圍為-231~231-1,即-2147483648~2147483647
  在64位系統上,整數的位數為64位,取值范圍為-263~263-1,即-9223372036854775808~9223372036854775807
long(長整型)
  跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由于機器內存有限,我們使用的長整數數值不可能無限大。
  注意,自從Python2.2起,如果整數發生溢出,Python會自動將整數數據轉換為長整數,所以如今在長整數數據后面不加字母L也不會導致嚴重后果了。
float(浮點型)
  浮點數用來處理實數,即帶有小數的數字。類似于C語言中的double類型,占8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
complex(復數)
  復數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是復數的實數部分,y是復數的虛數部分,這里的x和y都是實數。
注:Python中存在小數字池:-5 ~ 257

布爾值

一個布爾值只有True、False兩種值,要么是True,要么是False。在Python中可以直接用True、False表示布爾值(注意大小寫),也可以通過布爾運算and 、or、和not 計算出來。
布爾運算在計算機中用來做條件判斷,根據計算結果為True或False,計算機可以自動執行不同的后續代碼。

a = True
print a and 'a=T' or 'a=F’

輸出結果是字符串’a=T’。
解釋:Python把0、空字符串和None看成False,去他數值和非空字符串都看成True。
and 和 or 運算的一條重要法則:短路計算

  1. 在計算 a and b 時,如果 a 是 False,則根據與運算法則,整個結果必定為 False,因此返回 a;如果 a 是 True,則整個計算結果必定取決與 b,因此返回 b。
  2. 在計算 a or b 時,如果 a 是 True,則根據或運算法則,整個計算結果必定為 True,因此返回 a;如果 a 是 False,則整個計算結果必定取決于 b,因此返回 b。
字符串

字符串可以用單引號''或雙引號”"括起來表示。如果字符串中含有 ‘ ,比如 I’m OK.我們用雙引號括起來表示。類似的,如果字符串中有雙引號,我們就用單引號括起來表示。
如果字符串中既包含雙引號又包含單引號,就需要對字符串的某些字符進行“轉義”,Python字符串用 \ 進行轉義。
要表示字符串 Bob said "I'm OK”.
由于 ' 和 " 會引起歧義,因此,我們在它前面插入一個 \ 表示這是一個普通字符,不代表字符串的起始,因此,這個字符串又可以表示為 'Bob said "I'm OK\”.'
計算字符串的字符數用len()函數
注意:轉義字符 \ 不計入字符串的內容中。
常用轉義符:\n換行 \t 制表符 \表示 \ 字符本身
PS: 字符串是 %s;整數 %d;浮點數%f

列表

Python內置的一種數據類型是列表list,list是一種有序的結合,可以隨時添加和刪除其中元素。
構造list很簡單,直接用[ ]把list的所有元素都括起來就是一個list對象。
由于Python是動態語言,所以list中包含的元素并不要求都必須是同一數據類型。
L = ['Michael', 100, True]
一個元素都沒有的list就是空list。empty_list = []
len()函數可以獲得list元素的個數。
用索引來訪問list中每一個位置的元素,索引是從0開始的。

>>> L[0]
'Michael'
>>> L[1]
100

索引可以使用負數,例如可以用L(-1)來獲得最后一個元素。
當索引超出范圍時Python會報一個IndexError的錯誤。
list是一個可變的有序表,所以可以往list中追加元素到末尾:

>>> L.append('Adam')
>>> L
 ['Michael', 100, True, 'Adam']

刪除末尾的元素:

>>> L.pop('Adam')
>>> L
 ['Michael', 100, True]

刪除指定位置的元素:

>>> L.pop(1)
100
>>> L
 ['Michael',  True]

替換某個元素:

>>> L(1)='haha'
>>> L
 ['Michael',  'haha']

list中元素也可以是list
s = ['python', 'java', ['asp', 'php'], 'scheme']
想獲得'asp'可以用s[2][0]獲得。

元組

tuple是另一種有序列表,中文翻譯為元組。tuple和list非常相似,但是tuple一旦創建完畢就不能修改了。
創建tuple和和創建list唯一不同之處就是用( )代替[ ].
tuple和list一樣可以包含0個、1個和任意多個元素。
包含0個元素的tuple就是空tuple,t=()。
創建一個元素的tuple時,因為小括號既可以表示tuple又可以作為括號表示運算的優先級所以t=(1)被Python解釋器計算結果是1而不是tuple。所以Python規定,單元素tuple要多加一個逗號這樣就避免了歧義:t=(1,)
元組中的元素如果是列表,列表中元素是可變的。

字典
d={
    'LZ':95,
    'SY':86,
    'HB':90
}

用花括號{}表示一個字典,冒號之前叫key,之后叫value.
字典是一個無序的集合。
可以根據key查找相應的value

>>>d['LZ']
95

如果key不存在就會報錯,可以通過in判斷是否存在

>>>'haha' in d
False

還可以通過dict提供的get方法,如果key不存在可以返回None或自己指定value

>>> d.get('haha')
>>> d.get('haha', 100)
100

刪除一個key用pop(key),對應的value也會刪除

>>> d.pop('haha')
100
>>> d
{ 'LZ':95, 'SY':86,'HB':90}

注:key不能為可變對象

set

set和dict類似,也是一組key的集合,但不存儲value。由于key不能重復,所以,在set中,沒有重復的key。
要創建一個set,需要提供一個list作為輸入集合:

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

重復元素在set中自動被過濾:

>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}

通過add(key)方法可以添加元素到set中,可以重復添加,但不會有效果:

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}

通過remove(key)方法可以刪除元素:

>>> s.remove(4)
>>> s
{1, 2, 3}

set可以看成數學意義上的無序和無重復元素的集合,因此,兩個set可以做數學意義上的交集、并集等操作:

>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

set和dict的唯一區別僅在于沒有存儲對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變對象。

格式化
name=input("name=")
age=input("age=")
job=input("job=")

info='''
   --------info of %s--------
   name:%s
   age:%s
   job:%s
'''%(name,name,age,job)
# print(info)

info2='''
   ---------info of {_name} ---------
   name:{_name}
   age:{_age}
   job:{_job}
'''.format(
        _name=name,
        _age=age,
        _job=job

)
# print(info2)

info3='''
   ---------info of {0}--------
   name:{0}
   age:{1}
   job:{2}
'''.format(name,age,job)
print(info3)

%運算符就是用來格式化字符串的,在字符串內部有幾個%s后邊就對應幾個變量或值,順序要對應好。
常用的占位符:%d ---整數 %f---浮點數 %s---字符串 %x---十六進制整數

五、數據運算

算數運算
算數運算.png
比較運算
比較運算
邏輯運算
邏輯運算
賦值運算
賦值運算
成員運算
成員運算
身份運算
身份運算
位運算
位運算

六、判斷表達式 if ···elif···else···

#給定一個年齡
#讓用戶輸入一個年齡,與給定的進行判斷
ge_of_mine=15
guess_age= int (input("guess_age="))
if guess_age==age_of_mine:
    print("yes,you got it")

elif guess_age>age_of_mine:
    print("think smaller")

else:
    print("think older")

七、循環

for循環
#簡單的循環輸出
for i in range(10):
      print (i)
#從1開始,隔一個數打印一個,10以內
for i in range(1,10,2):
      print(i)
While循環
count = 0
while True:
     print(count)
     count +=1

continue:跳出當前本次循環,進行下一次循環
break:直接跳出整個循環

八、循環及條件判斷綜合運用

#猜年齡,最多猜三次
age_of_mine=15

for i in range(3):

    guess_age = int(input("guess_age="))

    if guess_age == age_of_mine:
        print("yes,you got it")
        break

    elif guess_age > age_of_mine:
        print("think smaller")

    else:
        print("think older")


else:
    print("you have tried too many times...fuck off")

繼續學習,持續更新。。。。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374

推薦閱讀更多精彩內容

  • 一、python 變量和數據類型 1.整數 Python可以處理任意大小的整數,當然包括負整數,在Python程序...
    績重KF閱讀 1,749評論 0 1
  • 最近在慕課網學習廖雪峰老師的Python進階課程,做筆記總結一下重點。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,725評論 0 5
  • http://python.jobbole.com/85231/ 關于專業技能寫完項目接著寫寫一名3年工作經驗的J...
    燕京博士閱讀 7,603評論 1 118
  • Python 簡介Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。Python 的設...
    在暴風雨中逆襲閱讀 1,737評論 0 12
  • 本教程基于Python 3,參考 A Byte of Python v1.92(for Python 3.0) 以...
    yuhuan121閱讀 3,085評論 1 6