作者zz860619 (Kukuboo)
看板Python
標題[問題] 新手請教更好寫法
時間Thu Nov 29 21:03:00 2018
各位大大晚安 最近小弟在寫一個小專題
題目簡單說就是分配航段內航班給各個航空公司
譬如我這個航段裡總共有10個航班要分配給2個航空公司
這樣就有可能是(0,10) (1,9)以此類推
航班數跟航空公司小還好說,分配的航空公司一多,想求出每種可能性就要跑半天,不知
道有沒有更快求出的寫法?
以下是目前寫的 a就是當下的可能性
total =4 #總共要分配的航班數
num = 3 #分給幾家航空公司
a = [0 for x in range(num)]
def per (fas_total,air_number,num):
if air_number == 1:
a[num-air_number] = fas_total
print(a)
print("========================")
else:
for i in range(fas_total+1):
a[num-air_number] = i
per(fas_total-i,air_number-1,num)
per(total,num,num)
希望有人可以幫忙我一下,謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.253.107
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1543496582.A.137.html
推 flarehunter: 如果需要每種組合的話你的做法就最快了11/29 21:51
→ flarehunter: 但如果只是想算有幾種的話應該有公式解11/29 21:51
QQ我需要每種組合因為還要做運算,如果沒辦法只好讓它跑到底了
※ 編輯: zz860619 (1.164.253.107), 11/29/2018 22:32:51
→ yoyololicon: 可以用itertools11/29 22:38
→ yoyololicon: ㄟ好像不行 當我沒說XD11/29 22:41
itertool我也有試過 就利用product跑出所有組合 然後再把數字加起來等於總航班數抓
出來 但是這樣記憶體跑著跑著就爆了QQ 我也不知道有沒有更好的辦法
※ 編輯: zz860619 (1.164.253.107), 11/30/2018 00:25:15
→ god145145: 後面還有什麼運算?11/30 08:26
就我想把每種可能性的利潤算出來再做比教這樣
※ 編輯: zz860619 (1.164.253.107), 11/30/2018 09:16:10
推 TitanEric: 用yield呀 需要的時候再跟他拿11/30 19:24
好的,我查看看,謝謝~
※ 編輯: zz860619 (1.164.253.107), 12/01/2018 11:58:43
推 jamfly: 好像大一的程設作業 12/01 15:48