2011-11-03 199 views
0

你好,我必須編寫問題的波紋管(我的代碼是在那個)然而,一旦你讀了這個問題,你會明白,我需要的代碼也添加所有以前的數字。如果有人可以看到我的代碼,並告訴我,如果它已經這樣做,如果不是我怎麼能去了解它我嘗試一些東西,不作爲答案的工作不斷涌現爲0不能確定這是否是正確的代碼?

問題:

正如你所知道的遊戲國際象棋的發明者是一個相當聰明的傢伙 。隨着故事的發展,發明人向 呈現了這場比賽,國王和國王非常高興。國王問什麼發明者希望作爲付款。他要求爲第一個廣場提供一粒穀物,並且在接下來的63個廣場中每一個都是前一廣場的 的兩倍。隨着故事的發展,國王表示同意,但最終支付令人高興的不是 。創建一個程序,計算國王不得不支付多少糧食。用磅表示你的答案;假設 有7000格令磅。

我的代碼:

count = 0 
number1 = 1 
num = 2 

while count < 63: 
    num = num * 2 
    count += 1 

print "He payed ", num, " Pounds." 
+0

歡迎來到堆棧溢出!請用[標籤:家庭作業]標記作業問題,這爲我們提供了一個指標,即我們應該更好地解釋答案,縮短代碼修復時間。 :) – sarnold

+1

事實上,由於1..n的平方和是2^n-1個穀物,所以根本不需要總計金額。事實上,這是一個完整的解決方案:'print(pow(2,64)-1)/ 7000'。如果你問我,有點蹩腳的編程作業。 – JJJ

+0

如果你嘗試了一些不起作用的東西,那麼你應該已經展示過了。也許這是幾乎正確的,並且ew會注意到這一點? – hugomg

回答

2
count=0 
number1=1 
num=2 

while count<63: 
    num=num*2 
    count+=1 

print"He payed ",num," Pounds." 

幾點意見:你是不是在你的代碼中使用number1 - 這是最好刪除未使用的變量,因爲它們的存在可以很容易地從你的視線代碼的真實流程。其次,因爲你從num=2開始,你實際上會想出一個比平常大的董事會第65平方米的穀物粒數。

有提供一個整潔的代數招你,但:

1 + 2 + 4 + ... + 2^n == 2^(n+1) - 1 

所以,如果你不是計算:

2^64 - 1 

你會得到要求的穀物顆粒的數量。 (請注意,我已經給在平時的數學符號,這個答案 - Python的符號2^64做了Python中不同的使用**而不是爲exponentiation。)

然後了7000分,這個數字得到英鎊,問題最終通緝。

當然,如果練習的要點是教循環,那麼代數平等就會違背練習的目的 - 但這些平等是編程的重要部分。

+1

應該是2^64-1 ...第一個方格是2^0,所以第64個方格是2^63。 – Ord

+0

@Ord,_thanks_。嘖。在我甚至提到了程序片段中的過度計算之後...... – sarnold

0

請參閱sarnold關於答案的「捷徑」的答案。但是,如果你想通過循環做到這一點,然後讓你的代碼以下更改:

  1. NUM應該開始爲1,因爲只有一個糧食收取的第一方陣
  2. while循環應該讀,而計數< 64 ...這種方式循環運行正好64次,一次對於板上的每個方塊
  3. 做一個新的變量,也許稱爲總數。將其初始化爲零。在每個num=num*2行後面,你應該去total += num - num只給你國王爲一個正方形支付的金額,所以你應該使用total來累積所有正方形的結果。
  4. 最後,把你的發球機(total)除以7000,因爲有7000穀物到一英鎊。

此外,一些方法來清理代碼:

  1. 使用for循環,而不是一段時間試試。那麼你不需要明確地增加計數。您可以使用:for count in range(0,64):,然後刪除您的計數顯式聲明(count=0)和count+=1
  2. 使用num *= 2代替num=num*2
0

有很多的這個單詞問題的小步驟;這可能有助於畫一幅畫:

一個開始「糧食」的第一方陣

+----+----+-- 
| | | 
| 1 | | 
+----+----+-- 
| | | 
| | | 
+----+----+-- 
| | | 

每平方米增加一倍:

+----+----+-- 
| | | 
| 1 | 2 | 
+----+----+-- 
| | | 
| | | 
+----+----+-- 
| | | 

到目前爲止好。我們感興趣的是多少糧食總,雖然如此,國王不得不支付

1 + 2 = 3 

成本都廣場,不僅是最後一個。繼續:

+----+----+-- 
| | | 
| 1 | 2 | 
+----+----+-- 
| | | 
| 4 | 8 | 
+----+----+-- 
| | | 

1 + 2 + 4 + 8 = 15 grains 

等等,我們會

1 + 2 + (64 times) grains 

這原來是什麼號結束。

儘管如此,還是有最後一部分的問題;你要表達你的答案不是「穀物」,而是「磅」,所以 確實將結果轉換爲正確的單位