Python全棧學習Day6
昨日內容複習
增
1
dic['age'] = 21
2
dic.setdefault()
刪
pop() 有返回值,按key刪除,預設返回none
clear()清空字典
del()按key刪除無返回值
popitem()隨機刪除,有返回值,返回元祖
改
update()把一個字典覆蓋到另一個字典
查
dic.keys()迴圈列印
dic.values()列印索引值
dic.items()列印鍵值對
dic.get(key,none)
練習題
一
將1-5放到一個key,6-10放到另一個key
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] dic = {'small':[], 'big':[]} for i in li: if i < 6: dic['small'].append(i) else: dic['big'].append(i) print(dic)
二 購物車
輸入商品列表,使用者輸入序號,顯示使用者選中的商品
商品 li = [“手機”, “電腦”, “滑鼠墊”, “遊艇”]
要求:1,頁面顯示 序號+商品名稱,如
1 手機
2 電腦
……
2,使用者輸入選擇的商品序號,然後列印商品名稱
3,如果使用者輸入的商品序號有錯,則提示輸入有誤,並重新輸入
4,使用者輸入Q或q退出程式
while 1: li = ["手機", "電腦", "滑鼠墊", "遊艇"] for i in li: print('{}\t{}'.format(li.index(i)+1, i)) num_of_choice = input('請輸入選擇的商品序號:輸入Q或q則退出') if num_of_choice.isdigit(): num_of_choice = int(num_of_choice) if 0 < num_of_choice <= len(li): print(li[num_of_choice-1]) else: print('請輸入正確的商品編號!') elif num_of_choice.upper() == 'Q': break else: print('請輸入正確的商品編號!')
購物車第二版
# 把貨物放在貨架上 li = [ {'name': '蘋果', 'price': 10}, {'name': '西瓜', 'price': 50}, {'name': '香蕉', 'price': 15}, ] shopping_car = {} print('歡迎光臨') money = input('你有多少錢?') if money.isdigit() and int(money) > 0: while 1: for i, k in enumerate(li): print('序號{}, 商品{}, 價格{}'.format(i, k['name'], k['price'])) choose = input('請輸入您要購買的商品序號:') if choose.isdigit() and 0 <= int(choose) < len(li): num = input('您要購買的商品數量:') if num.isdigit(): if int(money) > li[int(choose)]['price'] * int(num): money = int(money) - li[int(choose)]['price'] * int(num) if li[int(choose)]['name'] in shopping_car: shopping_car[li[int(choose)]['name']] = shopping_car[li[int(choose)]['name']] + int(num) else: shopping_car[li[int(choose)]['name']] = int(num) print('購物車中商品有{},您的餘額是{}'.format(shopping_car,money)) else: print('您的金額不足!') break else: print('請輸入正確商品序號')
今日:小知識點總結
一 python2與python3的區別
print方法
python 2 不用加()也可以加()
python 3 必須加()
range
python2中有xrange()插入器
python3中只有range
input
python2 raw_input()
python3 input()
二 = == 與 is
=
賦值
==
比較值是否相等
is
比較記憶體地址即ID
數字 字串 小資料池
數字
在-5~256中建立數字至開闢一個空間
字串
1 含有特殊字元不會公用一個記憶體
2 str20公用一個地址,str21以後開闢兩個地址,str只能一個字元
編碼
ASCII
一個字元佔八位,一個位元組
UNICODE
32位,四個位元組
字母: 八位 A:
中文: 24位,三個位元組
GBK
字母: 一個位元組,八位
中文: 兩個位元組,十六位
關係
1 各個編碼之間的二進位制,不能互相識別
2 檔案的儲存和傳輸不能是unicode 只能是(utf-8或utf-16或gbk,gb2312,ASCII等)
Python 3
str在記憶體中使用UNICODE儲存的
問題:UNICODE空間大,需轉化
bytes型別與str型別
類似字串,但不是以UNICODE編碼(與str區別)
str:
表現形式 s = ‘mashengde’
編碼形式;UNICODE
bytes:
表現形式:s = b’mashengde’
編碼形式;utf-8或GBK
對於中文
str:
表現形式 s = ‘中國’
編碼形式;UNICODE
bytes:
表現形式:s = b’x\e91\e91\e01\e21\31\e32’
編碼形式:utf-8
如何將STR轉換成Bytes
s1 = 'mashengde'
s2 = s1.encode()
print(type(s2))
中文
s1 = '馬聖德'
s2 = s1.encode()
print(s2)