wuhook 发表于 2020-6-2 20:42:39

零基础入门学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:45:40

本帖最后由 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) 来计算得出结果后相加继续循环直到循环结束

heidern0612 发表于 2020-6-2 20:48:08

2的64次方。

wuhook 发表于 2020-6-2 20:59:30

Twilight6 发表于 2020-6-2 20:45
pow(x,y)   就是 x 的 y 次方

通过观察发现


谢谢哈,一开始不明白为什么2的0次方等于1,百度了下是(任何非零数的0次方都等于1)

Twilight6 发表于 2020-6-2 21:00:36

wuhook 发表于 2020-6-2 20:59
谢谢哈,一开始不明白为什么2的0次方等于1,百度了下是(任何非零数的0次方都等于1)

没事~能帮助到你就好

iken 发表于 2022-11-9 12:51:40

请问一下
i = 1
sum = 0

while i <= 64:
    wheats = pow(2, i-1)
    total = sum + wheats
    i = i + 1
print("舍罕王应该给达依尔", total, "粒麦子!")

我写的这个 出来的数值有极大的不同,可以帮忙解释问题吗?
谢谢
页: [1]
查看完整版本: 零基础入门学PYTHON第09课后