作者qokey0817 (be yourself)
看板Python
標題[問題] 繩子減半
時間Thu Mar 21 23:59:03 2019
練習題目為:
若有一條繩子長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://webptt.com/m.aspx?n=bbs/Python/M.1553183946.A.453.html
1F:推 chaotic0307: n=0,length=3000,while length>5: length*=0.5 03/22 00:06
2F:→ chaotic0307: n+=1 print(n,length) 10 2.9296875 03/22 00:06
3F:→ zo6596001: **是怎麼來的?? 03/22 00:06
4F:→ djshen: 怎麼不每次iteration印出來 03/22 00:08
5F:→ zo6596001: 然後從1開始,運算完第一次之後的n是2 03/22 00:09
6F:→ zo6596001: 所以起始值要從0開始 03/22 00:09
7F:→ qokey0817: 用0.5的N 次方來解題,平方的語法寫錯了,謝謝指正 03/22 00:17
8F:→ adrianshum: 問題不是出在什麼平方的語法錯。你認真去debug 一下吧 03/22 09:00
9F:→ adrianshum: ,錯在哪沒搞清楚,你以後再學下去很吃力,尤其這次 03/22 09:01
10F:→ adrianshum: 問題出在基本邏輯上。 03/22 09:01
11F:→ MOONY135: 你的解法根本就有問題 你拿紙算一下就知道了 03/22 09:01
12F:→ MOONY135: 他的問題應該是不知道後面的值會被前面的值取代掉 03/22 09:02
13F:→ adrianshum: 舉個例子,留意一下第三日和第四日的長度變化 03/22 09:02
14F:→ MOONY135: 所以才會有這種解題思路 03/22 09:02
15F:→ adrianshum: 對,所以我才強調OP 要搞清楚問題所在。這種基本邏輯 03/22 09:04
16F:→ adrianshum: 和語法問題沒搞懂,根本學不下去 03/22 09:04
17F:→ hwk: 你想想看length跟n都是會變的 再看看你的寫法 03/22 11:01
18F:推 moodoa3583: 你的繩子length已經每天都=length*0.5了,就不需要**n 03/22 11:14
19F:→ moodoa3583: 了,因為每天都只要*0.5,但你這樣寫是第一天留1/2, 03/22 11:14
20F:→ moodoa3583: 第二天把剩下的再留1/4以此類推 03/22 11:14
21F:→ coeric: 第一天:* 1/2 03/22 13:14
22F:→ coeric: 第二天:* 1/4 03/22 13:15
23F:→ coeric: 第三天:* 1/8 03/22 13:15
24F:→ coeric: 第四天:* 1/16 03/22 13:15
25F:→ coeric: 第五天:* 1/32 03/22 13:15
26F:→ coeric: 前面四天你就已經累計了10個1/2了....1024 03/22 13:16