開發工具 pycharm
功能:
,後兩個功能須要用professional版(收費)
用它建立文件夾 --Directory,建立文件 --Python File.。 console,terminal,run,debuge功能區
個人安裝過程:
官網進入,點擊download,兩個版本,先
選擇community 下載
安裝選項,Create Associations是否關聯文件,選擇之後打開.py文件就會用PyCharm打開。Create Desktop Shortcut建立桌面快捷方式,一個32位,一個64位,64位系統選擇64位。勾選Download and install JRE x86 by JetBrains,會下載安裝JetBrains版的x86 JRE運行環境,沒有安裝的,能夠選擇勾選。
問題:我沒選下載JRE,之前安裝java 時候裝過,如今還須要麼?
2018/6/13-6/15
熟練pycharm和完成第一章做業
列表list 數據類型-數據集
1,建立
使用[] 、‘’單引號或雙引號 和,
2.查詢
len()可查看列表長度 len(L2)
3,
切片 取列表中間的一部分
L2[0:3] 0和3中間爲冒號,表示取列表中序列從0到2的值 ['a','b','c'](顧頭不顧尾),也可寫爲L2[:3]從頭取冒號前面可不寫,從尾取,冒號後面可不寫,如 L2[-3:] 的值爲 ['e',1,2]
方括號還可使用第二個冒號,表示步長。如 L2[:3:2] 的值爲 ['a','c'] 每兩個/隔一個取值
4,增長,修改,刪除元素
追加
.append('') 一個參數 如L2.append('3')會
加到L2結尾
插入
.insert(index,'') 兩個參數如 L2.insert(0,3) 將3加入索引爲0的位置
修改
直接賦值 如
L2[2]=3
則L2變爲 ['a','b',3,'d','a','e',1,2]
批量修改
L2[1:3] = 'AB CD' 左右兩邊的數量能夠不一致,能夠將後邊全部元素放到左邊所選的位置,可能會增長或減小列表數量 此時 L2 = ['a','A','B',' ','C','D','d','a','e',1,2]
刪除 .pop() 無參數 值爲最後一個元素,並將列表中最後一個元素刪除L2.pop()爲2,此時 L2 爲['a','b','c','d','a','e',1]
.remove('') 一個參數 移除遇到的第一個元素 L2.remove('a') L2=['b','c','d','a','e',1,2]
del L2[2] L2=['a','b','d','a','e',1,2] del L2[2:5] del L2
.clear() 無參數 清空列表 L2.clear() L2 = []
5, 循環、排序
循環 for i in L2: i爲此處聲明的一個臨時變量,將L2中每一個值依次賦給i
print("i")
rang(10) 建立了0-9的列表
排序 .sort() 無參數,當列表中元素類型同樣是,從小到大排序
.reverse() 把當前列表原地倒轉 reverse後返回列表自己可看到
6,列表拼接
n1+n2 或者 n1.extend(n2)
7,其餘
.copy()
b = a.copy() 將b=a是將b指向了a指向的地址,a若是從新被賦值指向其餘地址,b爲原地址不受影響,而集合中若是隻改變 裏面的元素,地址未變,b也會跟着被改變 .而使用copy(),則a,b無關,只是將b同樣的值賦給了a,改變b不影響a
此爲
淺copy 可查看代碼深淺copy
import copy
copy.deepcopy( names) 此爲深copy
enumerate(list)
枚舉 成爲(索引,元素)的集合
結果:
結果:
.isdigit() 判斷是否爲數值
2018/6/15
二進制
十進制數轉二進制 bin(十進制數)
=0b+ 二進制數 0b表明二進制
ASCII碼
計算機將ASCII碼與十進制數0-255作了對應表 ASCII碼錶
每一個字符佔8位(bit比特),一共能夠表示256個。文字能夠進行二進制轉換。
GB2321
國標碼 簡體中文 收錄漢字6763個
GBK
繁體和簡體,收錄漢字2萬多 兼容ascii
Unicode國際編碼,支持多國語言 全部字符(包括英文)
佔兩字節
.包含和全部國家的編碼語言的映射關係
UTF-8 讓ascii碼的字符佔1個字節,歐洲字符佔兩個字節,東亞(中文)三個字節,是使unicode存儲和傳輸時更省空間的設計
python2 默認爲ASCII碼,python3默認爲UTF-8,因此用python2 編譯帶中文代碼時,須要改變默認語言
具體能夠查看
# -*- coding: UTF-8 -*-
2018/6/16
引入其餘源
from
decimal import * 從decimal庫引入全部
getcontext(). .... 設置源參數
浮點數
python和JavaScript同樣,直接定義超長精度小數會不許確,能夠用分數代替
注意
不要將python代碼文件命名爲python預留字,模塊名等。特別不能與import 文件名同樣
容易出現 AttributeError: ‘module’ object has no attribute ‘ArgumentParser’ 此樣錯誤
2018/6/21
字符串 深刻講解 數據類型 - 基本型
特性:有序、不可變
pycharm 一樣能夠點 alt+鼠標點擊,進入方法 ,可查看python源碼,查看各類方法的解釋
s.isdigit()
s.replace(old,new,count)
s.find()
s.center(width,fillchar)
s.format()用法 見下圖
' '.join(names)
將names裏的元素按' '鏈接 ''中間能夠爲空格、逗號,字母等等
s.strip() 將字符串兩端的空格、換行都去掉
s.split( 'o') 按'o'分割成列
s.capitalize() 首字母大寫,其餘小寫
s.casefold() 忽略大小寫即全小寫
s.find('o',0,5) 在0到5序號位上查找字母O,有則返回位置,無則返回-1
s.expandtabs() 控制tabs/空格數量
直播課
學習方法:輸入+輸出+糾正
2018/6/22
元組tuple 數據類型-數據集
一旦建立,不能再修改,是隻讀的列表 。可是能夠包含可變的list元素
使用小括號 ('a','b','c')
元組中只包含
一個元素時,
須要在元素後面添加逗號,不然括號會被看成運算符使用
使用場景:1明確告知別人,此處數據不可修改。2數據庫鏈接配置信息等
Hash函數
「散列」
一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數
被哈希的值是不可變的 數字、字符串、元組 hash((1,2,3))
用途:文件簽名、md5加密、密碼驗證
字典dictionary 數據類型-數據集
1.格式html
字典的每一個鍵值 key=>value 對用冒號 : 分割,每一個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式以下所示:java
d = {key1 : value1, key2 : value2 }
value可爲列表。用key取值 d[key1] = value1
key值查找時不循環,查找速度很快
2.增長
直接爲新key賦值 d[key] = 'value3'
3.修改
直接賦值 d[key1] = newvalue
4.查找
dictionary 無索引index
經過
in 判斷key 是否在字典 'value' in d
獲取
get d.get('key') 沒有該key,不報錯返回 空 none 而若是直接用 d[key],沒有該key是會報錯的
info. 可出全部方法?我試不出來
5.刪除
d.pop( 'key') 刪除key的這個鍵值
d.popitem() 隨機刪除裏面的鍵值
del d[key1]
6.多級嵌套
7.其餘
d.keys() 打印全部key值
d.values() 打印全部value值
d.update (字典2) 合併兩個字典 到d,由於key惟一,相同的key會被字典2覆蓋
d.item() 返回一個 包含key,value 元組的 列表
d.setdefault(k ,defaultvalue) 若是d裏的key值含k,返回k對應的值,不如不含,則用defaultvalue賦值
d.fromkeys(keys,value) 生成一個keys列表中每一個key 對應 value 的 格式的字典
8.循環
for k in d:
print(k)
print(k, d[k])
2018/6/23
集合set 數據類型-數據集
直接定義 set = {1,2,3,4,5}
其餘類型轉換 li = [1,2,3,4,3,4] s = set(li) #s = {1,2,3,4}
不知道某一個函數或方法 ,可使用 help( method) 查看說明
1.增長
s.add(v) 增長一個給定值
s.update( s1) 合併
2.刪除
s.pop() 隨機刪除一個值
s.remove(v) 刪除給定的值
s.discard(v)
刪除給定的值,若是沒有該值也不報錯
s.clear() 清空
關係測試
s1 = {...} , s2 = {...}
1.交集 s1.intersection(s2) 或者
s1&s2 獲得一個新的相交的集合
2.差集 s1.difference(s2) 或者 s1 - s2 獲得一個新的s1中不一樣與s2的集合,不一樣與s2.difference(s1)或s2-s1
3.並集
s1.union(s2) 或者 s1|s2
4.對稱差集 s1.symmetric_difference(s2) 或 s1^s2 只在s1及只在s2的集合
5.判斷是否包含關係
假設s1包含s2
s2.issubset(s1) 或 s2 <= s1
s1.issuperset(s2) 或 s1>=s2
6.判斷兩個集合是否無相交
s1.isdisjoin(s2) Return True if two sets have a null intersection.
s1.difference_update (s2) 是將s1-s2的差值再賦給s1
s1.intersection_update(s2) 將s1&s2 獲得的交集賦s1
2018/6/25
十進制轉二進制 bin(十進制數)
-->0b..
八進制
oct() -->0o... 少用
十六進制 hex() -->0x... 字符編碼、內存地址、數據流、web顏色
由於一個16進制至關於4位2進制,一個字節8位,
兩個16進製表示一個字節。 ascii用16進制,只須要兩位。
數據交換的時候,對字節解析都是一個byte一個byte的處理,一個byte,用兩個16進制來表達方便。硬盤存儲是二進制,表達方式是十六進制
二進制轉十六進制
,不夠4位的補0
十六進制轉二進制
,每一個拆成4位的二進制數
直播內容:
文件操做
user_file =
open('user_info.txt','r+')
user_file.write('\n'+username)
user_file.close()
2018/6/26
字符編碼
若是不把編碼問題搞清楚,會糾纏整個職業生涯
問題:1 之前用Gbk寫的代碼,想從新編譯成utf-8不可能麼?不是從新定義語言而後保存一下就可麼?
2 python3,存在內存裏實際是unicode,達不到省空間的做用呀?使用python3既然內存裏是unicode,還定義其餘的編譯語言有什麼做用,默認utf-8沒有做用 答:存在內存裏是unicode,可是硬盤裏是utf-8
python3使用默認utf-8保存,內存實際unicode。在python3執行時,不論哪國語言,好比
用
utf-8讀到內存,同時轉爲了unicode。全部系統都支持unicode。 使得其餘編碼也不出現亂碼
python2要使用中文,須要在文件頭標註gbk或者utf-8,並會以標註方式保存在內存,默認保存爲ascii。若是標註爲urf-8,windows加載會亂碼。
python3 自動執行了
解碼(decode)和編碼(encode)工做
UTF-8 -->decode -->unicode
Unicode -->encode -->GBK/Utf-8 ..
python2能夠手動轉碼,使不出現亂碼
python2裏:type(unicode) = unicode type(其餘編碼類型) =str
python3裏:str 就是unicode格式的字符
總結:1,學到了爲何會出現亂碼,編碼是什麼意思
2. unicode、utf-八、gbk特色
3. unicode 與其餘編碼的映射關係能夠查表
4. python3 內存默認存爲unicode.python2內存 根據文件頭標註,默認是ascii
5. decode , encode 打印出的16進制數的含義
6. 你的文件在內存裏怎樣轉成二進制對應的,表現爲16進制
7.bytes 類型
2018/6/27
bytes類型介紹 encode 後的字符串 用16進製表示的二進制串,稱爲bytes
圖片、視頻 的二進制格式也稱bytes,但不能轉成字符串了
python3不兼容python2