1. 初識python
python是一門弱類型的解釋型高級編程語言
解釋器:
CPython 官方提供的默認解釋器. c語言實現的
PyPy 把python程序一次性進行編譯.
IPython
2. python的版本 2.x 3.x 3. 變量 概念: 程序運行過程當中產生的中間值. 暫時存儲在內存, 方便後面的程序使用它 就是一個符號. x = 10 郝建 -> 沈騰 白雲 -> 宋丹丹 命名規範: 1. 數字, 字母, 下劃線組成 2. 不能是數字開頭, 更不能是純數字 3. 不能用python的關鍵字 4. 不要用中文 5. 不要太長 6. 有意義 7. 區分大小寫 8. 用駝峯或者下劃線 數據類型: 1. int 整數 +-*/% // ** 2. str 字符串, 把字符連城串 字符:單一的文字符號 '', "", ''', """ + 拼接. 要求兩端都得是字符串 * 重複 必須乘以一個數字 3. bool 布爾值 True False 用來判斷 用戶交互 變量 = input(提示語) 條件判斷: if 條件: if-語句塊 if 條件: if-語句塊 else: else-語句塊 if 條件1: if-1 elif 條件2: if-2 ...... else:
1. while循環 (難點)
while 條件: 循環體(break, continue) 2. 格式化輸出
%s 萬能
%d f"{變量}" 3. 運算符 and or not (難點) 運算順序: ()=> not => and =>or 4. 初識編碼 gbk unicode utf-8 1. ascii 8bit 1byte(字節) 256個碼位 只用到了7bit, 用到了前128個 最前面的一位是0 2. 中國人本身對計算機編碼進行統計. 本身設計. 對ascii進行擴展 ANSI 16bit -> 清華同方 -> gbk GBK 放的是中文編碼. 16bit 2byte 兼容ascii 3. 對全部編碼進行統一. unicode. 萬國碼. 32bit. 4byte. 夠用了可是很浪費 4. utf-8 可變長度的unicode 英文: 1byte 歐洲文字: 2byte 中文: 3byte 字節(byte) 1byte = 8bit 1kb = 1024byte 1mb = 1024kb 1gb = 1024mb 1tb = 1024gb 1pb = 1024tb 預習: 字符串(記的東西) for循環
# 語法: while 條件: 結果
若是條件是真, 則直接執⾏結果. 而後再次判斷條件. 直到條件是假,停⽌循環html
那咱們怎麼終⽌循環呢? 結束循環:python
1,改變條件. 2,break面試
流程控制-break和continue算法
1, break: 馬上跳出循環. 打斷的意思編程
2, continue: 停⽌本次循環, 繼續執⾏下⼀次循環.編程語言
while True: content = input("請輸入你要噴的內容, 輸入Q退出") if content == "Q": # 退出程序 打斷循環 break # 直接跳出循環 print("你對打野說:", content) if True: print("娃哈哈") # 最多噴三次 count = 1 while count <= 3: # count = 1 # 次數, 死循環 content = input("請輸入你要噴的內容") print("你要對上單說:", content) # 改變count count = count + 1 # continue while True: content = input("請輸入你要噴的內容, 輸入Q退出") if content == "": continue # 中止當前本次循環. 繼續執行下一次循環 不會完全終止循環,只是中斷不會終止. if content == "Q": # 退出程序 打斷循環 break # 直接跳出循環 print("你對打野說:", content) # 可以讓循環退出: 1. break 2. 改變條件 # continue 中止當前本次循環. 繼續執行下一次循環 # break 完全的幹掉一個循環 # 讓程序從1數數, 數到100 count = 1 while count <= 100: print(count) # 1 count = count + 1 # 計算 1-100之間全部的數的和 sum = 0 # sum: 0 + 1 + 2 + 3 + 4....99 + 100 count = 1 # count: 1, 2, 3, 4, 99,100, 101 while count <= 100: sum = sum + count # 累加運算 count = count + 1 print(sum) # 數數. 1-100奇數 # 方法1 count = 1 while count <= 100: print(count) count = count + 2 # 方法2 count = 1 while count <= 100: if count % 2 == 1: print(count) else: print("偶數....") count = count + 1
補充1: while循環. 函數
while 條件: 循環體 else: 循環在正常狀況跳出以後會執⾏這⾥
# 栗子 index = 1 while index < 11: if index == 8: # break pass else: print(index) index = index+1 else:print("你好")
注意: 學習
若是循環是經過break退出的,那麼while後⾯的else將不會被執⾏, 只有在while條件判斷是假的時候纔會執⾏這個 else.編碼
pass: 不表⽰任何內容,爲了代碼的完整性,佔位⽽已 .spa
%s 字符串佔位符(可是全部的數據類型均可以使用)
%d 數字佔位符(只能int類型使用)
f"{變量}"
name = input("請輸入你的名字:") address = input("請輸入你來自哪裏:") wife = input("請輸入你的老婆:") notlike = input("請輸入你不喜歡的明星:") print("我叫"+name+", 我來自"+address+", 我老婆是"+wife+", 我不喜歡"+notlike) # 須要掌握的內容=============== # 格式化輸出 %s print("我叫%s, 我來自%s, 我老婆是%s, 我不喜歡%s" % (name, address, wife, notlike)) # 新版本的格式化輸出 print(f"我叫{name}, 我來自{address}, 我老婆是{wife}, 我不喜歡{notlike}") # 須要掌握的內容=============== hobby = "踢球" print("我喜歡%s, 我老婆更喜歡%s" % (hobby, hobby)) # %s 表示字符串的佔位 . 全能的佔位. print("周杰倫今年%s歲了" % 18) # %d 佔位數字. 只能放數字 print("周杰倫去年%d歲了" % 16) print("周杰倫去年%d歲了" % "16") # 報錯 # 坑, 若是這句話使用了格式化輸出. % 就是佔位, 若是想顯示正常的% %% 轉義 print("我叫%s, 我已經度過了30%的人生了" % "俞洪敏") # 報錯 not enough arguments for format string print("我叫%s, 我已經度過了30%%的人生了" % "俞洪敏")
注意:
在字符串中若是使⽤了%s這樣的佔位符,那麼全部的%都將變成佔位符,咱們須要使用%%來表示字符串中的%.
若是你的字符串中沒有使用過%s,%d佔位.,那麼不須要考慮這麼多, 該%就%.沒毛病老鐵.
print("我叫%s, 今年22歲了, 學習python2%%了" % '王尼瑪') # 有%佔位符 print("我叫王尼瑪, 今年22歲, 已經涼了100%了") # 沒有佔位符
什麼是運算符?舉個簡單的例子 4 +5 = 9 。 例子中,4 和 5 被稱爲操做數,"+" 稱爲運算符。
計算機能夠進⾏的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲:
算數運算、 比較運算、邏輯運算、 賦值運算、
成員運算、 身份運算、 位運算.
如下假設變量:a=10,b=20
注意:
// | 取整除 - 向下取接近除數的整數 | >>> 9//2 4 >>> -9//2 -5 |
如下假設變量:a=10,b=2
# 注意: print(3 <> 3) 2.x可使用, 3.x 不能 print(3 > = 3) # 報錯,>= 是個總體,不能分開
如下假設變量:a=10,b=20
1, 優先級關係爲 () > not > and > or
2, x or y , x爲真,值就是x,x爲假,值是y;
x and y, x爲真,值是y, x爲假,值是x。
#邏輯運算符 初級 ''' and : 而且. 左右兩端同時爲真. 結果才能是真 or : 或者. 左右兩端有一個是真. 結果就是真 not : 非. 非真即假, 非假即真 不真-> 假 不假 -> 真 混合運算順序: () => not => and => or 當出現相同的優先級的時候 從左往右算 ''' print(3 > 2 and 4 < 6 and 5 > 7) # False print(5 < 6 or 7 > 8 or 9 < 6 or 3 > 2) # True print(not 5 < 6) # False print(3 > 2 or 5 < 7 and 6 > 8 or 7 < 5) # True print(3 > 4 or 4 < 3 and 1 == 1) # False print(1 < 2 and 3 < 4 or 1 > 2) # True print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1) # True print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8) # False print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # False print((not 2 > 1 and 3 < 4) or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # False #邏輯運算符 進階 ''' 優先級依然是:() > not > and > or 當出現 x or y的時候, 判斷x是不是0 若是x==0 then y 不然返回x 當出現 x and y 的時候, 和or相反(or 要非0,and要0) 把False 當成0,True 當成1來看 ''' # 當出現 x or y的時候, 判斷x是不是0 若是x==0 then y 不然返回x print(1 or 2) # 1 print(0 or 2) # 2 print(3 or 0) # 3 print(4 or 0) # 4 print(0 or 3 or 0 or 2 or 0 or 5 or 0 or 188) # 3 # 當出現 x and y 的時候, 和or相反 print(1 and 2) # 2 print(0 and 3) # 0 print(3 and 0) # 0 print(4 and 0) # 0 print(9 and 3 and 4 and 1 and 4 and 8) # 8 print(1 and 2 or 3) # 應付面試 2 print(1 and 2 > 4) # False # False 當成0來看 print(False and 1) # False print(3 > 5 or 5 < 6 and 7) # 7 print(4 > 5 or 7 and 8 < 6 or 3 and 4) # 4 print(4>5 or (7 and 8<6) or (3 and 4)) #優先級順序依舊存在 4
# 成員運算 in # 栗子1 content = input("請輸入你的評論:") if "馬化騰" in content: # content中是否包含了xxx print("你的評論不合法") else: print("你的評論是合法的") # 栗子2 ad = input("請輸入你的廣告:") if "最" in ad or "第一" in ad or "全球" in ad: print("不合法的") else: print("合法的")
補充2:
in和not in 能夠判斷xxx字符串是否出如今xxxxx字符串中
content = input("請輸⼊你的評論") if "蒼⽼師" in content or '邱⽼師' in content: print('你輸⼊的內容不合法') else: print("評論成功")
身份運算符用於比較兩個對象的存儲單元
注: id() 函數用於獲取對象內存地址。
is 與 == 區別:
is 用於判斷兩個變量引用對象是否爲同一個, == 用於判斷引用變量的值是否相等。
>>>a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True
按位運算符是把數字看做二進制來進行計算的。Python中的按位運算法則以下:
下表中變量 a 爲 60,b 爲 13二進制格式以下:
a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001 ~a = 1100 0011
a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b; # 12 = 0000 1100 print ("1 - c 的值爲:", c) c = a | b; # 61 = 0011 1101 print ("2 - c 的值爲:", c) c = a ^ b; # 49 = 0011 0001 print ("3 - c 的值爲:", c) c = ~a; # -61 = 1100 0011 print ("4 - c 的值爲:", c) c = a << 2; # 240 = 1111 0000 print ("5 - c 的值爲:", c) c = a >> 2; # 15 = 0000 1111 print ("6 - c 的值爲:", c) # 以上實例輸出結果: 1 - c 的值爲: 12 2 - c 的值爲: 61 3 - c 的值爲: 49 4 - c 的值爲: -61 5 - c 的值爲: 240 6 - c 的值爲: 15
結果小技巧:
取反: ~ ==> ~n ==> -(n+1) 左移:<< ==> a<<b ==> a * 2b 右移:>> ==> a>>b ==> a // 2b
python2解釋器在加載 .py ⽂件中的代碼時,會對內容進⾏編碼(默認ascill),⽽python3對內容進⾏編碼的默認爲utf- 8。
計算機:
早期. 計算機是美國發明的. 普及率不不高, ⼀般只是在美國使用. 因此. 最先的編碼結構就是按照美國人的習慣來編碼 的. 對應數字+字母+特殊字符⼀共也沒多少. 因此就造成了了最先的編碼ASCII碼. 直到今天ASCII依然深深的影響着咱們.
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的⼀套電 腦編碼系統,主要⽤於顯示現代英語和其餘⻄歐語言,其最多隻能用 8 位來表示(⼀個字節),即:2**8 = 256,所 以,ASCII碼最多隻能表示 256 個符號。 ASCII碼對照表
隨着計算機的發展. 以及普及率的提升. 流⾏到歐洲和亞洲. 這時ASCII碼就不合適了. ⽐如: 中⽂漢字有⼏萬個. ⽽ASCII 最多也就256個位置. 因此ASCII不行了. 怎麼辦呢? 這時, 不一樣的國家就提出了不同的編碼用來適用於各自的語⾔環境. ⽐如, 中國的GBK, GB2312, BIG5, ISO-8859-1等等. 這時各個國家均可以使⽤計算機了.
GBK, 國標碼佔用2個字節. 對應ASCII碼 GBK直接兼容. 由於計算機底層是用英文寫的. 你不⽀持英文確定不行. ⽽英文已經使用了了ASCII碼. 因此GBK要兼容ASCII.
這⾥GBK國標碼. 前⾯的ASCII碼部分. 因爲使用兩個字節. 因此對於ASCII碼而言. 前9位都是0 (由於原來8位的ASCII 碼中的最高位是0,留做擴展使用的)
字母A:0100 0001 # ASCII 字母A:0000 0000 0100 0001 # 國標碼
國標碼的弊端: 只能中國用. ⽇本就垮了. 因此國標碼不知足咱們的使用. 這時提出了一個萬國碼Unicode. unicode一 開始設計是每一個字符兩個字節. 設計完了. 發現我大中國漢字依然沒法進行編碼. 只能進行擴充. 擴充成32位也就是4個字 節. 這回夠了. 可是. 問題來了. 中國字9萬多. 而unicode能夠表示40多億. 根本用不了. 太浪費了. 因而乎, 就提出了了新的 UTF編碼.可變⻓度編碼
UTF-8: 每一個字符最少佔8位. 每一個字符佔用的字節數不定.根據⽂字內容進行具體編碼. 好比. 英文. 就一個字節就夠了. 漢 字佔3個字節. 這時即知足了中文. 也滿⾜了節約. 也是目前使用頻率最高的一種編碼
UTF-16: 每一個字符最少佔16位.
GBK: 每一個字符佔2個字節, 16位.
小結:(上面是發展歷史,咱們記住結論就行啦)
# 初識編碼 ascii ==> gbk ==> unicode ==> utf-8 1. ascii 8bit 1byte(字節) 256個碼位 只用到了7bit, 用到了前128個 最前面的一位是0 2. 中國人本身對計算機編碼進行統計. 本身設計. 對ascii進行擴展 ANSI 16bit -> 清華同方 -> gbk GBK 放的是中文編碼. 16bit 2byte 兼容ascii 3. 對全部編碼進行統一. unicode. 萬國碼. 32bit. 4byte. 夠用了可是很浪費 4. utf-8 可變長度的unicode 英文: 1byte 歐洲文字: 2byte 中文: 3byte
8bit = 1byte 1024byte = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB 1024PB = 1EB 1024EB = 1ZB 1024ZB = 1YB 1024YB = 1NB 1024NB = 1DB 經常使用到TB就夠了