鱼C论坛

 找回密码
 立即注册
查看: 1788|回复: 3

[已解决]关于麦子的问题

[复制链接]
发表于 2020-11-13 18:13:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
疑问:最新python练习题第9讲,关于麦子计算的问题。对于给出的标准答案代码的算法,我进行验证之后,是不是只计算到了第63格应当放的麦子,而没有计算第64个的应当放的麦子数?
1,我认为如果按照标准答案的代码来计算,如果要计算全部64格的应当放到麦子的总和,那么其中(i应当是:i <= 65),如果不这样的话,循环到64的时候,在计算i-1时就会变成63,所以最后就只算到了第63格,而64格就遗漏掉了。
2、如我参照我的写的这种代码就可以计算到第64格子。
以上两点我不知道说得是否有道理,还望各位老师指正!谢谢!
现将标准答案的代码和我自己编写的代码罗列如下:
①、i = 1
sum = 0

while i <= 64:##(我认为:此处如若要计算到第64格,那么应当是  i  <= 65)
    wheats = pow(2, i-1)##(当循环到64时,此出如果再减去1 就是 63,因而最终无法计算到64格)
    sum = sum + wheats
    i = i + 1

print("舍罕王应该给达依尔", sum, "粒麦子!")



②、i = 0# 初始化变量 i #
sum = 0# 初始化变量 sum #

while i <= 64:
    wheats =int(2**i) # 请计算每一个格子的麦子数,并将其赋值给 wheats 变量#
    sum = sum + wheats
    i = i + 1

print("舍罕王应该给达依尔", sum, "粒麦子!")
最佳答案
2020-11-13 18:22:49

你是没有认真读题了,第一格是只放了一个小麦,即 2 的 0 次方 等于 1

转为代码中循环理解,第一次 i = 1 ,所以 pow(2,1-1) 即 2^0 次方

依次类推,到最后一格,即 64 格时,i = 64 ,则应给的小麦就是 2^(64-1) 次幂,即 2^63


麦子1.png
麦子2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-13 18:22:49 | 显示全部楼层    本楼为最佳答案   

你是没有认真读题了,第一格是只放了一个小麦,即 2 的 0 次方 等于 1

转为代码中循环理解,第一次 i = 1 ,所以 pow(2,1-1) 即 2^0 次方

依次类推,到最后一格,即 64 格时,i = 64 ,则应给的小麦就是 2^(64-1) 次幂,即 2^63


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 18:27:48 | 显示全部楼层


而你的代码相当于计算到了第 65 个格子

因为你的 i 初始为 0 但是 最后 i = 64 时,麦子数就为 2^64 次方,相当于第 65 个格子

即麦子的公式是 2**(i-1) , i 是格子数,当在 64 格时候 麦子数应为 2**63
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 18:29:04 | 显示全部楼层
Twilight6 发表于 2020-11-13 18:22
你是没有认真读题了,第一格是只放了一个小麦,即 2 的 0 次方 等于 1

转为代码中循环理解,第一次 i  ...

哈哈,好像是这么回事哈,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-10 21:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表