垃圾分類小程序(1)——實現查找垃圾的類別

 1 with open('X:/XXX/XXX/XXX/data.txt',encoding = "utf-8-sig") as file:  2     #上一行的參數!只使用'r'會出現報錯:'gbk' codec can't decode byte 0xb7 in position 8: illegal multibyte sequence,輸入encoding='utf-8'可解決
 3     #只使用"utf-8"輸出時會出現文件第一行多出十六進制編碼,用'-sig'解決。
 4     data_line = file.readline()  5     data_line = data_line.replace('\t',',')  6     data_line = data_line.strip('\n')  7     keys = data_line.split(',')  8  
 9  
10     values_wet = set()                      #set()是建立空集合的惟一方法
11     values_dry = set() 12     values_harm = set() 13     values_re = set() 14  
15      
16     while True: 17         data_line = file.readline() 18         if data_line != '':                 #解決最後一行問題,注意要加else: break,否則死循環
19             data_line = data_line.strip('\n') 20             data_line = data_line.replace('\t',',') 21             values = data_line.split(',') 22             values_wet.add(values[1])       #添加值到集合,".add()"方法
23             values_dry.add(values[2]) 24             values_harm.add(values[3]) 25             values_re.add(values[4]) 26         else: 27             break
28  
29  
30 dic = {keys[1]:values_wet, keys[2]:values_dry, keys[3]:values_harm, keys[4]:values_re} 31  
32  
33 #定義函數判斷values屬於哪一個key
34 def get_key(value,dict=dic): 35     return [k for k,v in dict.items() if value in v]    #列表解析式
36  
37  
38 #輸出
39 value1 = input('Enter the thing:') 40 print(get_key(value1))
  • 效果是輸入一種垃圾就能夠獲得它應該被放進哪一種垃圾桶:
  • ======== RESTART: E:\xxxx\xxxx\xxxx\xxx.py ======== Enter the thing:創口貼 ['有害垃圾'] >>>
  • 思路是創建了一個大字典,字典下有四個key,每一個key對應的value都是一個集合,集合裏爲各類垃圾的值。往後想要添加新的垃圾就只要往集合裏.add()便可。
  • get_key函數的主體是從網上找的,最後針對本身的需求對函數內容稍做修改。筆者對列表解析式的使用實在生疏,需多加練習。
  • 最後附上data.txt
序號 溼垃圾 幹垃圾 有害垃圾 可回收物 1 菜葉 舊浴缸 油漆桶 塑料瓶 2 橙皮 盆子 鎳鎘電池 食品罐頭 3 蔥 壞馬桶 打火機 玻璃瓶 4 餅乾 舊水槽 創口貼 易拉罐 5 番茄醬 貝殼 酒精 報紙 6 蛋殼 化妝刷 調色板 舊書包 7 西瓜皮 罈子 油漆 舊手提包 8 馬鈴薯 海綿 過時的膠囊藥物 舊鞋子 9 魚骨 花生殼 溫度計 牛奶盒 10 甘蔗 菜板 過時藥片 舊塑料籃子 11 玉米 磚塊 熒光燈 舊玩偶 12 骨頭(雞鴨鵝) 衛生紙 蓄電池 玻璃壺 13 蝦殼 籃球 醫用棉籤 舊鐵鍋 14 蛋糕 桃核 煤氣罐 垃圾捅 15 麪包 杯子 醫用手套 舊鏡子 16 草莓 陶瓷碗 殺蟲劑 牙刷 17 西紅柿 一次性筷子 水彩筆 塑料梳子 18 梨 瓦片 農藥瓶 舊帽子 19 蟹殼 西梅核 醫用紗布 舊夾子 20 香蕉皮 壞的花盆 口服液瓶 廢鎖頭 21 辣椒 掃把 香水瓶 牙膏皮 22 巧克力 木質梳子 熒光棒 雨傘骨架 23 茄子 髒污衣服 過時化妝品 舊紙袋 24 豌豆皮 菸蒂 髮膠 紙盒 25 蘋果 渣土 注射器 舊玩具 26    樹葉    溼垃圾袋    廢棄燈泡    NULL
相關文章
相關標籤/搜索