如何根据用户输入重新启动程序?

2025-02-18 09:24:00
admin
原创
29
摘要:问题描述:我正在尝试根据用户输入使用 if 测试重新启动程序。该代码不起作用,但它大致就是我想要的:answer = raw_input('Run again? (y/n): ') if answer == 'n': print 'Goodbye' break elif answer == 'y...

问题描述:

我正在尝试根据用户输入使用 if 测试重新启动程序。

该代码不起作用,但它大致就是我想要的:

answer = raw_input('Run again? (y/n): ')

if answer == 'n':
   print 'Goodbye'
   break
elif answer == 'y':
   #restart_program???
else:
   print 'Invalid input.'

我想要做的是:

  • 如果你回答 y - 程序将从顶部重新启动

  • 如果你回答 n - 程序结束(该部分有效)

  • 如果您输入其他任何内容,它应该打印“无效输入。请输入 y 或 n...”或其他内容,并再次要求您输入新的内容。

我非常接近使用“while true”循环的解决方案,但程序要么重新启动,无论您按什么键(n 除外),要么退出,无论您按什么键(y 除外)。有什么想法吗?


解决方案 1:

此行将无条件地从头重新启动正在运行的程序:

os.execl(sys.executable, sys.executable, *sys.argv)

与迄今为止的其他建议相比,它的一个优点是程序本身将被再次读取。

例如,如果您在另一个窗口中修改其代码,这将很有用。

解决方案 2:

使用 while 循环:

while True:  # Re-run program
    # main program
    ...

    while True:  # Validate user input
        answer = input('Run again? (y/n): ')
        if answer in ('y', 'n'):
            break
        print("invalid input.")

    if answer == 'y':
        continue
    else:
        print("Goodbye")
        break

内部 while 循环一直循环,直到输入为'y''n'

如果输入是'y',则外部 while 循环再次开始(continue关键字跳过剩余代码并直接进入下一次迭代)。如果输入是'n',则外部 while 循环中断并且程序结束。

注意:我input()在 Python 3 中使用。在 Python 2 中,使用raw_input()

解决方案 3:

使用一个 while 循环:

In [1]: start = 1
   ...: 
   ...: while True:
   ...:     if start != 1:        
   ...:         do_run = raw_input('Restart?  y/n:')
   ...:         if do_run == 'y':
   ...:             pass
   ...:         elif do_run == 'n':
   ...:             break
   ...:         else: 
   ...:             print 'Invalid input'
   ...:             continue
   ...: 
   ...:     print 'Doing stuff!!!'
   ...: 
   ...:     if start == 1:
   ...:         start = 0
   ...:         
Doing stuff!!!

Restart?  y/n:y
Doing stuff!!!

Restart?  y/n:f
Invalid input

Restart?  y/n:n

In [2]:

解决方案 4:

你可以用一个函数简单地做到这一点。例如:

def script():
    # program code here...
    restart = raw_input("Would you like to restart this program?")
    if restart == "yes" or restart == "y":
        script()
    if restart == "n" or restart == "no":
        print "Script terminating. Goodbye."
script()

当然,您可以在这里更改很多内容。所说的内容、脚本将接受的有效输入、变量和函数名称。您可以简单地将整个程序嵌套在用户定义的函数中(当然,您必须为里面的所有内容添加额外的缩进),并让它随时使用以下代码行重新启动:myfunctionname()。有关更多信息,请点击此处。

解决方案 5:

这很容易做到

while True:

       #do something

       again = input("Run again? ")

       if 'yes' in again:
              continue
       else:
              print("Good Bye")
              break

基本上,在此 while 循环中,程序会一次又一次地运行,因为 while 循环在条件成立时运行,True因此我们已将条件设为真,并且如您所知,条件True始终为真,永远不会为假。因此,不会停止,然后主要部分首先出现在这里,我们将从用户那里获取输入,无论他们是否要继续该程序,然后我们会说,如果用户说是,我想继续,那么关键字continue将再次将循环带到顶部并再次运行程序,如果用户说了其他话,或者您可以用另一种方式执行此操作,如果您只想在用户说不时退出程序,那么只需添加此

elif 'no' in again:
       print("Good Bye")
       break
else:
       print("Invalid Input")

这将检查输入中是否存在“否”字,如果存在,则将中断循环并且程序将退出

解决方案 6:

这是一个使用装饰器实现的有趣方法:

def restartable(func):
    def wrapper(*args,**kwargs):
        answer = 'y'
        while answer == 'y':
            func(*args,**kwargs)
            while True:
                answer = raw_input('Restart?  y/n:')
                if answer in ('y','n'):
                    break
                else:
                    print "invalid answer"
    return wrapper

@restartable
def main():
    print "foo"

main()

最后,我认为你需要 2 个 while 循环。你需要一个循环将提示答案的部分括起来,这样如果用户输入错误,你可以再次提示。你需要第二个循环来检查当前答案是否为 ,'y'并继续运行代码,直到答案不是'y'

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1324  
  IPD研发管理体系作为一种先进的研发管理理念和方法,对于打造优质产品体验起着至关重要的作用。它涵盖了从产品规划、研发、上市到生命周期管理的全流程,通过整合资源、优化流程、加强团队协作等方式,确保产品能够精准满足用户需求,提升用户满意度和忠诚度。IPD研发管理体系的核心原则IPD研发管理体系以市场驱动为核心原则。这意味着...
IPD集成产品开发   8  
  IPD(Integrated Product Development)产品开发流程作为一种先进的产品开发管理模式,在众多企业中得到广泛应用。它强调跨部门团队协作、并行工程以及基于市场的产品开发理念,旨在提高产品开发效率、缩短产品上市时间、提升产品质量。而成本控制在产品开发过程中至关重要,关乎企业的利润空间和市场竞争力。...
华为IPD流程   6  
  IPD(Integrated Product Development)产品开发流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。它从多个维度对产品开发过程进行优化和整合,为企业创新提供了强大的支撑。通过实施IPD产品开发流程,企业能够更加高效地将创意转化为具有市场竞争力的产品,从而在激烈的市场竞争中占据优...
华为IPD流程管理   10  
  华为作为全球知名的科技企业,其产品质量在市场上有口皆碑。华为IPD产品开发流程在确保产品质量方面发挥了至关重要的作用。IPD(Integrated Product Development)即集成产品开发,是一套先进的、成熟的产品开发管理思想、模式和方法。它打破了传统产品开发中各部门之间的壁垒,强调跨部门团队协作,从产品...
IPD集成产品开发流程   9  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用