【发布时间】:2020-11-22 03:06:33
【问题描述】:
基本上,我有一个分配,一切都很顺利,但是当我将某个值输入到循环中时,它永远不会停止,这与我输入的其他值不同,这很奇怪,我不知道如何处理它。 代码如下:
dim = int(input())
pos = int(input())
v = int(input())
vi = v
a = int(input())
posa = dim +1
print(pos)
while v != 0 or v*vi>0:
if -dim < pos < dim or pos == dim or pos == -dim:
pos += v
elif pos > dim:
pos = dim
v -= a
v = -v
elif pos < -dim:
pos = -dim
v += a
v = -v
if -dim <= pos <= dim and not posa==pos:
print(pos)
posa = pos
在某些情况下,它是一个程序,旨在给出碰碰车的位置,dim 和 -dim 是汽车可以撞到然后反弹的墙壁,pos 是起始位置,v 是初始速度和 a 是一旦撞到墙上,该值的绝对值会降低多少。一旦没有更多的速度,它应该最终停止。 问题是如果输入是10,-3,6,2;它工作得很好,但如果它的输入是 10,-3,8,3;循环永远不会结束,我不知道为什么。
编辑:我不能使用 for、def、import、break、continue 和 lists 和类似的东西,基本上只是最基本的东西,比如 if 和 while。
【问题讨论】:
-
您是否尝试过使用调试器?您是否尝试在循环开始时检查每个变量的值是多少?您是否尝试过手动跟踪逻辑?
-
代码中的什么确保 v 永远等于 0?例如,如果 v==1 和 a==2,您可能会在 -1 和 1 之间来回调整 v,但永远不会达到零。
标签: python python-3.x