[問題] 請問關於迴圈的問題

看板Python作者 (娜娜米)時間4年前 (2019/09/27 13:12), 編輯推噓3(4113)
留言18則, 8人參與, 4年前最新討論串1/1
新手發問 題目是 薯條一份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

09/27 13:23, 4年前 , 1F
我的話會先把兩個方程式相減,變成二元一次,之後這
09/27 13:23, 1F

09/27 13:23, 4年前 , 2F
樣一個迴圈就可以解決,然後第三個未知數也可以求出
09/27 13:23, 2F

09/27 13:23, 4年前 , 3F
09/27 13:23, 3F

09/27 13:24, 4年前 , 4F
無法分配用t=0,有找到一解t+=1
09/27 13:24, 4F

09/27 13:34, 4年前 , 5F
你該學的是數學..
09/27 13:34, 5F

09/27 14:26, 4年前 , 6F
是我數學不好嗎?這不是三元一次嗎?怎麼變二元一次
09/27 14:26, 6F

09/27 14:26, 4年前 , 7F
09/27 14:26, 7F

09/27 14:31, 4年前 , 8F
哦沒事 總量固定確實可以用二元一次解 我道歉
09/27 14:31, 8F

09/27 15:59, 4年前 , 9F
你是指不想出現好幾百行“無法分配“嗎
09/27 15:59, 9F

09/27 16:00, 4年前 , 10F
最簡單的方法 可以令一個變數x=0 如果有符合條件讓x=1
09/27 16:00, 10F

09/27 16:00, 4年前 , 11F
最後檢查x=0或x=1就好
09/27 16:00, 11F

09/27 16:01, 4年前 , 12F
用boolean也可以
09/27 16:01, 12F

09/27 18:11, 4年前 , 13F
else可以啊 只是大概會有26xx條無法依條件分配而已
09/27 18:11, 13F

09/27 18:12, 4年前 , 14F
26xxx
09/27 18:12, 14F

09/27 20:51, 4年前 , 15F
如果你有記得加上z=z+1那程式不是一直迴圈 而是都有print
09/27 20:51, 15F

09/27 21:28, 4年前 , 16F
看了一下判斷式 一開始一直出現無法分配很正常啊
09/27 21:28, 16F

09/27 22:01, 4年前 , 17F
用elif加個條件 什麼情況算無法分配吧?
09/27 22:01, 17F

09/28 04:51, 4年前 , 18F
所有方法可以用土法煉鋼的方式寫成迴圈
09/28 04:51, 18F
文章代碼(AID): #1TZPeuFT (Python)