您好我必须编写下面的问题(我的代码在那下)但是一旦您阅读了问题,您就会明白我需要代码来添加以前的所有数字。如果有人能够看到我的代码并告诉我它是否已经这样做了,如果不是我怎么办呢,我尝试了一些不起作用的东西,因为答案保持为0。
问题:
如你所知,游戏象棋的发明者是相当的 聪明的家伙。随着故事的发展,发明者将游戏呈现给了 国王和国王非常高兴。国王问什么了 发明家想要付款。他要求一粒谷物 第一个正方形,并使接下来的63个正方形中的每一个加倍 前广场。随着故事的发展,国王同意了,但事实并非如此 最后付款感到高兴。创建一个计算程度的程序 国王不得不付钱。用磅表示你的答案;假设 每磅有7000粒。
我的代码:
count = 0
number1 = 1
num = 2
while count < 63:
num = num * 2
count += 1
print "He payed ", num, " Pounds."
答案 0 :(得分: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 。)
然后将该数字除以7,000,以获得最终所需的问题。
当然,如果练习的重点是教导循环,那么代数平等就违背了练习的目的 - 但这些等式是编程的重要部分。
答案 1 :(得分:0)
请参阅sarnold对答案“快捷方式”的回答。但是,如果要通过循环执行此操作,请对代码进行以下更改:
num=num*2
行之后,你应该去total += num
- num只给你一个国王为一个方格支付的金额,所以你应该使用总数来累积所有方格的结果。total
)除以7000,因为有一万七千克到一磅。此外,还有一些清理代码的方法:
for
循环而不是一会儿。那么你不需要显式递增计数。您可以使用:for count in range(0,64):
,然后删除明确的计数声明(count=0
)和count+=1
num *= 2
代替num=num*2
答案 2 :(得分:0)
这个单词问题有很多小步骤;绘制图片可能会有所帮助:
从第一个方格上的一个“颗粒”开始
+----+----+--
| | |
| 1 | |
+----+----+--
| | |
| | |
+----+----+--
| | |
并将每个方块加倍:
+----+----+--
| | |
| 1 | 2 |
+----+----+--
| | |
| | |
+----+----+--
| | |
到目前为止一切顺利。但是,我们感兴趣的是总共有多少粮食,所以国王不得不支付
1 + 2 = 3
所有方块的成本,而不仅仅是最后一个。继续:
+----+----+--
| | |
| 1 | 2 |
+----+----+--
| | |
| 4 | 8 |
+----+----+--
| | |
1 + 2 + 4 + 8 = 15 grains
依此类推,我们最终会以
结束1 + 2 + ( 64 times ) grains
无论结果是什么数字。
但问题还有最后一部分;你要表达的答案不是“谷物”,而是“磅”,所以 确保将结果转换为正确的单位