零基础入门学PYTHON第09课后
故事背景:相传国际象棋是古印度舍罕王的宰相达依尔发明的。
舍罕王十分喜爱国际象棋,便决定让宰相自己选择何种赏赐。这位聪明的宰相指着 8×8 共 64 格的象棋棋盘说:陛下,请您赏给我一些麦子吧。就在棋盘的第 1 格中放 1 粒,第 2 格放 2 粒,第 3 格放 4 粒,以后每一格都比前一格增加一倍,依此放完棋盘上 64 格,我就感激不尽了……
舍罕王听了达依尔这个“小小”的要求,便让人扛来一袋麦子,他要兑现许诺。结果,在给达依尔发放麦子时,舍罕王发现他要给达依尔的麦子比自己想象的要多得多,一袋麦子是远远不够的……
请编程计算舍罕王应该给达依尔多少粒麦子?
答案是:
i = 1
sum = 0
while i <= 64:
wheats = pow(2, i-1)
sum = sum + wheats
i = i + 1
print("舍罕王应该给达依尔", sum, "粒麦子!")
我是小白,wheats = pow(2,i-1)这快我没看懂哪位大侠能告诉我调用pow函数并且pow(2,i-1) 这个 i-1的作用
{:10_285:} {:10_285:} {:10_285:} {:10_285:} {:10_285:} 本帖最后由 Twilight6 于 2020-6-2 20:56 编辑
pow(x,y) 就是 x 的 y 次方
通过观察发现
第 1 格—>放 1 粒 # 2 的 0 次方 == 1
第 2 格—>放 2 粒 # 2 的 1 次方 == 2
第 3 格—>放 4 粒 # 2 的 2 次方 == 4
第 4 格—>放 8 粒 # 2 的 3 次方 == 8
次幂数正好小于格子数的 1 次 所以 每次循环用 pow(x,i-1) 来计算得出结果后相加继续循环直到循环结束
2的64次方。 Twilight6 发表于 2020-6-2 20:45
pow(x,y) 就是 x 的 y 次方
通过观察发现
谢谢哈,一开始不明白为什么2的0次方等于1,百度了下是(任何非零数的0次方都等于1) wuhook 发表于 2020-6-2 20:59
谢谢哈,一开始不明白为什么2的0次方等于1,百度了下是(任何非零数的0次方都等于1)
没事~能帮助到你就好 请问一下
i = 1
sum = 0
while i <= 64:
wheats = pow(2, i-1)
total = sum + wheats
i = i + 1
print("舍罕王应该给达依尔", total, "粒麦子!")
我写的这个 出来的数值有极大的不同,可以帮忙解释问题吗?
谢谢
页:
[1]