这是单词问题:制作一个项目需要2分7秒。不幸的是,在生产了143件物品之后,制造商必须冷却5分13秒才能继续使用。编写一个程序,计算制造给定数量项目所需的时间。
测试编号是1340项。
numItems = 1340
produceitem = 2 * 60 + 7 #2 minutes and 7 seconds
cooldown = 5 * 60 + 13 #5 minutes and 13 seconds
items_before_delay = 143
productiontime = 0
if numItems <= 143:
productiontime = produceitem * numItems
if numItems > 143:
productiontime = (produceitems * numItems) - (numItems / items_before_delay * cooldown)
print str(productiontime) + "seconds"
测试编号的输出应为172997秒,但我的程序输出为167363秒。
任何人都可以让我知道我可以做些什么来改善这一点吗?
答案 0 :(得分:2)
你减去了冷却时间,而不是添加它。就是这样。
所以,改变一下:
productiontime = (produceitems * numItems) - (numItems / items_before_delay * cooldown)
......对此:
productiontime = (produceitems * numItems) + (numItems / items_before_delay * cooldown)
然而,虽然我们在这里:
produceitem
,但使用了produceitems
。如果这完全奏效,可能是因为你在交互式翻译中很幸运,已经定义了produceitems
。items_before_delay
,请不要直接使用数字143,请使用items_before_delay
。if a <= b:
然后if a > b:
;只需将第二个更改为else:
。if
。如果numItems <= 143
,(numitems / items_before_delay * cooldown)
将为0,那么第二个版本仍会给出正确答案。//
截断整数除法比/
更好。这意味着你的代码仍然可以在Python 3.x中运行,或者如果有人做了__future__
语句等等,更重要的是,它意味着人类可以阅读和理解你的代码,而不必猜测它是否是2 .x或3.x。items_before_delay
遵循PEP8建议,但numItems
没有。productiontime
之类的变量。172997seconds
没有空格。所以:
num_items = 1340
produce_item = 2 * 60 + 7 #2 minutes and 7 seconds
cooldown = 5 * 60 + 13 #5 minutes and 13 seconds
items_before_delay = 143
total_cooldown = num_items // items_before_delay * cooldown
production_time = (produce_item * num_items) + total_cooldown
print '{} seconds'.format(production_time)