【问题标题】:Why is this bounce counter not updating and creating an infinite loop?为什么这个反弹计数器没有更新并创建一个无限循环?
【发布时间】:2020-10-28 14:05:50
【问题描述】:

弹跳计数器未更新,因此弹跳高度未更新。这会导致无限循环

def bounce_counter (drop_height, minimum_height, energy_loss):
    bounce = 0
    bounce_height = drop_height*(energy_loss**bounce)
    number_of_bounces = bounce - 1
    while bounce_height > minimum_height:
        bounce = bounce + 1

我的输入都是浮点数,如果我将初始下降高度设置为小于最小高度,则 else 语句会立即中断循环。

【问题讨论】:

  • 用你自己的话来说,应该是什么导致bounce_height > minimum_height 不再是真实的?
  • 变量不会自动更新它们的值(这就是函数的用途。)您需要将 bounce_height 计算放入循环中。

标签: python while-loop infinite-loop


【解决方案1】:

您需要在循环外声明bounce_height 变量,然后在循环内更新它。这是一个示例(不确定这是否是您想要的确切结果):

def bounce_counter (drop_height, minimum_height, energy_loss):
    bounce = 0
    bounce_height = drop_height
    # number_of_bounces = bounce - 1
    while bounce_height > minimum_height:
        print("bounce " + str(bounce_height))
        bounce_height = drop_height*(energy_loss**bounce)
        bounce = bounce + 1

if __name__ == "__main__":
  bounce_counter(2, 0.1, 0.5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多