雙十一到來,對未來滿滿的焦慮感一直在push著我買些書來尋求心理安慰。然而京東和噹噹的優惠政策不同:前者滿100減50,但單價貴;而後者直接給出折後價。經過一番思想掙扎,確定了要買以下六本書,分別在京東和噹噹上檢視了今日的**
書名京東
噹噹方案1
方案2計算機網路:自頂向下方法
84.6
70.3
jdjd
深入理解計算機系統
132.1
90.4
jdjd
演算法導論
121.6
96jd
jd程式設計之美
75.1
37.6
dddd
劍指offer
61.8
30.9
ddjd
程式設計師**面試指南
103.6
377dd
dd合計(優惠後)
328.8
377188.3+120.3=308.6
200.1+89.4=289.5
根據京東和噹噹的**初步選了方案1和方案2,感覺是比較實惠的。但是,在最終決定之前,貧窮讓我理智了起來…
不!我要最便宜。
於是乎,開啟電腦,new乙個book.py,考慮演算法?不存在的,小菜鳥確實做不到哇。。。簡單暴力法遍歷一遍,不就六本書嘛,高中的排列組合來一下不就六
六、六五、五四…這麼多種情況嘛,然後寫個組合的函式?
額。。。情況有點多了,那啥,用python還要我造這個輪子嗎?
python的組合嘛,找到它了,from itertools import combinations
,試驗一下
>>
>
from itertools import combinations
>>
> a =
list
(range(0
,6))
>>
>
list
(combinations(a,2)
)[(0
,1),
(0,2
),(0
,3),
(0,4
),(0
,5),
(1,2
),(1
,3),
(1,4
),(1
,5),
(2,3
),(2
,4),
(2,5
),(3
,4),
(3,5
),(4
,5)]
匯入後,那就開始幹吧。先定義京東和噹噹的兩個**列表
jd =
[84.6
,132.1
,121.6
,75.1
,61.8
,103.6
]dd =
[70.3
,90.4,96
,37.6
,30.9
,51.8
]
首先考慮在京東上選某幾本書,可能是0本、1本、2本。。。6本,找到對應的索引就好了,然後剩下的索引就是從噹噹買的書啦。主要的**如下
index =
list
(range(0
,6))
res =
for n in
range(0
,7):
#n=1~5
index_arr_jd =
list
(combinations(index, n)
)# 從京東購買書籍的索引列表,每個元素是某種情況的索引陣列
for tup in index_arr_jd:
# tup對應著京東購買書籍的一種索引組合情況
index_arr_dd =
list
(set
(index)
^set
(tup)
)# 從噹噹購買書籍的索引
# 京東購買的圖書的**
price_jd =
sum(jd[i]
for i in tup)
price_jd -=
(price_jd //
100)*50
# 噹噹購買的圖書的**
price_dd =
sum(dd[i]
for i in index_arr_dd)
# 儲存資料
item =
['京東:'
, tup,
'京東**'
,round
(price_jd,2)
,'噹噹'
, index_arr_dd,
'噹噹**'
,round
(price_dd,2)
,'總價'
,round
(price_jd + price_dd,2)
]
上面**中的item儲存**資料的時候使用了round,主要是因為python的浮點數計算不準確,小數點後面會跟著很多位數。
到這裡把所有方案都儲存下來了,最後,根據總價對結果排序,並列印出來就大功告成啦。
res.sort(key=
lambda x: x[-1
])print
('一共有%d組資料'
%len
(res)
)for e in res:
print
(e)
用Python爬取京東手機評論
好評 中評 差評 追評 可以看到這個url裡都有以下幾個引數 videocount 2638,videocountstr 2600 aftercount 4852,aftercountstr 4800 showcount 24200,showcountstr 2.4萬 productid 10000...
用Python爬取京東商品評論(2)
首先開啟京東的頁面,輸入你想要查詢的某項商品的名稱,這裡用貝因美的某一款奶粉舉例 1.首先我們右擊選擇檢視網頁源 3.利用params引數構建 我們可以發現 callback fetchjson comment98vv75454 productid 1601354 score 0 sorttype ...
python用裝飾器和 new
單例模式 乙個類只能有乙個例項,它必須自行向整個系統提供這個例項 裝飾器 對某個功能的包裝 單例模式只允許建立乙個物件,因此節省記憶體,加快物件訪問速度,因此物件需要被公用的場合適合使用,如多個模組使用同乙個資料來源連線物件等等 1 def sing cls,args,kwargs s def ss...