我目前正在尝试创建一个代码,用于计算飞船在一定距离内行进所需的时间,每分钟它将跳过剩余距离的一半。如果距离不到1米,则只需要一分钟。
def space_time(d,t=0):
if d <= 1:
print("- It takes 1 minute to travel", d, "meters")
elif d > 1:
t = t + 1
return space_time(d / 2, t)
else:
t = t + 1
print("- ", t, "minutes to travel", d, "meters")
(space_time(10))
输出:
- It takes 1 minute to travel 0.625 meters
Process finished with exit code 0
我可以看到我的问题是t = t + 1.我的想法就是每次重复这个函数时它会加1来表示1分钟。但目前它不起作用。任何帮助将不胜感激。
答案 0 :(得分:1)
一个问题是,&#34; elif d&lt; = 1:&#34;要调用的语句,因为条件与&#34; if&#34;完全相同。上面的条件,这意味着永远不会运行此代码。你可能应该更改&#34; elif&#34;到&#34;如果&#34;如果你想让它们都被执行,或者甚至更好,将它们合并在一起
if d <= 1:
print("- It takes 1 minute to travel" , d, "meters")
elif d <= 1:
t = t + 1
return space_time(d/2)
答案 1 :(得分:1)
这里有几个问题。一个人,你的&#39; elif&#39;声明正在检查与if相同的条件!我认为你想要超过&#39;。
其次,你总是在开头将t设置为0,而不是通过递归循环传递回来。原来的d也没有传回来。
最后,我不确定else语句应该捕获什么。
编辑:如果0&lt; d&lt; 1,然后需要一分钟。最后的其他人现在抓住了这个。
def space_time(d_0,d=None,t=0):
if d is None:
d = d_0
if d <= 0:
print("- It takes", t, "minutes to travel" , d_0, "meters")
elif d > 1:
t = t + 1
return space_time(d_0,d/2,t)
else:
print("- It takes", t + 1, "minutes to travel" , d_0, "meters")
(space_time(10))
输出:
- It takes 5 minutes to travel 10 meters