您正在减去冷却时间,而不是添加它。而已。
所以,改变这个:
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)