2

単語の問題は次のとおりです。アイテムを作成するのにちょうど 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 秒と出力されます。

これを改善するために何ができるか誰か教えてもらえますか?

4

1 に答える 1

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:。2番目のものをに変更するだけelse:です。
  • 実際には、まったく必要ありませんif。が 0 になる場合numItems <= 143、 2 番目のバージョンでも正しい答えが得られます。(numitems / items_before_delay * cooldown)
  • //かなり古いバージョンの Python を扱っている場合を除き、通常、整数除算の切り捨てには を明示的に使用するよりも/. つまり、あなたのコードは Python 3.x でも動作するか、誰かが__future__ステートメントを実行した場合などを意味します。さらに重要なことに、人間はコードが 2.x 用か 3.x 用かを推測することなく、コードを読んで理解できることを意味します。バツ。
  • 名前には一貫したスタイルを使用してください。items_before_delayPEP8 の推奨に従っていますが、そうでnumItemsはありません。
  • 変数を設定する前のように、変数を「宣言」する必要はありませんproductiontime
  • 2 つの文字列を連結しても間にスペースはありません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)
于 2013-02-28T01:21:50.157 に答える