上次作業

 1 '''
 2 1. 元素分類
 3     有如下值li= [11,22,33,44,55,66,77,88,99,90],將所有大于 66 的值保存至字典的第一個key中,
 4     將小于 66 的值保存至第二個key的值中。
 5 即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
 6 '''
 7 li = [11,22,33,44,55,66,77,88,99,90]
 8 li_higher = []
 9 li_lower = []
10 dic = {}
11 for i in li:
12     if i == 66:
13         continue
14     elif i > 66:
15         li_higher.append(i)
16     else:
17         li_lower.append(i)
18 dic.setdefault('k1',li_higher)
19 dic.setdefault('k2',li_lower)
20 print(dic)
21 
22 '''
23 2. 輸出商品列表,用戶輸入序號,顯示用戶選中的商品
24     商品 li = ["手機", "電腦", '鼠標墊', '游艇']
25 要求:1:頁面顯示 序號 + 商品名稱,如:
26           1 手機
27            2 電腦
28 29      2: 用戶輸入選擇的商品序號,然后打印商品名稱
30      3:如果用戶輸入的商品序號有誤,則提示輸入有誤,并重新輸入。
31      4:用戶輸入Q或者q,退出程序。
32 
33 '''
34 li = ["手機", "電腦", '鼠標墊', '游艇']
35 for i in li:
36     print('{}\t{}'.format(li.index(i) + 1,i))
37 flag = True
38 #要有標志位
39 while flag:    
40     choice = input('請輸入選擇的商品序號或按Q退出: ')
41     if choice.isdigit():
42         choice = int(choice)
43         #判斷輸入數字是否在索引范圍內
44         if choice > 0 and choice <= len(li):
45             print(li[choice + 1])
46     elif choice.upper() == 'Q':
47         break
48     else:
49         print('請輸入數字')

1. 小知識點總結

 1 # 1. python2與python3的區別
 2 python2
 3 print()  print 'abc'    #print時可以不加括號
 4 range()  xrange(): 為生成器
 5 raw_input()
 6 
 7 python3
 8 print('abc')
 9 range()
10 input()
11 
12 # 2.  = 賦值 == 比較值是否相等   is 比較,比較的是內存地址  id(內容)即內存地址
13 li2 = li1
14 print(id(li1),id(li2))    #是相同的
15 
16 # 3. 對于數字,字符串 有小數據池的概念
17 數字的范圍 -5 -- 256
18 字符串:1,不能有特殊字符
19        2,s*20 還是同一個地址,s*21以后都是兩個地址
20 i1 = 6
21 i2 = 6
22 print(id(i1),id(i2))
23 i1 = 300
24 i2 = 300
25 print(id(i1),id(i2))
26 
27 #剩下的 list dict tuple set沒有小數據池的概念
28 l1 = [1,]
29 l2 = [1,]
30 print(l1 is l2)

2. 編碼

 1 '''ascii
 2     A : 00000010  8位 一個字節
 3 unicode    
 4     A : 00000000 00000001 00000010 00000100 32位  四個字節
 5     中:00000000 00000001 00000010 00000110 32位  四個字節
 6 utf-8     
 7     A :  00100000 8位 一個字節
 8     中 :  00000001 00000010 00000110 24位 三個字節
 9 gbk       
10     A : 00000110  8位 一個字節
11     中  : 00000010 00000110 16位 兩個字節
12 1,各個編碼之間的二進制,是不能互相識別的,會產生亂碼。
13 2,文件的儲存,傳輸,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,ascii等)
14 
15 py3:
16     str 在內存中是用unicode編碼。
17         bytes類型 后面要加個b
18         對于英文:
19              str  :表現形式:s = 'alex'
20                     編碼方式: 010101010  unicode
21             bytes :表現形式:s = b'alex'
22                     編碼方式: 000101010  utf-8 gbk。。。。
23 
24         對于中文:
25              str  :表現形式:s = '中國'
26                     編碼方式: 010101010  unicode
27             bytes :表現形式:s = b'x\e91\e91\e01\e21\e31\e32'
28                     編碼方式: 000101010  utf-8 gbk。。。。
29 '''
30 
31 s1 = 'alex'
32 # encode 編碼,如何將str --> bytes
33 s11 = s1.encode('utf-8')
34 s11 = s1.encode('gbk')
35 print(s11)
36 s2 = '中國'
37 s22 = s2.encode('utf-8')
38 s22 = s2.encode('gbk')
39 print(s22)
將str轉化為bytes
用encode編碼將py3中的unicode形式轉化為utf-8或gbk形式
ps: encode編碼
decode解碼