[問題] 繩子減半

看板Python作者 (be yourself)時間6年前 (2019/03/21 23:59), 編輯推噓2(2024)
留言26則, 9人參與, 6年前最新討論串1/1
練習題目為: 若有一條繩子長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

03/22 00:06, 6年前 , 1F
n=0,length=3000,while length>5: length*=0.5
03/22 00:06, 1F

03/22 00:06, 6年前 , 2F
n+=1 print(n,length) 10 2.9296875
03/22 00:06, 2F

03/22 00:06, 6年前 , 3F
**是怎麼來的??
03/22 00:06, 3F

03/22 00:08, 6年前 , 4F
怎麼不每次iteration印出來
03/22 00:08, 4F

03/22 00:09, 6年前 , 5F
然後從1開始,運算完第一次之後的n是2
03/22 00:09, 5F

03/22 00:09, 6年前 , 6F
所以起始值要從0開始
03/22 00:09, 6F

03/22 00:17, 6年前 , 7F
用0.5的N 次方來解題,平方的語法寫錯了,謝謝指正
03/22 00:17, 7F

03/22 09:00, 6年前 , 8F
問題不是出在什麼平方的語法錯。你認真去debug 一下吧
03/22 09:00, 8F

03/22 09:01, 6年前 , 9F
,錯在哪沒搞清楚,你以後再學下去很吃力,尤其這次
03/22 09:01, 9F

03/22 09:01, 6年前 , 10F
問題出在基本邏輯上。
03/22 09:01, 10F

03/22 09:01, 6年前 , 11F
你的解法根本就有問題 你拿紙算一下就知道了
03/22 09:01, 11F

03/22 09:02, 6年前 , 12F
他的問題應該是不知道後面的值會被前面的值取代掉
03/22 09:02, 12F

03/22 09:02, 6年前 , 13F
舉個例子,留意一下第三日和第四日的長度變化
03/22 09:02, 13F

03/22 09:02, 6年前 , 14F
所以才會有這種解題思路
03/22 09:02, 14F

03/22 09:04, 6年前 , 15F
對,所以我才強調OP 要搞清楚問題所在。這種基本邏輯
03/22 09:04, 15F

03/22 09:04, 6年前 , 16F
和語法問題沒搞懂,根本學不下去
03/22 09:04, 16F

03/22 11:01, 6年前 , 17F
你想想看length跟n都是會變的 再看看你的寫法
03/22 11:01, 17F

03/22 11:14, 6年前 , 18F
你的繩子length已經每天都=length*0.5了,就不需要**n
03/22 11:14, 18F

03/22 11:14, 6年前 , 19F
了,因為每天都只要*0.5,但你這樣寫是第一天留1/2,
03/22 11:14, 19F

03/22 11:14, 6年前 , 20F
第二天把剩下的再留1/4以此類推
03/22 11:14, 20F

03/22 13:14, 6年前 , 21F
第一天:* 1/2
03/22 13:14, 21F

03/22 13:15, 6年前 , 22F
第二天:* 1/4
03/22 13:15, 22F

03/22 13:15, 6年前 , 23F
第三天:* 1/8
03/22 13:15, 23F

03/22 13:15, 6年前 , 24F
第四天:* 1/16
03/22 13:15, 24F

03/22 13:15, 6年前 , 25F
第五天:* 1/32
03/22 13:15, 25F

03/22 13:16, 6年前 , 26F
前面四天你就已經累計了10個1/2了....1024
03/22 13:16, 26F
文章代碼(AID): #1SaxJAHJ (Python)
文章代碼(AID): #1SaxJAHJ (Python)