看板 Python 關於我們 聯絡資訊
新手發問 題目是 薯條一份20元 漢堡一個40元 可樂一杯10元 輸入現有的金額 M 和欲購買的食物總和 S 輸出所有可能的組合 如果無法分配則輸出 "無法依條件分配" 以下是我目前打的: N = 1000 S = 30 #=========================== #main x = 0 while x <= S: y = 0 while y <= S: z = 0 while z <= S: if (x + y + z == S) and (20 * x + 40 * y + 10 * z == N): print("薯條 %d 份; 漢堡 %d 個; 可樂 %d 杯" % (x, y, z)) z = z + 1 y = y + 1 x = x +1 我想請問該如何加入無法分配的條件在此迴圈中呢? 我本來是加else: print("無法依條件分配") 在print("薯條 %d 份; 漢堡 %d 個; 可樂 %d 杯" % (x, y, z))的下面一行 但就會變成一直迴圈無法依條件分配這行字 所以想請問我該怎麼改才對呢? 先謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.52.62.94 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1569561144.A.3DD.html
robert09080: 我的話會先把兩個方程式相減,變成二元一次,之後這 09/27 13:23
robert09080: 樣一個迴圈就可以解決,然後第三個未知數也可以求出 09/27 13:23
robert09080: 來 09/27 13:23
robert09080: 無法分配用t=0,有找到一解t+=1 09/27 13:24
bibo9901: 你該學的是數學.. 09/27 13:34
handsomeLin: 是我數學不好嗎?這不是三元一次嗎?怎麼變二元一次 09/27 14:26
handsomeLin: 了 09/27 14:26
handsomeLin: 哦沒事 總量固定確實可以用二元一次解 我道歉 09/27 14:31
yummy8765: 你是指不想出現好幾百行“無法分配“嗎 09/27 15:59
yummy8765: 最簡單的方法 可以令一個變數x=0 如果有符合條件讓x=1 09/27 16:00
yummy8765: 最後檢查x=0或x=1就好 09/27 16:00
yummy8765: 用boolean也可以 09/27 16:01
sherees: else可以啊 只是大概會有26xx條無法依條件分配而已 09/27 18:11
sherees: 26xxx 09/27 18:12
ttff: 如果你有記得加上z=z+1那程式不是一直迴圈 而是都有print 09/27 20:51
gaexpa066454: 看了一下判斷式 一開始一直出現無法分配很正常啊 09/27 21:28
gaexpa066454: 用elif加個條件 什麼情況算無法分配吧? 09/27 22:01
s312580: 所有方法可以用土法煉鋼的方式寫成迴圈 09/28 04:51