您正在减去冷却时间,而不是添加它。而已。
所以,改变这个:
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 版本,否则通常显式使用
//
截断整数除法比使用/
. 这意味着您的代码仍然可以在 Python 3.x 中运行,或者如果有人执行了__future__
语句等,更重要的是,这意味着人类可以阅读和理解您的代码,而无需猜测它是用于 2.x 还是3.x。 X。
- 为您的名字使用一致的风格。
items_before_delay
遵循 PEP8 建议,但numItems
不遵循。
- 无需像
productiontime
在设置变量之前那样“声明”变量。
- 连接两个字符串之间不会有空格,而且您可能不希望
172997seconds
没有空格。
- 尽量避免将行写得太长而无法容纳 80 列。即使您认为没有人关心老式的文本编辑器,它仍然是 StackOverflow 等新型 Web 界面的问题。(没有人喜欢不必要的水平滚动条。)
所以:
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)