第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

列表元素的總和,直到限制

列表元素的總和,直到限制

慕田峪9158850 2022-06-02 10:33:49
我面臨一個問題,我需要我的代碼添加列表的元素,直到總和盡可能接近常數(shù)。達(dá)到常數(shù)后,我需要代碼來存儲總和以及索引總和(計算達(dá)到該總和所需的變量數(shù))。我是 Python 的初學(xué)者,這個問題很難解決。我嘗試了一個while循環(huán)和一個for循環(huán)。那時,我有點(diǎn)卡住了,不確定我的方法是否準(zhǔn)確。這是邏輯的一個具體例子。假設(shè)第 1 期的需求為 10,第 2 期的需求為 23,Q 為 12。(這里的 Q 代表最優(yōu)數(shù)量)。我想弄清楚的是我們是否應(yīng)該在第 1 期下訂單,其中包括第 1+2 期的需求,或者是否最好在第 1 期下訂單,在第 2 期下訂單。Q 是決定它的因素,如果期間 1 的需求更接近 Q 或期間 1+2 的累積需求更接近 Q。在本例中,|10-12| < |(10+23)-12|,因此我們要記錄一個周期 1 的訂單,另一個記錄周期 2 的訂單。def feeoq(q, demand):    sum = 0    prod = []    for i in demand:        sum = sum + i        if abs(sum - q) < abs(sum + i - q):            return prod.append(sum)        else:            sum = sum + i我沒有收到錯誤消息,但該函數(shù)沒有返回我所期望的。
查看完整描述

3 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個贊

你重復(fù)了這sum = sum + i條線。一次在循環(huán)的開始,然后在 else 條件下。我想你應(yīng)該刪除第一行并附加 sum + i。



查看完整回答
反對 回復(fù) 2022-06-02
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個贊

也許我們可以討論這個作為討論的基礎(chǔ):


import numpy as np


np.random.seed(42)


L = np.random.randint(0, 10, 10)

q = 7


print(L)


def subs(L, q):

    sum = 0

    for i, e in enumerate(L):

        sum += e

        if sum > q:

            if abs(sum - q) > abs(sum - e - q):

                r = sum - e

                sum = e

                n = i - 1

            else:

                r = sum

                sum = 0

                n = i

            yield n, r

    yield i, sum


print(list(subs(L, q)))

解釋 :


基本上,這個函數(shù)首先檢查 ifsum是否大于q. 僅當(dāng)是時,您才有兩個值,它們不是都小于或都大于 q。這是您的測試的先決條件,兩者中的一個與 的距離較小q。

現(xiàn)在,根據(jù)哪個更接近q,函數(shù)返回sum或sum - e。


現(xiàn)在我在這里使用動詞return而在代碼中使用yield:它不是一個常用的函數(shù),而是一個generator。關(guān)于這種類型函數(shù)的主要線索是,當(dāng)它們產(chǎn)生一個值時,你可以認(rèn)為在第一步中就像返回一個值,但有一個重要區(qū)別:函數(shù)本身不返回(即不結(jié)束),但是睡著了,等待它的下一次調(diào)用,保持它的完整狀態(tài),包括到現(xiàn)在計算的所有值,然后在yield之后繼續(xù)下一行,就好像之前什么都沒發(fā)生一樣 - 直到下一個yield關(guān)鍵字。


簡而言之:如果您想總結(jié)到任何事情但又不想在達(dá)到任何事情時停下來,IMO正是您所需要的...... :)


查看完整回答
反對 回復(fù) 2022-06-02
?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個贊

只是我對問題的看法,正如我在您的問題下方的評論中所述:


一種算法,它計算每個期間每個訂單所需的固定數(shù)量訂單數(shù)量,以便始終滿足需求。

另外,每個訂單的其余部分,在某個時期沒有被覆蓋,因此最終可以少一個訂單來覆蓋下一個時期的需求。


def calcOrder(demand, Q):

    result = []

    rest = 0

    for i, e in enumerate(demand):

        current = e - rest

        order = np.ceil(current/Q)

        result.append(int(order))

        rest = order * Q - current

    return result

例子:


import numpy as np

np.random.seed(793)


demand = np.random.randint(0, 51, 5)

Q = 12


demand

# array([50, 20, 19, 48, 25])


print(f'demand\tcurrent\torder\trest')

rest = 0

for i, e in enumerate(demand):

    current = e - rest

    order = int(np.ceil(current/Q))

    rest = order * Q - current

    print(f'{e}\t{current}\t{order}\t{rest}')


# demand  current order   rest

# 50      50      5       10

# 20      10      1       2

# 19      17      2       7

# 48      41      4       7

# 25      18      2       6


查看完整回答
反對 回復(fù) 2022-06-02
  • 3 回答
  • 0 關(guān)注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號