【发布时间】:2021-11-19 21:06:42
【问题描述】:
创建一个程序,我可以确定我是否可以将所需公斤的材料准确地装入一组 5 公斤和 1 公斤的容器中。问题是,由于某种原因,只有在所有条件都失败时,函数才应该打印 -1。此外,对于某些数字,它会随机停止工作。
程序有 3 个输入:
- 5kg箱量,
- 1kg 盒和
- 需要包装的材料公斤数。
如果可能的话,它需要计算需要多少个盒子。如果可能,它必须首先使用所有 5 公斤的箱子。如果不能用精确的数量完成,它需要打印-1。
例如。
- 我有
-
2x 5kg 箱子,
-
6x 1kg 箱子
-
14 公斤的材料。
首先,我需要使用所有 5 公斤的箱子。现在我有 10 公斤装在 2 个 5 公斤的盒子里,剩下 4 公斤的材料。我有 6 个 1kg 的箱子,所以我从那里拿了 4 个箱子,剩下总共 6 个箱子用来包装它。
- 如果我有
- 2x 5kg 盒子,
- 2x 1kg 盒
- 15公斤材料,
程序应该打印出-1,因为它不可能打包。
这是我迄今为止尝试过的:
s = int(input("Amount of 5kg boxes: "))
v = int(input("Amount of 1kg boxes: "))
k = int(input("Material in kg's: "))
def box(a, b, c):
kar = 0
while c>=5 and a>0:
c = c-5
a = a-1
kar = kar + 1
if c == 0:
print(kar)
else:
if b>=c:
kar = kar + c
print(kar)
else:
print(-1)
box(s, v, k)
【问题讨论】:
-
请使用更具描述性的变量名称。
-
你根本不需要 while 循环。您将使用的 5 公斤箱子的数量是
min(s, k//5)。然后,需要一个if来查看剩余的东西是否适合您剩余的 1 公斤箱子。 -
你为什么要为此使用循环?不只是一些简单的数学计算出来吗?
-
只需...从
material中减去number of 5kg boxes * 5,然后再减去number of 1kg boxes,看看结果是否 >= 0...‽ -
我的意思是
a, b, c变量。
标签: python function while-loop conditional-statements break