作者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/cn.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