Python 无法确定这是否是正确的代码?
您好,我必须对下面的问题进行编程(我的代码在下面),但是一旦您阅读了问题,您就会明白我需要代码来添加前面的所有数字。如果有人能看到我的代码,并告诉我它是否已经在这样做,如果没有,我可以如何去做,我尝试了一些不起作用的东西,因为答案一直是0 问题是: 正如你所知,国际象棋的发明者是个了不起的人物 聪明的家伙。随着故事的发展,发明家将游戏介绍给了 国王和国王都很高兴。国王问国王说什么 发明家想要作为报酬。他要了一粒麦片当早餐 第一个方块,然后让接下来的63个方块中的每一个加倍 前广场。正如传说中的那样,国王同意了,但并不过分 对最后的付款感到满意。创建一个程序来计算 国王必须支付的粮食。用英镑表达你的答案;假定 每磅有7000粒谷物 我的代码:Python 无法确定这是否是正确的代码?,python,Python,您好,我必须对下面的问题进行编程(我的代码在下面),但是一旦您阅读了问题,您就会明白我需要代码来添加前面的所有数字。如果有人能看到我的代码,并告诉我它是否已经在这样做,如果没有,我可以如何去做,我尝试了一些不起作用的东西,因为答案一直是0 问题是: 正如你所知,国际象棋的发明者是个了不起的人物 聪明的家伙。随着故事的发展,发明家将游戏介绍给了 国王和国王都很高兴。国王问国王说什么 发明家想要作为报酬。他要了一粒麦片当早餐 第一个方块,然后让接下来的63个方块中的每一个加倍 前广场。正如传说中的那
count = 0
number1 = 1
num = 2
while count < 63:
num = num * 2
count += 1
print "He payed ", num, " Pounds."
count=0
数字1=1
num=2
当计数小于63时:
num=num*2
计数+=1
打印“他付了钱”,数字,“英镑。”
因此,如果您改为计算:
2 ^ 64 - 1
你会得到你要的谷物的数量。(请注意,我是用常用的数学表示法给出这个答案的,而不是Python表示法。2^64
在Python中做了一些不同的事情。请使用**
代替。)
然后将这个数字除以7000,得到问题最终想要的磅数
当然,如果整个练习的重点是教循环,那么代数等式与练习的目的背道而驰——但这些等式是编程的重要组成部分。有关答案的“捷径”,请参见sarnold的答案。但是,如果要通过循环执行此操作,请对代码进行以下更改:
+----+----+--
| | |
| 1 | |
+----+----+--
| | |
| | |
+----+----+--
| | |
并将每个正方形加倍:
+----+----+--
| | |
| 1 | 2 |
+----+----+--
| | |
| | |
+----+----+--
| | |
到目前为止还不错。然而,我们感兴趣的是总共有多少粮食,因此国王不得不支付
1 + 2 = 3
所有方块的成本,而不仅仅是最后一个。继续:
+----+----+--
| | |
| 1 | 2 |
+----+----+--
| | |
| 4 | 8 |
+----+----+--
| | |
1 + 2 + 4 + 8 = 15 grains
以此类推,我们将以
1 + 2 + ( 64 times ) grains
不管结果是什么数字
不过,问题还有最后一部分;你要用“磅”而不是“谷物”来表达你的答案,所以
务必将结果转换为正确的单位欢迎使用堆栈溢出!请在家庭作业问题上加上标签,这为我们提供了一个指标,表明我们应该更好地解释答案,并缩短修改代码的时间。:)事实上,你根本不需要求和,因为平方和1..n等于2^n-1格令。事实上,这里有一个完整的解决方案:
print(pow(2,64)-1)/7000
。如果你问我的话,这是一个蹩脚的编程作业。如果你尝试了一些不起作用的东西,你也应该证明这一点。也许这几乎是对的,ew会注意到?@Juhana从0到n-1的二次幂和是2^(n)-1:)@Ord!正方形n上有2^(n-1)个晶粒:)应该是2^64-1。。。第一个正方形是2^0,所以第64个正方形是2^63。@Ord,谢谢。嘘。在我提到程序片段中的过度计算之后。。。
+----+----+--
| | |
| 1 | 2 |
+----+----+--
| | |
| 4 | 8 |
+----+----+--
| | |
1 + 2 + 4 + 8 = 15 grains
1 + 2 + ( 64 times ) grains