为什么我的Python代码仅适用于特定输入?

时间:2018-09-13 01:07:56

标签: python

此刻我正在学习Python,需要一些编码方面的帮助。

我必须创建一个程序来计算一定数量的物品所需的盒子数量。

这是完整的任务描述:

  

不同尺寸的盒子可以存储特定数量的物品。有   3种盒子:

     
      
  • 大-最多可以存储5个物品
  •   
  • 中等-最多可以存储3个物品
  •   
  • 小-只能存储1个物品
  •   
     

程序应:

     
      
  1. 假设用户输入的任何大于5的整数,请让用户输入代表多个项目的整数。
  2.   
  3. 计算存储项目所需的满箱最少数量。只允许装满箱子的盒子
  4.   
  5. 显示使用的大,中,小盒子的数量
  6.   
  7. 显示总箱数
  8.   

这是我的代码:

if item >= 5 :
if item % 5 == 0 :
    big = int(item / 5)
elif item % 5 > 0 :
    big = int(item / 5)
    remitem = item % 5

    if remitem >= 3 :
        if remitem % 3 == 0 :
            med = int(remitem / 3)
        if remitem % 3 >= 1 :
            med = 0
        elif remitem % 3 > 2 :
            med = int(remitem / 3)

问题是,如果我输入18,它会给我正确的盒子数,但是如果我输入19,它就不会。

该如何解决?

我正在使用Python 3.5.2。

3 个答案:

答案 0 :(得分:0)

这是最简单的答案

def printBoxes(item):
    big  = int(item/5)
    remitem = item - big*5
    med = int(remitem/3)
    small = remitem - med*3
    print "big - %s \nmedium - %s \nsmall - %s" % (big, med, small)

printBoxes(99)

答案 1 :(得分:0)

if item >= 5 : 
    if item % 5 == 0 : 
            big = int(item / 5) 
   elif item % 5 > 0 : 
           big = int(item / 5) 
           remitem = item % 5

if remitem >= 3 :
    if remitem % 3 == 0 : 
           med = int(remitem / 3)
    if remitem % 3 == 1 : 
         #modified this part of code
          med = int(remitem/3)
          small=1
    elif remitem % 3 ==2 : 
          small=remitem

猜猜您错过了“小”框的代码。

答案 2 :(得分:0)

我认为您只是使问题变得更加复杂,使编码变得更加困难,使用模数%和余数的路由,如果您使数学更简单,那么编码也会变得更加简单

num_items = int(input("Enter the number of items to store: "))
big = int(num_items/5)
med = int((num_items - big * 5)/ 3)
small = num_items - big * 5 - med * 3 
total = big + med + small

print(f"\nBig boxes: {big}\nMedium boxes: {med}\nSmall boxes: {small}")
print(f"\nTotal Boxes : {total}")

输出

(xenial)vash@localhost:~/python$ python3.7 this.py
Enter the number of items to store: 12

Big boxes: 2
Medium boxes: 0
Small boxes: 2

Total Boxes : 4