1、 模塊
寫模塊的時候盡量不要和系統自帶的模塊的名字相同
調用模塊的時候,會先在當前目錄下查找是否有這個模塊,然后再會如python的環境變量中查找
a.模塊1:sys
代碼如下:
1 import sys 2 print(sys.path)
該代碼的作用就是打印出python環境變量如下所示:
D:\\python培訓\\s14\\day2
D:\\python培訓\\s14
D:\\python35\\python35.zip
D:\\python35\\DLLs
D:\\python35\\lib
D:\\python35
D:\\python35\\lib\\site-packages 第三方庫會放在這里
print(sys.argv) #打印當前文件的相對路徑,但是在pycharm中打印的是絕對路徑 打印結果如下所示:
['D:/python培訓/s14/day2/sys_mod.py']
b. 模塊2:os
代碼如下:
1 import os 2 cmd = os.system("dir") #執行命令,不保存結果 3 cmd_res = os.popen("dir").read() #執行命令,保存結果 4 print("--->",cmd_res) 5 os.mkdir("new_dir") #創建目錄
2、數據類型:
數字:整型(int) float(浮點型),無論多大在3.0python中都是int 即3.0沒有長整型這個概念
布爾值:真或假 1或0
字符串
關於字符串的操作例子:
name="zhaofan" print(name.capitalize()) #將字符串首字母大寫 print(name.count("a")) #查找字符串中a的個數 print(name.center(50,"-")) #顯示結果如下: ---------------------zhaofan---------------------- print(name.endswith("an")) #判斷字符串的結尾是否為an print("My name is zhaofan".find("name")) #返回字符串的索引 print(name.isalnum()) #如果字符串中包括文字和數字的都返回true print("zhaofan".isalpha()) #如果字符串中都為字母則返回true print("123123".isdigit()) #判斷字符串中是否都為數字 print("ZZZZ".islower()) #判斷字符串是否為小寫 name.strip() 去掉前和后面的空格 name.lstrip()去掉左邊的空格 name.rstrip()去掉右邊的空格 name.replace() 替換 name.rfind(“字符”) 查找字符串中最右邊的那個字符的下標 name.split() 分割字符串,默認是以空格分割
python3中的不等於只能用!= 取消了2.0中的<>
3、列表
列表的特點:列表是有序的,列表可以有重復的值
list[數字] 就可以取出列表中相對應的值
關於列表切片:
list[1:2]從第二個位置開始取,包括其實位置,但是不包含結尾,即取出列表的第二個值list[1],list[1:3]就可以取出第2個和第3個值
list[-1] 取出列表的最后一個值
list[-2]取出列表倒數兩個值
list[:3]取出列表的前兩個值
列表的增加
list.append(“元素名”) 給列表的最后追加一個元素
列表的插入
list.insert(1,“元素名”)在列表的第一個第2個位置插入一個元素
列表的修改
name[2]=”新的元素名” 將列表的第3個元素進行更改
列表的刪除
name.remove(“元素名”)刪除列表中對應的元素
del names[1] 刪除列表中相應的元素
name.pop()如果沒有輸出下標則刪除列表中的最后一個值,如果刪除數字下標就可以刪除相對應的元素
查找列表中某個元素的位置,即下標
name.index(“元素名”)
name.clear() 情況列表
name.count(“元素名”) 找出列表的某個元素的個數
name.reverse() 將列表中元素進行反轉
name.sort()將列表元素進行排序
name.extend(names2) 將name2並入到name列表中
del name2 就可以刪除name2列表
4、關於列表的深淺拷貝
首先淺拷貝
name.copy() 就是淺拷貝
下面是關於淺拷貝的代碼例子:
1 names = ["ZhaFan","Dean",[1,2,3,4],"Dean","Dan","jack","Yes","A","a"] 2 names2 = names.copy() 3 print(names) 4 print(names2) 5 names2[1]="zhaofan" 6 print(names) 7 print(names2) 8 9 names[2][0]=100 10 print(names) 11 print(names2)
上述代碼的的運行結果如下:
D:\python35\python.exe D:/python培訓/s14/day2/copy_qian.py
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'zhaofan', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [100, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'zhaofan', [100, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
總結:從上述結果可以看出,names.copy()復制出一個與names列表一樣的列表當修改列表中的內容時,
如果列表中嵌套有列表,那么如果修改是列表的第一層,那么只會更改修改的那個列表,如果修改的是嵌套里的列表的內容,則兩個列表的內容的都會更改
如下圖:
下面是關於深拷貝
深拷貝需要借助模塊copy
深拷貝的時候,就是完全都開辟出另外一個內存空間,及修改其中一個列表中任意一個值,另外一個列表都不會發生變化:
代碼例子如下:
1 import copy 2 names = ["ZhaFan","Dean",[1,2,3,4],"Dean","Dan","jack","Yes","A","a"] 3 names2 = copy.deepcopy(names) 4 print(names) 5 print(names2) 6 names[2][1]=10000 7 print(names) 8 print(names2)
運行結果如下:
D:\python35\python.exe D:/python培訓/s14/day2/copy_deep.py
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 10000, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
['ZhaFan', 'Dean', [1, 2, 3, 4], 'Dean', 'Dan', 'jack', 'Yes', 'A', 'a']
從代碼可以看出,修改一起種一個列表中的內容,另外一個並不會發生變化
列表中打印每個元素
for I in names:
print I
5、元組tuple
元組就是不可變的列表,即tuple一旦被初始化就不能修改,所以tuple不能用類似於list列表中的append(),insert()等這些修改的方法
關於元組的代碼例子如下:
1 tt_tuple = ("zhaofan","dean","jack") 2 print(tt_tuple.count("dean")) 3 print(tt_tuple.index("jack")) 4 print(tt_tuple[-1])
運行結果如下:
D:\python35\python.exe D:/python培訓/s14/day2/tuple_ex.py
1
2
jack
7、關於用list列表編寫一個簡單的購物車的例子:
程序要求:
a. 啟動程序后,讓用戶輸入工資,然后打印商品列表
b. 允許用戶根據商品編號購買商品
c. 用戶選擇商品后,檢測余額是否夠,夠就直接扣款,不夠就提示用戶
d. 可以隨時退出,退出時,打印已經購買的商品和余額
1 goods_list=[["Iphone",5288],["Bike",1200],["Coffee",20],["Ipad",1800]] 2 shopping_list=[] 3 user_salary = input("請輸入你的工資是:") 4 if user_salary.isdigit() is True: 5 user_salary = int(user_salary) 6 while True: 7 for key,iterm in enumerate(goods_list): 8 print(key,iterm[0],iterm[1]) 9 user_choice = input("你想要買什么(輸入商品的序號,q表示退出系統):") 10 if user_choice.isdigit() is True: 11 user_choice=int(user_choice) 12 if user_choice > len(goods_list): 13 print("\033[31;1m你輸入的商品編號不存在\033[0m") 14 continue 15 if goods_list[user_choice][1] < user_salary and user_choice > 0: 16 shopping_list.append(goods_list[user_choice]) 17 user_salary -= goods_list[user_choice][1] 18 print("\033[31;1m%s\033[0m 已經被添加到購物車,你的錢還剩余\033[31;1m%s\033[0m" %(goods_list[user_choice][0],user_salary)) 19 continue 20 else: 21 print("\033[31;1m你沒有足夠的錢了,你只剩下%s人民幣了\033[0m" %user_salary) 22 23 if user_choice == "q": 24 print("你的購物車".center(50,"-")) 25 for key,iterm in enumerate(shopping_list): 26 print(key,iterm[0],iterm[1]) 27 print("你還剩余\033[31;1m%s\033[0m人民幣" %user_salary) 28 break 29 else: 30 print("請輸入正確的工資")
8、關於字典dict
字典有如下特點:
1) key-value格式,key是唯一的
2) 無序的
3) 查詢速度快
一個簡單的dcit字典的例子:
1 info = {'name':'Dean', 2 'job':'IT', 3 'age':23, 4 'company':'XDHT' 5 } 6 print(info)
運行結果如下:
D:\python35\python.exe D:/python培訓/s14/day2/dcit-2.py
{'company': 'XDHT', 'name': 'Dean', 'age': 23, 'job': 'IT'}
從這里也可看出字典是無序的
字典的增刪查改
還有一種刪除數據,但是如果字典為空的時候會報錯,info.pop("name")
代碼例子如下:
1 info = {'name':'Dean', 2 'job':'IT', 3 'age':23, 4 'company':'XDHT' 5 } 6 print(info) 7 info.pop("name")
程序運行結果如下:
D:\python35\python.exe D:/python培訓/s14/day2/dcit-2.py
{'name': 'Dean', 'company': 'XDHT', 'age': 23, 'job': 'IT'}
{'company': 'XDHT', 'age': 23, 'job': 'IT'}
Process finished with exit code 0
但是如果用info.pop()的時候,刪除的數據不存在就會報錯
將dict的key,value轉換成列表的形式顯示
print(info.items())
效果如下:
D:\python35\python.exe D:/python培訓/s14/day2/dcit-2.py
dict_items([('job', 'IT'), ('company', 'XDHT'), ('age', 23), ('name', 'Dean')])
特別說明一下,在python3.0中取消了has_key()的用法
而代替的方法是可以in或者not in
代碼例子:
if "name" in info:
print("ok")
根據列表abc來創建dict里的key,后面的test是默認的value,如果不指定就是None
info = {}
info = info.fromkeys(["a","b","c"],"test")
print(info)
運行結果如下:
info = {}
info = info.fromkeys(["a","b","c"],"test")
print(info)
info.keys() #打印出字典的key
info.values() #打印出字典的value
方法1
for key in info:
print(key,info[key])
方法2
for k,v in info.items():
print(k,v)
在實際中盡量不要用方法2,因為方法2的效率比方法1的效率低,方法2會先把dict字典轉換成list,所以數據大的時候不要用
9、關於字典的嵌套,代碼例子如下:
1 menu_dict={ 2 "河南省":{ 3 "焦作市":{ 4 "修武縣":{"AA","BB","CC"}, 5 "武陟縣":{"DD","EE","FF"}, 6 "博愛縣":{"GG","HH","II"} 7 }, 8 "新鄉市":{ 9 "輝縣":{"AA","BB","CC"}, 10 "封丘縣":{"DD","EE","FF"}, 11 "延津縣":{"GG","HH","II"} 12 } 13 }, 14 "河北省":{ 15 "邢台":{ 16 "寧晉縣":{"AA","BB","CC"}, 17 "內丘縣":{"DD","EE","FF"}, 18 "邢台縣":{"GG","HH","II"} 19 }, 20 "唐山":{ 21 "樂亭縣":{"AA","BB","CC"}, 22 "唐海縣":{"DD","EE","FF"}, 23 "玉田縣":{"GG","HH","II"} 24 } 25 } 26 }