Python Exit循环并从头开始再次启动整个过程

时间:2013-12-05 10:00:03

标签: python

我是Python Scripting的新手。我在python中编写了一个代码。到现在为止它工作得很好。我需要知道的是如何多次运行它,如果条件失败,我想从启动开始整个脚本。示例代码如下。这个脚本保存在名为adhocTest.py的文件中,所以我在python shell中运行如下脚本

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

函数main()正常运行,直到从用户输入接收的时间txt1 == 2。现在当txt1的输入变为2以外时它会退出脚本,因为我已经给出了sys.exit()我需要知道的是如果tx1的输入是tc1的输入,我怎么能再次启动脚本adhocTest.py而不退出不等于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()

2 个答案:

答案 0 :(得分:0)

我认为这就是你想要的:

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())

答案 1 :(得分:0)

您只是在main中重新致电else。您可以重新考虑如下因素:

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)

后者避免了递归问题。