繁体   English   中英

Python Exit循环并从头开始重新启动整个过程

[英]Python Exit The loop and start the whole process from start once again

我是Python脚本新手。 我已经用python编写了代码。 到现在为止一切正常。 我需要知道的是如何多次运行它,如果条件失败,我想从头开始启动整个脚本。 示例代码如下。 该脚本保存在名为adhocTest.py的文件中,因此我在python shell中像下面那样运行脚本

而1 == 1时:execfile('adhocTest.py')

函数main()正常运行,直到从用户输入接收到的时间txt1 == 2为止。 现在,当txt1的输入更改为2之外时,它退出了脚本,因为我已经给sys.exit()了,我想知道如何才能再次启动脚本adhocTest.py而不退出,如果tx1的输入是不等于2。我试图找到答案,但不知何故我没有得到想要的答案。

  import time
  import sys
  import os

  txt = input("please enter value \n")

  def main():
      txt1 = input("Please enter value only 2 \n")
      if txt1 == 2:
          print txt
          print txt1
          time.sleep(3)
      else:
          sys.exit()  

  if __name__ == '__main__':
      while 1 == 1:
          main()

我认为这是您想要的:

import time
import sys
import os

def main():
    while True:
        txt = input("please enter value \n")
        txt1 = input("Please enter value only 2 \n")
        if txt1 == 2:
            print txt
            print txt1
            time.sleep(3) 

if __name__ == '__main__':
    sys.exit(main())

您只是在else调用main 您可以如下重构:

def main():
    txt1 = input("Please enter value only 2 \n")
    if txt1 == 2:
        print txt
        print txt1
        time.sleep(3)
    main()   

另外,只需调用main() (而不是将其包装在while循环中)并将其移入内部即可。 我还将显式传递txt而不是依靠作用域:

def main(txt):
    while True:
        txt1 = input("Please enter value only 2 \n")
        if txt1 == 2:
            print txt
            print txt1
            time.sleep(3)

后者避免了递归问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM