作者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/cn.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