作者nanami (娜娜米)
看板Python
標題[問題] 請問關於迴圈的問題
時間Fri Sep 27 13:12:22 2019
新手發問
題目是
薯條一份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://webptt.com/m.aspx?n=bbs/Python/M.1569561144.A.3DD.html
1F:→ robert09080: 我的話會先把兩個方程式相減,變成二元一次,之後這 09/27 13:23
2F:→ robert09080: 樣一個迴圈就可以解決,然後第三個未知數也可以求出 09/27 13:23
3F:→ robert09080: 來 09/27 13:23
4F:→ robert09080: 無法分配用t=0,有找到一解t+=1 09/27 13:24
5F:推 bibo9901: 你該學的是數學.. 09/27 13:34
6F:噓 handsomeLin: 是我數學不好嗎?這不是三元一次嗎?怎麼變二元一次 09/27 14:26
7F:→ handsomeLin: 了 09/27 14:26
8F:推 handsomeLin: 哦沒事 總量固定確實可以用二元一次解 我道歉 09/27 14:31
9F:→ yummy8765: 你是指不想出現好幾百行“無法分配“嗎 09/27 15:59
10F:→ yummy8765: 最簡單的方法 可以令一個變數x=0 如果有符合條件讓x=1 09/27 16:00
11F:→ yummy8765: 最後檢查x=0或x=1就好 09/27 16:00
12F:→ yummy8765: 用boolean也可以 09/27 16:01
13F:→ sherees: else可以啊 只是大概會有26xx條無法依條件分配而已 09/27 18:11
14F:→ sherees: 26xxx 09/27 18:12
15F:→ ttff: 如果你有記得加上z=z+1那程式不是一直迴圈 而是都有print 09/27 20:51
16F:推 gaexpa066454: 看了一下判斷式 一開始一直出現無法分配很正常啊 09/27 21:28
17F:推 gaexpa066454: 用elif加個條件 什麼情況算無法分配吧? 09/27 22:01
18F:→ s312580: 所有方法可以用土法煉鋼的方式寫成迴圈 09/28 04:51