[问题] 请问关于循环的问题

楼主: nanami (咪子)   2019-09-27 13:12:22
新手发问
题目是
薯条一份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))的下面一行
但就会变成一直循环无法依条件分配这行字
所以想请问我该怎么改才对呢?
先谢谢各位
作者: robert09080 (Aspettarei)   2019-09-27 13:23:00
我的话会先把两个方程式相减,变成二元一次,之后这样一个循环就可以解决,然后第三个未知数也可以求出来无法分配用t=0,有找到一解t+=1
作者: bibo9901 (function(){})()   2019-09-27 13:34:00
你该学的是数学..
作者: handsomeLin (DoGLin)   2019-09-27 14:26:00
是我数学不好吗?这不是三元一次吗?怎么变二元一次了哦没事 总量固定确实可以用二元一次解 我道歉
作者: yummy8765 (tsuyoku)   2019-09-27 15:59:00
你是指不想出现好几百行“无法分配“吗最简单的方法 可以令一个变量x=0 如果有符合条件让x=1最后检查x=0或x=1就好用boolean也可以
作者: sherees (ShaunTheSheep)   2019-09-27 18:11:00
else可以啊 只是大概会有26xx条无法依条件分配而已26xxx
作者: ttff (十八尖山下智久)   2019-09-27 20:51:00
如果你有记得加上z=z+1那程式不是一直循环 而是都有print
作者: gaexpa066454 (玄)   2019-09-27 21:28:00
看了一下判断式 一开始一直出现无法分配很正常啊用elif加个条件 什么情况算无法分配吧?
作者: s312580 (waiting)   2019-09-28 04:51:00
所有方法可以用土法炼钢的方式写成循环

Links booklink

Contact Us: admin [ a t ] ucptt.com