【问题标题】:Python, Restarting the entire code so that moving objects and everything (not just the loop but the whole code)Python,重新启动整个代码,以便移动对象和所有内容(不仅仅是循环,而是整个代码)
【发布时间】:2013-03-07 06:20:11
【问题描述】:

我正在为我的科学展览项目构建一个 N 体问题的计算机模拟。我希望模拟/代码在完成后播放,以便路过的其他人可以不断查看它。我正在使用VPython,它可以很好地进行模拟,但我无法找到一种方法让所有对象在重新启动整个代码时回到初始位置。我的循环正在使用:

finished = False
while not finished:
    rate(100)

然后当某些事情发生时,我使用 if 语句来进行下一部分的模拟,例如:更多的星星

if time >= 4.5:  #Millions of Years
   F = G*(m1*m2)*r/r**3

有没有人知道如何让整个代码重复它自己?我能想到的最好的方法是将所有对象放入循环中,然后使用 continue,但我不完全知道如何使用 continue 和 break。

【问题讨论】:

    标签: python python-2.7 vpython


    【解决方案1】:

    你的问题对我来说并不完全清楚,但如果你问的是 breakcontinue 是如何工作的,这可能有助于澄清一点:

    while True:
        # do_some_stuff
        if calculation_finished:
            break     # exit from the innermost loop
        elif iteration_finished:
            continue  # abort the current iteration and go to the start of the loop
        else:
            # do_some_more_stuff
    # This is where we land after the break statement.
    # If there's nothing here, the program will exit.
    

    【讨论】:

      【解决方案2】:

      如果你真的需要,你可以使用os.exec* 方法之一从头开始重新执行你的程序,但是你想要做的最好通过重构你的代码来完成,这样你就可以将所有参数重置为一些最初指定的常量。如果不看更多代码,很难确切地说出如何重构它。

      【讨论】:

      • 感谢您的帮助,我终于完成了我的 N-Body 代码,我所做的是使用 if 和 else 语句实现方法,这样虽然我选择的星星的位置更少比在我希望它重置之前它不会到达的特定位置,而不是作为 else 语句,所有星​​星 pos 都被放回原始 pos 的意思,即重新输入 if 语句并再次重复。
      【解决方案3】:

      您的问题不清楚。不过,我相信您的问题是 N >= 3 时 N 体问题的轨迹是混乱的。您想重复相同的轨迹或反转时间并再次倒退。如果这是您的问题,那么除了模拟轨迹 once 之外别无他法(使用您的任何方法)。在模拟时,您显示并记录它。在这个模拟运行之后,你可以对你记录的轨迹做任何你想做的事情(再次播放,向后播放,...)

      【讨论】:

      • 这是我最终做的,但现在我正在构建自己的软件,将数据记录到文件中,然后在程序中打开文件,这意味着它可以来回切换取决于它读取的行。仍在构建它,但它正在到达那里
      【解决方案4】:

      前:

      restPos = (x,y,z)
      
      while True:
          if Star1.pos = resetPos:
              #reset star positions, EX below
              star1.pos = (0,0,0)
          else:
              F = G*m1*m2*r/r**3
              Star1.pos += F*dt #or however i did this, haven't used the code in a bit
      

      【讨论】:

      • 感谢这是我最终重置它的方法,我将继续使用这种方法,但我发现录制视频也可以让生活更轻松
      猜你喜欢
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 2014-04-05
      相关资源
      最近更新 更多