用python決定在京東和噹噹上買書最便宜的方案

2021-09-29 12:00:54 字數 2934 閱讀 3039

雙十一到來,對未來滿滿的焦慮感一直在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...