看板 Python 關於我們 聯絡資訊
練習題目為: 若有一條繩子長3000公尺,每天剪去一半的長度,需多少天繩子的長度會短於5公尺。 程式如下: n=1 length=3000 while length >= 5 : length=length*(0.5**n) n+=1 print(length,n) >>>2.9296875 5 長度對,但天數應為10天,要從哪裡debug呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.141.132 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1553183946.A.453.html
chaotic0307: n=0,length=3000,while length>5: length*=0.5 03/22 00:06
chaotic0307: n+=1 print(n,length) 10 2.9296875 03/22 00:06
zo6596001: **是怎麼來的?? 03/22 00:06
djshen: 怎麼不每次iteration印出來 03/22 00:08
zo6596001: 然後從1開始,運算完第一次之後的n是2 03/22 00:09
zo6596001: 所以起始值要從0開始 03/22 00:09
qokey0817: 用0.5的N 次方來解題,平方的語法寫錯了,謝謝指正 03/22 00:17
adrianshum: 問題不是出在什麼平方的語法錯。你認真去debug 一下吧 03/22 09:00
adrianshum: ,錯在哪沒搞清楚,你以後再學下去很吃力,尤其這次 03/22 09:01
adrianshum: 問題出在基本邏輯上。 03/22 09:01
MOONY135: 你的解法根本就有問題 你拿紙算一下就知道了 03/22 09:01
MOONY135: 他的問題應該是不知道後面的值會被前面的值取代掉 03/22 09:02
adrianshum: 舉個例子,留意一下第三日和第四日的長度變化 03/22 09:02
MOONY135: 所以才會有這種解題思路 03/22 09:02
adrianshum: 對,所以我才強調OP 要搞清楚問題所在。這種基本邏輯 03/22 09:04
adrianshum: 和語法問題沒搞懂,根本學不下去 03/22 09:04
hwk: 你想想看length跟n都是會變的 再看看你的寫法 03/22 11:01
moodoa3583: 你的繩子length已經每天都=length*0.5了,就不需要**n 03/22 11:14
moodoa3583: 了,因為每天都只要*0.5,但你這樣寫是第一天留1/2, 03/22 11:14
moodoa3583: 第二天把剩下的再留1/4以此類推 03/22 11:14
coeric: 第一天:* 1/2 03/22 13:14
coeric: 第二天:* 1/4 03/22 13:15
coeric: 第三天:* 1/8 03/22 13:15
coeric: 第四天:* 1/16 03/22 13:15
coeric: 第五天:* 1/32 03/22 13:15
coeric: 前面四天你就已經累計了10個1/2了....1024 03/22 13:16