[問題] 繩子減半

作者: 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