python - 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。
解决方案
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
,它的值永远不会改变,永远循环。
推荐阅读
- reactjs - Jest 无法找到 .d.ts 扩展名并创建 React 应用程序以防止覆盖“moduleFileExtensions”
- scala - 带有 PEM 文件的 Kafka Producer 的 TLS 设置
- laravel - Laravel fortify 注册后未设置 status=verification-link-sent
- ios - 决定如何在 UITableView 中显示事件日历的 DATA
- javascript - 为什么我收到错误:错误 [ERR_STREAM_WRITE_AFTER_END]:从 AWS S3 下载多个图像时在结束后写入?
- android - 如何在 Paging3 中使用自定义 PagingSource 和 RemoteMediator 加载数据?
- ios - AWS Cognito 组通过 Amplify (swift)
- android-studio - 如何将 GetIntent 数据从 Activity 传递到 ViewModel
- alpine - 如何在不更改启动时安装的软件包列表的情况下安装软件包?
- sapb1 - SAP B1 的 CCC:同步插件时,错误:解析 ard 文件失败