[问题] 绳子减半

楼主: qokey0817 (be yourself)   2019-03-21 23:59:03
练习题目为:
若有一条绳子长3000公尺,每天剪去一半的长度,需多少天绳子的长度会短于5公尺。
程式如下:
n=1
length=3000
while length >= 5 :
length=length*(0.5**n)
n+=1
print(length,n)
>>>2.9296875 5
长度对,但天数应为10天,要从哪里debug呢
作者: chaotic0307 (坚持、耐心、努力学习)   2019-03-22 00:06:00
n=0,length=3000,while length>5: length*=0.5n+=1 print(n,length) 10 2.9296875
作者: zo6596001 (超帅肥宅)   2019-03-22 00:06:00
**是怎么来的??
作者: djshen (djshen)   2019-03-22 00:08:00
怎么不每次iteration印出来
作者: zo6596001 (超帅肥宅)   2019-03-22 00:09:00
然后从1开始,运算完第一次之后的n是2所以起始值要从0开始
楼主: qokey0817 (be yourself)   2019-03-22 00:17:00
用0.5的N 次方来解题,平方的语法写错了,谢谢指正
作者: adrianshum (Alien)   2019-03-22 09:00:00
问题不是出在什么平方的语法错。你认真去debug 一下吧,错在哪没搞清楚,你以后再学下去很吃力,尤其这次问题出在基本逻辑上。
作者: MOONY135 (谈无欲)   2019-03-22 09:01:00
你的解法根本就有问题 你拿纸算一下就知道了他的问题应该是不知道后面的值会被前面的值取代掉
作者: adrianshum (Alien)   2019-03-22 09:02:00
举个例子,留意一下第三日和第四日的长度变化
作者: MOONY135 (谈无欲)   2019-03-22 09:02:00
所以才会有这种解题思路
作者: adrianshum (Alien)   2019-03-22 09:04:00
对,所以我才强调OP 要搞清楚问题所在。这种基本逻辑和语法问题没搞懂,根本学不下去
作者: hwk (Kai)   2019-03-22 11:01:00
你想想看length跟n都是会变的 再看看你的写法
作者: moodoa3583 (金牌台灣啤酒)   2019-03-22 11:14:00
你的绳子length已经每天都=length*0.5了,就不需要**n了,因为每天都只要*0.5,但你这样写是第一天留1/2,第二天把剩下的再留1/4以此类推
作者: coeric ( )   2019-03-22 13:14:00
第一天:* 1/2第二天:* 1/4第三天:* 1/8第四天:* 1/16第五天:* 1/32前面四天你就已经累计了10个1/2了....1024

Links booklink

Contact Us: admin [ a t ] ucptt.com