首页 > 解决方案 > while 循环永远不会结束,我不知道如何停止它

问题描述

基本上,我有一个任务,一切都很顺利,但是当我将某个值输入到循环中时,它永远不会停止,这与我输入的其他值不同,这很奇怪,我不知道如何处理它。这是代码:

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。

标签: pythonpython-3.x

解决方案


    if -dim < pos < dim or pos == dim or pos == -dim:
        pos += v
    if -dim <= pos <= dim and not posa==pos:
        print(pos)
        posa = pos

这些块没有操作 for v,它的值永远不会改变,永远循环。


推荐阅读